MOON
Server: Apache
System: Linux server1.studioinfinity.com.br 2.6.32-954.3.5.lve1.4.90.el6.x86_64 #1 SMP Tue Feb 21 12:26:30 UTC 2023 x86_64
User: artinside (517)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/netdata/usr/share/netdata/web/v3/5219.095f5afefdeefd4b20cc.chunk.js
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"d147606963bc0c498afbaa54c78aa7ffe6a22839"};var t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="9b807037-7541-45ae-b0c4-bfd1e6e91a8b",e._sentryDebugIdIdentifier="sentry-dbid-9b807037-7541-45ae-b0c4-bfd1e6e91a8b")}catch(e){}}(),(globalThis.webpackChunkcloud_frontend=globalThis.webpackChunkcloud_frontend||[]).push([[5219],{25038(e,t,r){r.d(t,{A:()=>ye});r(74423),r(98992),r(23215),r(54520),r(72577),r(3949),r(81454),r(71517),r(11379),r(93777),r(14190),r(12359),r(86097),r(17273),r(27415),r(19929),r(37583),r(55122),r(20230),r(57268),r(79733),r(25509),r(65223),r(60321),r(41927),r(11632),r(64377),r(66771),r(12516),r(68931),r(52514),r(35694),r(52774),r(49536),r(21926),r(94483),r(16215);var o=r(96540),n=r(38429),a=r(882),s=r(43905),i=r(85660),l=r(49440),c=r(32981),d=r(15036);const u=(e,t)=>e&&"transparent"!==e?e.startsWith("#")?e:(0,n.getColor)(e)({theme:t}):e,h={primary:{color:"primary",border:"bright",label:1,linkWidth:1.5,linkOpacity:.95},secondary:{color:"generic",border:"generic",label:.95,linkWidth:1,linkOpacity:.92},accent:{color:"accent",border:"bright",label:1,linkWidth:2,linkOpacity:.98},self:{color:"textDescription",nodeColor:"elementBackground",border:"text",label:1,linkWidth:1,linkOpacity:.82},neutral:{color:"textDescription",border:"borderSecondary",label:.9,linkWidth:1,linkOpacity:.8},muted:{color:"stale",border:"transparent",label:.72,linkWidth:1,linkOpacity:.62},dim:{color:"offline",border:"transparent",label:.72,linkWidth:1,linkOpacity:.7},derived:{color:"unseen",border:"unseen",label:.9,linkWidth:1,linkOpacity:.92},info:{color:"strokeMain",border:"strokeMain",label:.92,linkWidth:1,linkOpacity:.92},structural:{color:"textDescription",border:"text",label:.95,linkWidth:1,linkOpacity:.8},warning:{color:"warning",border:"bright",label:1,linkWidth:1,linkOpacity:.95}},p={color:"textDescription",border:"borderSecondary",label:.82,linkWidth:1,linkOpacity:.82},g=(e,t)=>{if(!e)return{fill:u(p.color,t),sizeFactor:1,borderColor:u(p.border,t),borderWidth:1,labelOpacity:p.label};const r=((e,t,r)=>{const o=h[e]||p;return{fill:u(o.nodeColor||o.color,r),border:u(o.border,r),labelOpacity:t>0?t:o.label}})(e.color_slot,e.opacity,t);return{fill:r.fill,sizeFactor:1,borderColor:e.border?r.border:"transparent",borderWidth:e.border?1:0,labelOpacity:r.labelOpacity,sizeByLinks:!!e.size_by_links,showPortBullets:!!e.show_port_bullets}},f=(e,t)=>{if(!e)return{color:u(p.color,t),widthFactor:1,opacity:p.linkOpacity};const r=((e,t,r,o)=>{const n=h[e]||p;return{color:u(n.color,o),width:r>0?r:n.linkWidth,opacity:t>0?t:n.linkOpacity}})(e.color_slot,e.opacity,e.width,t);return{color:r.color,widthFactor:r.width,opacity:r.opacity,dashArray:e.dash?"4 4":void 0}},m=(e,t)=>u((h[e]||p).color,t),x=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return e.replace(/S/g,`stroke="#fff" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="${t}"`)},y={router:x('<g S><line x1="12" y1="1" x2="12" y2="9"/><polyline points="9,6 12,9 15,6"/><line x1="12" y1="23" x2="12" y2="15"/><polyline points="9,18 12,15 15,18"/><line x1="1" y1="12" x2="9" y2="12"/><polyline points="6,9 9,12 6,15"/><line x1="23" y1="12" x2="15" y2="12"/><polyline points="18,9 15,12 18,15"/></g>'),switch:x('<g S><line x1="2" y1="9" x2="22" y2="9"/><polyline points="6,6 2,9 6,12"/><line x1="22" y1="15" x2="2" y2="15"/><polyline points="18,12 22,15 18,18"/></g>'),firewall:x('<g S><path d="M12 2L4 6v6c0 5.5 3.4 8.7 8 10 4.6-1.3 8-4.5 8-10V6z"/><line x1="8" y1="11" x2="16" y2="11"/><line x1="12" y1="7" x2="12" y2="15"/></g>'),access_point:x('<g S><line x1="12" y1="14" x2="12" y2="22"/><circle cx="12" cy="14" r="1.5" fill="#fff"/><path d="M8.5 10.5a5 5 0 0 1 7 0"/><path d="M5.5 7.5a9 9 0 0 1 13 0"/></g>'),server:x('<g S><rect x="4" y="2" width="16" height="7" rx="1.5"/><rect x="4" y="11" width="16" height="7" rx="1.5"/><circle cx="8" cy="5.5" r="1" fill="#fff"/><circle cx="8" cy="14.5" r="1" fill="#fff"/><line x1="12" y1="5.5" x2="17" y2="5.5"/><line x1="12" y1="14.5" x2="17" y2="14.5"/></g>',1.5),storage:x('<g S><ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.7 3.6 3 8 3s8-1.3 8-3V5"/><path d="M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3"/></g>',1.5),load_balancer:x('<g S><line x1="3" y1="12" x2="10" y2="12"/><line x1="10" y1="12" x2="20" y2="5"/><line x1="10" y1="12" x2="20" y2="12"/><line x1="10" y1="12" x2="20" y2="19"/><polyline points="17,3 20,5 17,7"/><polyline points="17,10 20,12 17,14"/><polyline points="17,17 20,19 17,21"/></g>'),printer:x('<g S><path d="M6 9V2h12v7"/><rect x="6" y="15" width="12" height="6" rx="1"/><path d="M6 15H4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-2"/></g>',1.5),phone:x('<g S><rect x="7" y="2" width="10" height="20" rx="2.5"/><line x1="10" y1="18" x2="14" y2="18"/></g>'),ups:x('<g S><rect x="6" y="4" width="12" height="18" rx="2"/><line x1="10" y1="2" x2="10" y2="4"/><line x1="14" y1="2" x2="14" y2="4"/><polyline points="13,10 11,13 14,13 12,16"/></g>',1.5),camera:x('<g S><path d="M2 8h3l2-3h10l2 3h3v11a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V8z"/><circle cx="12" cy="14" r="3.5"/></g>',1.5),process:x('<g S><circle cx="12" cy="12" r="3"/><line x1="12" y1="1" x2="12" y2="5"/><line x1="12" y1="19" x2="12" y2="23"/><line x1="4.2" y1="4.2" x2="7" y2="7"/><line x1="17" y1="17" x2="19.8" y2="19.8"/><line x1="1" y1="12" x2="5" y2="12"/><line x1="19" y1="12" x2="23" y2="12"/><line x1="4.2" y1="19.8" x2="7" y2="17"/><line x1="17" y1="7" x2="19.8" y2="4.2"/></g>',1.5),agent:x('<g S><rect x="3" y="3" width="18" height="13" rx="2"/><polyline points="7,12 10,7 13,13 16,9"/><line x1="8" y1="20" x2="16" y2="20"/><line x1="12" y1="16" x2="12" y2="20"/></g>'),"netdata-agent":x('<g S><rect x="3" y="3" width="18" height="13" rx="2"/><polyline points="7,12 10,7 13,13 16,9"/><line x1="8" y1="20" x2="16" y2="20"/><line x1="12" y1="16" x2="12" y2="20"/></g>'),parent:x('<g S><rect x="4" y="6" width="16" height="14" rx="1.5"/><line x1="12" y1="6" x2="12" y2="2"/><polyline points="9,4 12,1 15,4"/><circle cx="8" cy="10" r="1" fill="#fff"/><line x1="12" y1="10" x2="17" y2="10"/><circle cx="8" cy="16" r="1" fill="#fff"/><line x1="12" y1="16" x2="17" y2="16"/></g>',1.5),"remote-endpoint":x('<g S><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2c-3 3-3 17 0 20"/><path d="M12 2c3 3 3 17 0 20"/></g>',1.5),"local-endpoint":x('<g S><circle cx="12" cy="10" r="8"/><circle cx="12" cy="10" r="1.5" fill="#fff"/><path d="M12 18v4"/><line x1="8" y1="22" x2="16" y2="22"/></g>',1.5),segment:x('<g S><path d="M6 20a4 4 0 0 1-.8-7.9 7 7 0 0 1 13.3-2.6A4.5 4.5 0 0 1 19 18H6z"/></g>'),self:x('<g S><rect x="2" y="3" width="20" height="13" rx="2"/><line x1="2" y1="20" x2="22" y2="20"/><line x1="7" y1="16" x2="7" y2="20"/><line x1="17" y1="16" x2="17" y2="20"/></g>'),ip:x('<g S><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2c-3 3-3 17 0 20"/><path d="M12 2c3 3 3 17 0 20"/></g>',1.5),cloud:x('<g S><path d="M6 20a4 4 0 0 1-.8-7.9 7 7 0 0 1 13.3-2.6A4.5 4.5 0 0 1 19 18H6z"/><polyline points="12,13 12,7"/><polyline points="9,10 12,7 15,10"/></g>'),container:x('<g S><rect x="3" y="4" width="18" height="16" rx="2"/><line x1="3" y1="10" x2="21" y2="10"/><line x1="9" y1="4" x2="9" y2="10"/><line x1="15" y1="4" x2="15" y2="10"/></g>',1.5),vm:x('<g S><rect x="3" y="3" width="18" height="13" rx="2" stroke-dasharray="3 2"/><line x1="8" y1="20" x2="16" y2="20"/><line x1="12" y1="16" x2="12" y2="20"/></g>'),database:x('<g S><ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.7 3.6 3 8 3s8-1.3 8-3V5"/><path d="M4 10c0 1.7 3.6 3 8 3s8-1.3 8-3"/><path d="M4 15c0 1.7 3.6 3 8 3s8-1.3 8-3"/></g>',1.5),service:x('<g S><circle cx="12" cy="6" r="3"/><circle cx="5" cy="18" r="3"/><circle cx="19" cy="18" r="3"/><line x1="12" y1="9" x2="5" y2="15"/><line x1="12" y1="9" x2="19" y2="15"/><line x1="5" y1="18" x2="19" y2="18"/></g>',1.5)},b=e=>y[e]||null;r(8872);let v=null;const w=async(e,t,o)=>{const n=performance.now();try{const a=await(v||(v=r.e(7080).then(r.bind(r,74699)).then(async e=>(await e.default(),e)).catch(e=>(console.warn("WASM module load failed:",e),v=null,null))),v);if(!a)return{positions:null,wasmMs:0,initMs:performance.now()-n,totalMs:performance.now()-n};const s=performance.now(),i={},l=[],c=[];e.forEach((e,t)=>{i[e.id]=t,l.push(e.x??o[0]+200*(Math.random()-.5),e.y??o[1]+200*(Math.random()-.5)),c.push(1)});const d=[],u=[];t.forEach(e=>{const t="object"===typeof e.source?e.source.id:e.source,r="object"===typeof e.target?e.target.id:e.target,o=i[t],n=i[r];void 0!==o&&void 0!==n&&(d.push([n,o]),u.push(e.weight||1),c[o]+=e.weight||1,c[n]+=e.weight||1)});const h=performance.now(),p=a.force({name:0,dimensions:2,chunk_size:256,nodes:l,edges:d,masses:c,weights:u,iterations:100,min_movement:.5,distance_threshold_mode:0,center:o,ka:1,kg:5,kr:10,speed:.1,prevent_overlapping:!1,node_radius:10,kr_prime:10,strong_gravity:!1,lin_log:!1,dissuade_hubs:!1,edge_strength:0,link_distance:0,node_strength:0,coulomb_dis_scale:0,factor:0,interval:0,damping:0,max_speed:0,max_distance:100}),g=performance.now(),f=new Map;return e.forEach((e,t)=>{f.set(e.id,{x:p[2*t],y:p[2*t+1]})}),{positions:f,wasmMs:g-h,initMs:s-n,totalMs:g-n}}catch(a){return console.warn("WASM ForceAtlas2 failed, falling back to D3:",a),v=null,{positions:null,wasmMs:0,initMs:performance.now()-n,totalMs:performance.now()-n}}},k=(e,t,r)=>Math.min(r,Math.max(t,e)),_=function(e,t,r){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(!e.length||!t||!r)return s.zoomIdentity;let n=1/0,a=-1/0,i=1/0,l=-1/0;e.forEach(e=>{const t=e.x||0,r=e.y||0;t<n&&(n=t),t>a&&(a=t),r<i&&(i=r),r>l&&(l=r)});const c=(t-120)*o/(a-n||1),d=(r-120)*o/(l-i||1),u=Math.min(c,d,2),h=(n+a)/2,p=(i+l)/2;return s.zoomIdentity.translate(t/2,r/2).scale(u).translate(-h,-p)},C=e=>{if(!Number.isFinite(e)||e<=1)return 0;const t=6.8*e/(2*Math.PI);return Math.max(8,t-9)},j=e=>e<=0||e<=8?1:e<=16?1.08:e<=24?1.18:e<=32?1.28:e<=48?1.42:e<=64?1.56:e<=96?1.8:2,M=(e,t)=>{const r=k(80+14*Math.log10((e.weight||1)+1),70,210),o=e.source?.id??e.source,n=e.target?.id??e.target;return(t?.get(o)||0)+r+(t?.get(n)||0)},S=e=>{let{graphData:t,width:r,height:n,filterKey:a,svgRef:i,positionsRef:u,hasInitialLayoutRef:h,prevFilterKeyRef:p,pendingFilterResetRef:g,zoomBehaviorRef:f,forcesOnRef:m,setZoomTransform:x}=e;const[y,b]=(0,o.useState)({nodes:[],links:[]}),[v,k]=(0,o.useState)(!1),S=(0,o.useRef)(null),I=(0,o.useRef)(new Map),L=(0,o.useRef)(""),T=(0,o.useRef)(null);return(0,o.useEffect)(()=>()=>{S.current?.stop(),S.current=null,L.current="",T.current&&(cancelAnimationFrame(T.current),T.current=null)},[]),(0,o.useEffect)(()=>{a!==p.current&&(p.current=a,g.current=!0)},[a]),(0,o.useEffect)(()=>{if(!r||!t.nodes.length)return S.current?.stop(),S.current=null,L.current="",void b({nodes:[],links:[]});g.current&&(g.current=!1,u.current.clear(),h.current=!1,L.current="");const e=`${t.nodes.map(e=>e.id).sort().join("|")}::${t.links.map(e=>`${e.source}->${e.target}`).sort().join("|")}`,o=e!==L.current;if(L.current=e,o){const e=new Set(t.nodes.map(e=>e.id));u.current.forEach((t,r)=>{e.has(r)||u.current.delete(r)})}const a=t.nodes.every(e=>u.current.has(e.id));if(!o&&a)return void b({nodes:t.nodes.map(e=>{const t=u.current.get(e.id);return{...e,x:t?.x??e.x,y:t?.y??e.y}}),links:t.links});S.current?.stop(),T.current&&(cancelAnimationFrame(T.current),T.current=null);const p=t.nodes.map(e=>({...e})),y=new Map(p.map(e=>[e.id,e])),v=p.filter(e=>u.current.has(e.id)).length,$=v>.5*p.length,E=t.links.map(e=>({...e,source:y.get(e.source),target:y.get(e.target)})).filter(e=>e.source&&e.target);I.current=y;let N=r/2,F=n/2;if($&&v>0){let e=0,t=0,r=0;p.forEach(o=>{const n=u.current.get(o.id);n&&(e+=n.x,t+=n.y,r++)}),r>0&&(N=e/r,F=t/r)}const A=new Set;E.forEach(e=>{A.add(e.source.id),A.add(e.target.id)});const P=new Map;p.forEach(e=>{P.set(e.id,(0,c.gl)(e))});const R=new Map,B=(e,t)=>{e&&(R.has(e)||R.set(e,new Set),R.get(e).add(t))};E.forEach(e=>{B(e.source.id,(0,c.EF)(P.get(e.source.id),e.sourcePort)),B(e.target.id,(0,c.EF)(P.get(e.target.id),e.targetPort))});const z=new Map;p.forEach(e=>{const t=P.get(e.id),r=!!t?.ports?.size,o=new Set;r&&t.ports.forEach((e,t)=>o.add(t)),(R.get(e.id)||new Set).forEach(e=>{r&&e===d.Lc||o.add(e)});const n=[...o].filter(e=>e!==d.Lc).length+(o.has(d.Lc)?1:0),a=n>1?n:0,s=(0,c.Yh)(e,t),i=(0,l.pV)(e)&&!e?.inferred?j(s):1,u=`${e?.actorType||e?.kind||""}`.toLowerCase(),h=`${e?.details?.labels?.actor_class||e?.details?.attributes?.actor_class||""}`.toLowerCase(),p=9*i*("self"===u||"self"===h?1.18:1),g=C(a),f=((e,t)=>{const r=Number.isFinite(e)?e:0;return t>0?r+9+3.2:r})(Math.max(p,g),a);z.set(e.id,f+2)});const D=e=>A.has(e.id)?.01:.25,O=((e,t,r,o)=>{const n=new Map;if(!e.length)return n;const a=new Map;e.forEach(e=>a.set(e.id,[])),t.forEach(e=>{const t=e.source?.id??e.source,r=e.target?.id??e.target;a.has(t)&&a.get(t).push(r),a.has(r)&&a.get(r).push(t)});const s=[...e].sort((e,t)=>{const r=a.get(e.id)?.length||0,o=a.get(t.id)?.length||0;return o!==r?o-r:e.id<t.id?-1:e.id>t.id?1:0}),i=new Set,l=(e,t,r)=>{n.set(e,{x:t,y:r}),i.add(e);let o=[e],s=1;for(;o.length;){const e=[];if(o.forEach(t=>{(a.get(t)||[]).slice().sort().forEach(t=>{i.has(t)||(i.add(t),e.push(t))})}),!e.length)break;e.sort();const l=70*e.length,c=Math.max(120*s,l/(2*Math.PI)),d=2*Math.PI/e.length;e.forEach((e,o)=>{const a=o*d-Math.PI/2;n.set(e,{x:t+c*Math.cos(a),y:r+c*Math.sin(a)})}),o=e,s++}return s};let c=l(s[0].id,r,o),d=0;for(;;){const e=s.find(e=>!i.has(e.id)&&(a.get(e.id)?.length||0)>0);if(!e)break;d++;const t=2*d*Math.PI/Math.max(d+1,4),n=120*(c+2);c=Math.max(c,l(e.id,r+n*Math.cos(t),o+n*Math.sin(t)))}const u=s.filter(e=>!i.has(e.id));if(u.length){const e=70*u.length,t=Math.max(120*(c+1),e/(2*Math.PI)),a=2*Math.PI/u.length;u.forEach((e,s)=>{const i=s*a-Math.PI/2;n.set(e.id,{x:r+t*Math.cos(i),y:o+t*Math.sin(i)})})}return n})(p,E,N,F);p.forEach(e=>{if($){const t=u.current.get(e.id);if(t)e.x=t.x,e.y=t.y;else{const t=O.get(e.id);t&&(e.x=t.x,e.y=t.y)}}else{const t=O.get(e.id);t&&(e.x=t.x,e.y=t.y)}e.vx=0,e.vy=0});const W=()=>{const e=p.map(e=>{const t=e.x||0,r=e.y||0;return u.current.set(e.id,{x:t,y:r}),{...e,x:t,y:r}}),t=E.map(e=>({...e,source:e.source.id,target:e.target.id}));b({nodes:e,links:t})},V=e=>{const t=!A.has(e.id);return(0,l.Po)(e)?-90:(0,l._B)(e)?t?-150:-440:(0,l._N)(e)?t?-350:-1100:(0,l.Lf)(e)?t?-280:-860:(0,l.FL)(e)?t?-90:-260:t?-170:-520};let G=!1;return(async()=>{k(!0);const e=await w(p,E,[N,F]);if(G)return void k(!1);let t;if(e.positions){p.forEach(t=>{if(!A.has(t.id))return;if($&&u.current.has(t.id))return;const r=e.positions.get(t.id);r&&(t.x=r.x,t.y=r.y,t.vx=0,t.vy=0)});const r=(()=>{const e=s.forceSimulation(p).randomSource(s.randomLcg(42)).alpha(.8).alphaDecay(0).velocityDecay(.3).force("link",s.forceLink(E).id(e=>e.id).distance(e=>M(e,z)).strength(.55)).force("charge",s.forceManyBody().strength(V)).force("center",s.forceCenter(N,F)).force("x",s.forceX(N).strength(D)).force("y",s.forceY(F).strength(D)).force("collide",s.forceCollide().radius(e=>z.get(e.id)||32).iterations(2));e.stop(),p.forEach(e=>{A.has(e.id)?$&&u.current.has(e.id)&&(e.fx=e.x,e.fy=e.y):(e.fx=e.x,e.fy=e.y)});let t=0;for(let r=0;r<200&&(e.tick(),t++,!(p.reduce((e,t)=>Math.max(e,Math.abs(t.vx||0),Math.abs(t.vy||0)),0)<.5));r++);return{simulation:e,ticks:t}})();t=r.simulation}else t=(()=>{const e=s.forceSimulation(p).randomSource(s.randomLcg(42)).alpha($?.3:1).alphaDecay(0).velocityDecay(.3).force("link",s.forceLink(E).id(e=>e.id).distance(e=>M(e,z)).strength(.55)).force("charge",s.forceManyBody().strength(V)).force("center",s.forceCenter(N,F)).force("x",s.forceX(N).strength(D)).force("y",s.forceY(F).strength(D)).force("collide",s.forceCollide().radius(e=>z.get(e.id)||32).iterations(2));e.stop(),p.forEach(e=>{A.has(e.id)?$&&u.current.has(e.id)&&(e.fx=e.x,e.fy=e.y):(e.fx=e.x,e.fy=e.y)});for(let t=0;t<600&&(e.tick(),!(p.reduce((e,t)=>Math.max(e,Math.abs(t.vx||0),Math.abs(t.vy||0)),0)<.5));t++);return e})();if(G)return t.stop(),void k(!1);let o=0,a=0;p.forEach(e=>{o+=e.x||0,a+=e.y||0}),o/=p.length||1,a/=p.length||1,t.force("center",s.forceCenter(o,a)),t.force("x",s.forceX(o).strength(.002)),t.force("y",s.forceY(a).strength(.002)),p.forEach(e=>{e.vx=0,e.vy=0}),t.alpha(.1),t.alphaDecay(0);for(let r=0;r<100;r++){t.tick();if(p.reduce((e,t)=>Math.max(e,Math.abs(t.vx||0),Math.abs(t.vy||0)),0)<.3)break}if(p.forEach(e=>{e.fx=null,e.fy=null,e.vx=0,e.vy=0}),t.alphaDecay(.0228),t.alpha(0),p.forEach(e=>{u.current.set(e.id,{x:e.x||0,y:e.y||0})}),W(),!h.current){const e=_(p,r,n);x(e),f.current&&i.current&&s.select(i.current).call(f.current.transform,e),h.current=!0}t.on("tick",()=>{T.current||(T.current=requestAnimationFrame(()=>{T.current=null,W()}))}),t.on("end",W),S.current=t,m.current&&t.alphaTarget(.01).restart(),k(!1)})(),()=>{G=!0}},[t,r,n]),{layout:y,setLayout:b,layoutComputing:v,simulationRef:S,nodesByIdRef:I,graphStructureKeyRef:L,frameRef:T}};r(33110),r(37550);var I=r(40961),L=r(93331),T=r(22007),$=r(44862),E=r(74848);const N=(0,a.default)(n.Text).withConfig({displayName:"graphTooltip__TooltipTitle",componentId:"sc-1qowm5u-0"})(["font-size:17px;line-height:1.25;font-weight:600;"]),F=(0,a.default)(n.TextSmall).withConfig({displayName:"graphTooltip__TooltipMetaLine",componentId:"sc-1qowm5u-1"})(["font-size:13px;line-height:1.28;color:",";max-width:100%;overflow-wrap:anywhere;"],(0,n.getColor)("textDescription")),A=(0,a.default)(n.Flex).withConfig({displayName:"graphTooltip__InlineRow",componentId:"sc-1qowm5u-2"})(["display:flex;align-items:flex-start;gap:6px;min-width:0;"]),P=(0,a.default)(n.TextSmall).withConfig({displayName:"graphTooltip__InlineLabel",componentId:"sc-1qowm5u-3"})(["font-size:11px;line-height:1.25;font-weight:500;color:",";min-width:68px;white-space:nowrap;flex:0 0 auto;"],(0,n.getColor)("textDescription")),R=(0,a.default)(n.Flex).withConfig({displayName:"graphTooltip__BadgeRow",componentId:"sc-1qowm5u-4"})(["display:flex;flex-wrap:wrap;gap:4px;align-items:flex-start;align-content:flex-start;flex:1 1 auto;min-width:0;max-width:100%;overflow-x:hidden;"]),B=(0,a.default)(n.Box).attrs({padding:[.3,.6],round:.35}).withConfig({displayName:"graphTooltip__Badge",componentId:"sc-1qowm5u-5"})(["border:none;font-family:",";font-size:12px;line-height:1.25;white-space:normal;overflow-wrap:anywhere;max-width:100%;background:rgba(255,255,255,0.02);"],e=>{let{theme:t}=e;return t.typography?.fontFamily||"inherit"}),z=(0,a.default)(n.TextSmall).withConfig({displayName:"graphTooltip__InlineValuesText",componentId:"sc-1qowm5u-6"})(["font-size:13px;line-height:1.28;color:",";flex:1 1 auto;min-width:0;overflow-wrap:anywhere;"],(0,n.getColor)("text")),D=e=>{if(null===e||void 0===e||""===e)return"";if(Array.isArray(e)){const t=e.map(e=>e&&"object"===typeof e?D(e):`${e??""}`.trim()).filter(Boolean);return t.length?t.join(", "):""}if("object"===typeof e){const t=Object.entries(e).filter(e=>{let[,t]=e;return null!==t&&void 0!==t&&""!==t});return t.length?t.map(e=>{let[t,r]=e;return`${t}: ${r}`}).join(", "):""}return"boolean"===typeof e?e?"yes":"no":`${e}`.trim()},O=new Set(["vendor","manufacturer","organization","vendor_source","vendorSource","vendor_confidence","vendorConfidence","protocols","learned_sources","learnedSources","protocolsCollected","protocols_collected","capabilities","capabilities_enabled","capabilities_supported","capabilitiesEnabled","capabilitiesSupported","ports_up","portsUp","ports_down","portsDown","ports_admin_down","portsAdminDown","portsTotal","ports_total","fdb_total_macs","fdbTotalMacs","vlan_count","vlanCount","lldp_neighbor_count","lldpNeighborCount","cdp_neighbor_count","cdpNeighborCount","chart_id_prefix","chartIdPrefix","netdata_host_id","netdataHostId","inferred","port_inventory","portInventory","vendorDerived","vendor_derived","vendorDerivedConfidence","vendor_derived_confidence","vendorDerivedMatchPrefix","vendor_derived_match_prefix","vendorDerivedSource","vendor_derived_source","vendorMatchPrefix","vendor_match_prefix","ifStatuses","if_statuses","ifNames","if_names","ifIndexes","if_indexes","ifAdminStatusCounts","if_admin_status_counts","ifOperStatusCounts","if_oper_status_counts","ifLinkModeCounts","if_link_mode_counts","ifTopologyRoleCounts","if_topology_role_counts","displayName","display_name","displaySource","display_source","deviceId","device_id","discovered","deviceCharts","device_charts","chartContextPrefix","chart_context_prefix","managementAddresses","management_addresses","managementIp","management_ip","sys_name","sysName","sys_descr","sysDescr","sys_location","sysLocation","sys_contact","sysContact","model"]),W=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;const r=e?.details?.attributes||{},o=[];return Object.entries(r).forEach(e=>{let[r,n]=e;if(O.has(r)||o.length>=t)return;const a=D(n);a&&o.push({key:r,value:a})}),o},V=e=>e&&"unknown"!==e?e:"",G=e=>null===e||"undefined"===typeof e?"-":Array.isArray(e)?e.join(", "):"object"===typeof e?JSON.stringify(e):`${e}`,K=e=>{let{label:t,values:r,badgeStyle:o,maxItems:n=14}=e;const a=(0,l.cn)(r||[],n);return a.length?(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:t}),(0,E.jsx)(R,{children:a.map((e,r)=>(0,E.jsx)(B,{style:o?o(e):void 0,children:e},`${t}-${r}-${e}`))})]}):null},U=(e,t,r)=>{const{nodeKinds:a,nodeProtocolsById:s,portInventoryByActor:i,tooltipPortsByActor:u,incidentLinksByNodeId:h,nodePositions:p,portDetectedTypeByKey:g,presentation:f}=t,x=e.id,y=a.get(x)||"default",b=(0,l.NI)(e),v=(0,l._u)(e),w=(0,l.xd)([...s.get(x)||new Set]),k=i.get(x),_=(0,c.Yh)(e,k),C=u.get(x)||[],j=(0,l.OR)(e),M="segment"===y?(h.get(x)||[]).map(e=>{const t=e.source===x,r=t?e.target:e.source,o=p.get(r),n=o?.label||r,a=(0,c.EF)(i.get(r),t?e.targetPort:e.sourcePort),s=V(a);return{key:`${n}|${a}|${r}`,value:s?`${n} \xb7 ${s}`:n}}).reduce((e,t)=>(!t?.key||e.some(e=>e.key===t.key)||e.push(t),e),[]).sort((e,t)=>e.value.localeCompare(t.value,void 0,{sensitivity:"base",numeric:!0})):[];return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(N,{children:e.label}),(0,E.jsxs)(F,{children:["type: ",e.actorType||"-"," (",y,") \xb7 vendor: ",j]}),K({label:"protocols",values:w}),K({label:"caps",values:v}),b.length>0&&b.filter(e=>"actor_id"!==e.key).map(e=>(0,E.jsx)(o.Fragment,{children:K({label:e.key,values:e.values})},`identity-${e.key}`)),W(e).map(e=>(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:e.key}),(0,E.jsx)(z,{children:e.value})]},`extra-${e.key}`)),M.length>0&&(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:"participants"}),(0,E.jsx)(n.Flex,{column:!0,gap:.2,flex:"1 1 auto",overflow:"hidden",children:M.map(e=>(0,E.jsx)(F,{children:e.value},`${x}-participant-${e.key}`))})]}),_>0&&K({label:`ports (${_})`,values:C.filter(e=>e!==d.Lc),maxItems:48,badgeStyle:e=>{const t=(0,c.Tm)(x,e);return((e,t,r)=>{const o=t?.port_types?.[e];if(o)return{background:m(o.color_slot,r),color:(0,n.getColor)("bright")({theme:r}),fontWeight:600};const a=(0,c.IV)(e);return{background:a.bullet,color:a.popoverColor,fontWeight:600}})(g.get(t)||"unknown",f,r)}})]})},Z=(e,t,r)=>e?"node"===e.type?U(e,t,r):"link"===e.type?((e,t)=>{const{nodePositions:r,portInventoryByActor:o}=t,n=r.get(e.source),a=r.get(e.target),s=n?.label||e.source,i=a?.label||e.target,l=V((0,c.EF)(o.get(e.source),e.sourcePort)),d=V((0,c.EF)(o.get(e.target),e.targetPort)),u=e?.details?.metrics||{},h=Number(u?.bytes||u?.bytesData||u?.bytes_data||0),p=Number(u?.packets||0),g=Number(u?.flows||u?.connections||0),f=h>0||p>0||g>0,m=/bi/i.test(e.direction),x=m?"peer1":"source",y=m?"peer2":"target";return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(N,{children:e.label||"link"}),(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:x}),(0,E.jsx)(z,{children:l?`${s} \xb7 ${l}`:s})]}),(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:y}),(0,E.jsx)(z,{children:d?`${i} \xb7 ${d}`:i})]}),(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:"protocol"}),(0,E.jsx)(z,{children:e.protocol||"-"})]}),(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:"direction"}),(0,E.jsx)(z,{children:e.direction||"-"})]}),e.state&&(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:"state"}),(0,E.jsx)(z,{children:e.state})]}),f&&(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:"metrics"}),(0,E.jsxs)(z,{children:["bytes ",G(h)," \xb7 packets ",G(p)," \xb7 flows"," ",G(g)]})]}),(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:"weight"}),(0,E.jsx)(z,{children:G(e.weight)})]})]})})(e,t):(e=>(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(N,{children:["Port: ",e.label||e.id]}),(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:"actor"}),(0,E.jsx)(z,{children:e.details?.actor||"-"})]}),e.details?.tooltipFields?.map((e,t)=>(0,E.jsxs)(A,{children:[(0,E.jsx)(P,{children:e.label}),(0,E.jsx)(z,{children:e.value})]},t))]}))(e):null,Y={right:"left",bottom:"top"},H={right:"left",top:"bottom"},q={left:"right",bottom:"top"},X={left:"right",top:"bottom"},J=e=>{let{hovered:t,svgRef:r,data:i}=e;const l=(0,a.useTheme)(),c=(0,o.useRef)(),[d,u]=(0,o.useState)(),h=(0,o.useRef)(),p=(0,o.useRef)(),g=(0,o.useRef)(null),f=(0,o.useRef)(X),[m,x]=(0,o.useState)(X);h.current=d,p.current=(0,T.default)(d,c,m,"width");const y=(0,$.default)(),b=(0,o.useCallback)(e=>{let{x:t,y:o}=e;if(g.current={x:t,y:o},!h.current)return;h.current.style.left=`${t}px`,h.current.style.top=`${o}px`;const n=r?.current;if(!c.current||!n)return void p.current?.();const a=n.getBoundingClientRect(),{width:s,height:i}=c.current.getBoundingClientRect(),l=a.left+t,d=a.top+o,u=(m=l+s>a.right,y=d+i>a.bottom,m&&y?Y:m?H:y?q:X);var m,y;if(u!==f.current)return f.current=u,x(u),void requestAnimationFrame(()=>p.current?.());p.current?.()},[]);return(0,o.useLayoutEffect)(()=>{t&&g.current&&b(g.current)},[t]),(0,o.useEffect)(()=>{const e=r?.current;if(!e)return;const t=t=>{const[r,o]=s.pointer(t,e);b({x:r,y:o})};return e.addEventListener("mousemove",t),()=>e.removeEventListener("mousemove",t)},[r]),t?(0,E.jsxs)(o.Fragment,{children:[(0,E.jsx)(n.Flex,{ref:e=>u(e),position:"absolute"}),I.createPortal((0,E.jsx)(L.default,{ref:c,column:!0,margin:[m.top?2:-2,m.right?-2:2],background:"mainBackground",padding:[1],round:.5,width:{max:"360px"},height:{max:"calc(100vh - 24px)"},overflow:{vertical:"auto"},sx:{pointerEvents:"none"},zIndex:101,"data-testid":"drop",children:Z(t,i,l)}),y)]}):null},Q=(0,a.default)(n.Box).withConfig({displayName:"graphLegend__LegendSection",componentId:"sc-as0hpi-0"})(["&:not(:last-child){margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,0.06);}"]),ee=(0,a.default)(n.TextSmall).attrs({textTransform:"uppercase"}).withConfig({displayName:"graphLegend__LegendSectionTitle",componentId:"sc-as0hpi-1"})(["font-weight:600;letter-spacing:0.5px;margin-bottom:6px;"]),te=(0,a.default)(n.Flex).attrs({gap:2}).withConfig({displayName:"graphLegend__LegendRow",componentId:"sc-as0hpi-2"})(["padding:2px 0;font-size:12px;color:",";"],(0,n.getColor)("textLite")),re=(0,a.default)(n.Box).attrs({round:"50%"}).withConfig({displayName:"graphLegend__LegendCircle",componentId:"sc-as0hpi-3"})(["display:inline-block;width:","px;height:","px;background:",";border:",";flex-shrink:0;"],e=>{let{size:t}=e;return t||10},e=>{let{size:t}=e;return t||10},e=>{let{color:t}=e;return t},e=>{let{border:t}=e;return t||"none"}),oe=(0,a.default)(n.Box).attrs({round:"1px",width:"20px"}).withConfig({displayName:"graphLegend__LegendLine",componentId:"sc-as0hpi-4"})(["display:inline-block;height:","px;background:",";flex-shrink:0;"],e=>{let{lineWidth:t}=e;return t||2},e=>{let{color:t}=e;return t}),ne=e=>{let{presentation:t}=e;const r=(0,a.useTheme)();return t?.legend?(0,E.jsxs)(E.Fragment,{children:[t.legend.actors?.length>0&&(0,E.jsxs)(Q,{children:[(0,E.jsx)(ee,{children:"Actors"}),t.legend.actors.map(e=>{const o=t.actor_types?.[e.type],a=o?g(o,r):null;return(0,E.jsxs)(te,{children:[(0,E.jsx)(re,{color:a?.fill||(0,n.getColor)("textDescription")({theme:r}),border:a?.borderColor&&"transparent"!==a.borderColor?`2px solid ${a.borderColor}`:void 0,size:12})," ",e.label]},e.type)})]}),t.legend.ports?.length>0&&(0,E.jsxs)(Q,{children:[(0,E.jsx)(ee,{children:"Ports"}),t.legend.ports.map(e=>{const o=t.port_types?.[e.type],a=o?m(o.color_slot,r):(0,n.getColor)("textDescription")({theme:r});return(0,E.jsxs)(te,{children:[(0,E.jsx)(re,{color:a,size:8})," ",e.label]},e.type)})]}),t.legend.links?.length>0&&(0,E.jsxs)(Q,{children:[(0,E.jsx)(ee,{children:"Links"}),t.legend.links.map(e=>{const o=t.link_types?.[e.type],a=o?f(o,r):null;return(0,E.jsxs)(te,{children:[(0,E.jsx)(oe,{color:a?.color||(0,n.getColor)("textDescription")({theme:r}),lineWidth:a?.widthFactor>1?3:void 0})," ",e.label]},e.type)})]})]}):null},ae=(0,a.default)(n.Flex).attrs({position:"absolute",top:2,right:2,zIndex:5,alignItems:"center",_hover:{opacity:1}}).withConfig({displayName:"graphToolbar__ToolbarOverlay",componentId:"sc-1a3n01f-0"})(["gap:3px;border-radius:6px;padding:3px;background:rgba(15,24,24,0.65);opacity:",";transition:opacity 0.18s;"],e=>{let{active:t}=e;return t?1:.45}),se=(0,a.default)(n.Box).attrs({height:"18px",width:"1px"}).withConfig({displayName:"graphToolbar__ToolbarSep",componentId:"sc-1a3n01f-1"})(["background:rgba(255,255,255,0.1);margin:0 1px;"]),ie=function(e){let{delay:t=350,interval:r=60}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=(0,o.useRef)(null),a=(0,o.useRef)(null),s=(0,o.useCallback)(()=>{e(),n.current=setTimeout(()=>{a.current=setInterval(e,r)},t)},[e,t,r]),i=(0,o.useCallback)(()=>{clearTimeout(n.current),clearInterval(a.current),n.current=null,a.current=null},[]);return(0,o.useEffect)(()=>i,[i]),{onPointerDown:s,onPointerUp:i,onPointerLeave:i}},le=e=>{let{onZoomIn:t,onZoomOut:r,onZoomAll:o,onRotateCW:a,onRotateCCW:s,onToggleForces:i,onToggleLegend:l,forcesOn:c,legendOpen:d,legendBtnRef:u}=e;const h=ie(t),p=ie(r),g=ie(a),f=ie(s);return(0,E.jsxs)(ae,{active:c||d,children:[(0,E.jsx)(n.Button,{icon:"thunder",flavour:"hollow",active:c,onClick:i,tooltip:"Forces on/off",small:!0}),(0,E.jsx)(se,{}),(0,E.jsx)(n.IconButton,{icon:"zoomReset",onClick:o,tooltip:"Zoom to fit"}),(0,E.jsx)(n.IconButton,{icon:"zoomIn",...h,tooltip:"Zoom in"}),(0,E.jsx)(n.IconButton,{icon:"zoomOut",...p,tooltip:"Zoom out"}),(0,E.jsx)(se,{}),(0,E.jsx)(n.IconButton,{icon:"rotate_ccw",...f,tooltip:"Rotate left"}),(0,E.jsx)(n.IconButton,{icon:"rotate_cw",...g,tooltip:"Rotate right"}),(0,E.jsx)(se,{}),(0,E.jsx)(n.Button,{ref:u,icon:"information",flavour:"hollow",active:d,onClick:l,tooltip:"Legend",small:!0})]})},ce=(0,a.default)(n.Flex).attrs({column:!0,gap:2}).withConfig({displayName:"forceGraph__GraphContainer",componentId:"sc-zcty40-0"})([""]),de=(0,a.default)(n.Box).attrs({position:"relative",overflow:"hidden"}).withConfig({displayName:"forceGraph__GraphSurface",componentId:"sc-zcty40-1"})(["background:",";"],e=>{let{bare:t,theme:r}=e;return t?"transparent":`\n    radial-gradient(circle at 25% 20%, rgba(80, 184, 255, 0.08), transparent 42%),\n    radial-gradient(circle at 78% 75%, rgba(244, 166, 35, 0.08), transparent 36%),\n    ${(0,n.getColor)("mainBackground")({theme:r})}`}),ue=(0,a.default)(n.Flex).attrs({position:"absolute",top:2,zIndex:5,_hover:{opacity:1},_focusWithin:{opacity:1}}).withConfig({displayName:"forceGraph__SearchOverlay",componentId:"sc-zcty40-2"})(["gap:4px;border-radius:6px;padding:3px 8px;background:rgba(15,24,24,0.65);border:1px solid rgba(255,255,255,0.08);opacity:",";transition:opacity 0.18s;"],e=>{let{active:t}=e;return t?1:.55}),he=a.default.line.withConfig({displayName:"forceGraph__ClickableLine",componentId:"sc-zcty40-3"})(["cursor:",";"],e=>{let{clickable:t}=e;return t?"pointer":"default"}),pe=a.default.circle.withConfig({displayName:"forceGraph__ClickableCircle",componentId:"sc-zcty40-4"})(["cursor:",";"],e=>{let{clickable:t}=e;return t?"pointer":"grab"}),ge=e=>{if(!e)return"";const t=e.details?.match||{},r=e.details?.attributes||{},o=e.details?.labels||{};return[e.label||"",...Array.isArray(t.hostnames)?t.hostnames:[],t.sys_name||t.sysName||"",r.sys_name||r.sysName||"",r.display_name||r.displayName||"",o.display_name||o.displayName||"",...Array.isArray(t.ipAddresses)?t.ipAddresses:[],...Array.isArray(t.ip_addresses)?t.ip_addresses:[],r.management_ip||r.managementIp||"",...Array.isArray(t.macAddresses)?t.macAddresses:[],...Array.isArray(t.mac_addresses)?t.mac_addresses:[]].filter(Boolean).join(" ").toLowerCase()},fe=e=>{if(!e)return 0;let t=0;for(let r=0;r<e.length;r+=1)t=(t<<5)-t+e.charCodeAt(r),t|=0;return Math.abs(t)},me=e=>{let{nodes:t,links:r,width:o,height:n,positionMemory:a}=e;if(!Array.isArray(t)||!t.length||o<10||n<10)return{nodes:[],links:[]};const s=new Map;t.forEach(e=>{if(!e?.id||s.has(e.id))return;const t=a.get(e.id),r=((e,t,r)=>{const o=Math.max(t-48,1),n=Math.max(r-48,1);return{x:24+fe(`${e}:x`)%o,y:24+fe(`${e}:y`)%n}})(e.id,o,n);s.set(e.id,{...e,x:t?.x??r.x,y:t?.y??r.y})});const i=[...s.values()].sort((e,t)=>`${e.label||""}|${e.id}`.localeCompare(`${t.label||""}|${t.id}`)),l=new Set,c=[];return(r||[]).forEach(e=>{if(!e?.source||!e?.target)return;if(!s.has(e.source)||!s.has(e.target))return;const t=e.id||`${e.source}->${e.target}`;l.has(t)||(l.add(t),c.push({...e,id:t,source:e.source,target:e.target}))}),c.sort((e,t)=>`${e.source}|${e.target}|${e.label||""}|${e.id}`.localeCompare(`${t.source}|${t.target}|${t.label||""}|${t.id}`)),{nodes:i,links:c}},xe=(0,o.memo)(e=>{let{title:t,nodes:r=[],links:u=[],portStateLinks:h=[],height:p=420,selectedNodeId:x,selectedLinkId:y,emptyMessage:v="No graph data",onNodeClick:w,onLinkClick:M,filterKey:I,presentation:L,isolationMode:T=!1,isolationActorId:$}=e;const N=(0,a.useTheme)(),[F,{width:A}]=(0,i.A)(),[P,R]=(0,o.useState)(null),B=(0,o.useRef)(null),[z,D]=(0,o.useState)(!1),O=(0,o.useRef)(null),[W,V]=(0,o.useState)(()=>s.zoomIdentity),[G,K]=(0,o.useState)(""),U=(0,o.useRef)(null),Z=(0,o.useRef)(new Map),Y=(0,o.useRef)(null),H=(0,o.useRef)(null),q=(0,o.useRef)(""),X=(0,o.useRef)(!1),Q=(0,o.useRef)(!1),ee=(0,o.useRef)(I),[te,re]=(0,o.useState)(!1),oe=(0,o.useRef)(!1),[ae,se]=(0,o.useState)(""),ie=(0,o.useRef)(!1),fe=(e,t)=>{if(X.current)return;if(H.current)return;if(!U.current)return;const[r,o]=s.pointer(e,U.current);B.current={x:r,y:o},R(t)},xe=()=>{R(null)},ye=(0,o.useMemo)(()=>me({nodes:r,links:u,width:A||0,height:p,positionMemory:Z.current}),[r,u,A,p]),{layout:be,setLayout:ve,layoutComputing:we,simulationRef:ke,nodesByIdRef:_e}=S({graphData:ye,width:A,height:p,filterKey:I,svgRef:U,positionsRef:Z,hasInitialLayoutRef:Q,prevFilterKeyRef:ee,pendingFilterResetRef:ie,zoomBehaviorRef:Y,forcesOnRef:oe,setZoomTransform:V});(0,o.useEffect)(()=>{if(!U.current||!be.nodes.length)return;const e=s.zoom().scaleExtent([.1,6]).on("zoom",e=>V(e.transform));Y.current=e;const t=s.select(U.current);return t.call(e),t.on("dblclick.zoom",null),W!==s.zoomIdentity&&t.call(e.transform,W),()=>{t.on(".zoom",null),Y.current=null}},[be.nodes.length]),(0,o.useEffect)(()=>{if(!T||!be.nodes.length||!A||!p)return;const e=_(be.nodes,A,p);V(e),Y.current&&U.current&&s.select(U.current).call(Y.current.transform,e)},[T,A,p,be.nodes]),(0,o.useEffect)(()=>{const e=e=>{const t=H.current;if(!t||!U.current||!A)return;const r=_e.current.get(t.nodeId);if(!r)return;const[o,n]=s.pointer(e,U.current),[a,i]=W.invert([o,n]);r.fx=a,r.fy=i,Math.abs(e.clientX-t.startX)+Math.abs(e.clientY-t.startY)>4&&(t.moved=!0),r&&(r.anchorX=r.fx,r.anchorY=r.fy),ke.current?.alphaTarget(.05).restart()},t=()=>{X.current=!1;const e=H.current;if(!e)return;const t=_e.current.get(e.nodeId);t&&(t.anchorX=t.x,t.anchorY=t.y,t.fx=null,t.fy=null),e.moved&&(q.current=e.nodeId),H.current=null,K(""),ke.current?.alphaTarget(0)};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)}},[A,p,W]);const Ce=(0,o.useMemo)(()=>new Map(be.nodes.map(e=>[e.id,e])),[be.nodes]),je=(0,o.useMemo)(()=>new Set(be.nodes.filter(e=>(0,l.Po)(e)).map(e=>e.id)),[be.nodes]),Me=(0,o.useMemo)(()=>{const e=new Set;return be.links.forEach(t=>{(0,l.TV)(t)&&(e.add(t.source),e.add(t.target))}),e},[be.links]),Se=(0,o.useMemo)(()=>{const e=new Map;return be.nodes.forEach(t=>{L?.actor_types?e.set(t.id,t.actorType||"default"):e.set(t.id,(0,l.Dh)({node:t,lldpNodeIds:Me,segmentNodeIds:je}))}),e},[be.nodes,Me,je,L]),Ie=(0,o.useMemo)(()=>{const e=new Map;return be.nodes.forEach(t=>e.set(t.id,[])),be.links.forEach(t=>{e.has(t.source)||e.set(t.source,[]),e.has(t.target)||e.set(t.target,[]),e.get(t.source).push(t),e.get(t.target).push(t)}),e},[be.nodes,be.links]),Le=(0,o.useMemo)(()=>{const e=new Map;return be.nodes.forEach(t=>{const r=new Set;(0,l._N)(t)&&r.add("SNMP");[...(0,l.oU)(t?.details?.attributes?.protocols_collected),...(0,l.oU)(t?.details?.attributes?.protocols),...(0,l.oU)(t?.details?.labels?.protocols_observed),...(0,l.oU)(t?.details?.labels?.protocols_collected)].map(e=>e.toUpperCase()).forEach(e=>{e&&r.add(e)}),e.set(t.id,r)}),be.links.forEach(t=>{const r=`${t.protocol||""}`.trim().toUpperCase();r&&(e.has(t.source)||e.set(t.source,new Set),e.has(t.target)||e.set(t.target,new Set),e.get(t.source).add(r),e.get(t.target).add(r))}),be.nodes.forEach(t=>{const r=(0,l.oU)(t?.details?.attributes?.learned_sources).map(e=>e.toUpperCase()),o=e.get(t.id)||new Set;r.forEach(e=>o.add(e)),e.set(t.id,o)}),e},[be.nodes,be.links]),Te=(0,o.useMemo)(()=>{const e=new Map;return be.nodes.forEach(t=>{e.set(t.id,(0,c.gl)(t))}),e},[be.nodes]),$e=L?.actor_click_behavior||"highlight_connections",Ee=(0,o.useMemo)(()=>{const e=!!G,t=new Set,r=new Set;if(!e)return{active:e,nodeIds:t,linkIds:r};if(t.add(G),"highlight_path"===$e){const e=be.nodes.find(e=>e.id===G),o=e?.streamingPath;if(o&&o.length>0){o.forEach(e=>t.add(e));const e=t;be.links.forEach(t=>{if(e.has(t.source)&&e.has(t.target)){const e=o.indexOf(t.source),n=o.indexOf(t.target);e>=0&&n>=0&&1===Math.abs(e-n)&&r.add(t.id)}})}else be.links.forEach(e=>{e.source!==G&&e.target!==G||(r.add(e.id),t.add(e.source),t.add(e.target))})}else be.links.forEach(e=>{e.source!==G&&e.target!==G||(r.add(e.id),t.add(e.source),t.add(e.target))});return{active:e,nodeIds:t,linkIds:r}},[be.nodes,be.links,G,$e]),Ne=(0,o.useMemo)(()=>{const e=new Map,t=(t,r)=>{t&&(e.has(t)||e.set(t,new Set),e.get(t).add(r))};return be.links.forEach(e=>{t(e.source,(0,c.EF)(Te.get(e.source),e.sourcePort)),t(e.target,(0,c.EF)(Te.get(e.target),e.targetPort))}),e},[be.links,Te]),[Fe,Ae]=(0,o.useMemo)(()=>{const e=new Map,t=new Map;return be.nodes.forEach(r=>{const o=new Set,n=Te.get(r.id),a=!!n?.ports?.size;a&&n.ports.forEach((e,t)=>o.add(t));const s=r.receivedNodes||r.received_nodes;Array.isArray(s)&&s.forEach(e=>{if(!e)return;const n="string"===typeof e?e:e.name,a="string"===typeof e?null:e.type;n&&(o.add(n),a&&t.set((0,c.Tm)(r.id,n),a))});(Ne.get(r.id)||new Set).forEach(e=>{a&&e===d.Lc||o.add(e)});const i=[...o].filter(e=>e!==d.Lc).sort(c.yl);o.has(d.Lc)&&i.length>0&&!a&&i.push(d.Lc),e.set(r.id,i)}),[e,t]},[be.nodes,Te,Ne]),Pe=(0,o.useMemo)(()=>{const e=new Map;return be.nodes.forEach(t=>{if(L?.actor_types){const r=L.actor_types[t.actorType];if(r&&!r.show_port_bullets)return void e.set(t.id,[])}const r=Fe.get(t.id)||[],o=r.filter(e=>e!==d.Lc),n=r.includes(d.Lc);o.length+(n?1:0)<=1?e.set(t.id,[]):e.set(t.id,r)}),e},[be.nodes,Fe,L]),Re=(0,o.useMemo)(()=>{const e=new Map;return be.nodes.forEach(t=>{const r=!!x&&x===t.id,o=Se.get(t.id)||"default",a=L?.actor_types?.[o],s=a?g(a,N):(e=>{let{kind:t,theme:r}=e;switch(t){case"lldp":return{fill:(0,n.getColor)("primary")({theme:r}),sizeFactor:1,borderColor:(0,n.getColor)("bright")({theme:r}),borderWidth:1,labelOpacity:1};case"snmp":return{fill:(0,n.getColor)("warning")({theme:r}),sizeFactor:1,borderColor:(0,n.getColor)("bright")({theme:r}),borderWidth:1,labelOpacity:1};case"self":return{fill:(0,n.getColor)("elementBackground")({theme:r}),sizeFactor:1.18,borderColor:(0,n.getColor)("text")({theme:r}),borderWidth:1,labelOpacity:1};case"inferred":return{fill:(0,n.getColor)("textDescription")({theme:r}),sizeFactor:1,borderColor:(0,n.getColor)("text")({theme:r}),borderWidth:1,labelOpacity:.95};case"segment":return{fill:(0,n.getColor)("offline")({theme:r}),sizeFactor:1,borderColor:"transparent",borderWidth:0,labelOpacity:.72};case"derived":return{fill:(0,n.getColor)("unseen")({theme:r}),sizeFactor:1,borderColor:(0,n.getColor)("unseen")({theme:r}),borderWidth:1,labelOpacity:.9};default:return{fill:g(void 0,r).fill,sizeFactor:1,borderColor:(0,n.getColor)("borderSecondary")({theme:r}),borderWidth:1,labelOpacity:1}}})({kind:o,theme:N}),i=(e=>{let{node:t,nodeVisual:r,portInventory:o}=e;if(!r.sizeByLinks&&(r.sizeByLinks||!(0,l.pV)(t)||t?.inferred))return r.sizeFactor;const n=(0,c.Yh)(t,o);return r.sizeFactor*j(n)})({node:t,nodeVisual:s,portInventory:Te.get(t.id)}),d=Ee.nodeIds.has(t.id),u=(r?11:9)*i,h=Pe.get(t.id)||[],p=C(h.length),f=Math.max(u,p),m=Ee.active&&d?1.2*f:f,y=T&&t.id===$,v=T&&!y,w=v?.45:Ee.active?d?1:.2:1,k=y?(0,n.getColor)("warning")({theme:N}):v?(0,n.getColor)("offline")({theme:N}):r?(0,n.getColor)("warning")({theme:N}):Ee.active&&d?(0,n.getColor)("bright")({theme:N}):s.borderColor,_=y||Ee.active&&d?2.4:r?2:s.borderWidth,M=v?(0,n.getColor)("offline")({theme:N}):null,S=v?(0,n.getColor)("offline")({theme:N}):null;var I;e.set(t.id,{selected:r||y,nodeKind:o,nodeVisual:s,focused:d,radius:m,nodeOpacity:w,strokeColor:k,strokeWidth:_,fillOverride:M,labelColorOverride:S,iconSvg:a?.icon_svg?(I=a.icon_svg,I&&"string"===typeof I?I.replace(/<script[\s\S]*?<\/script>/gi,"").replace(/<style[\s\S]*?<\/style>/gi,"").replace(/<foreignObject[\s\S]*?<\/foreignObject>/gi,"").replace(/<(iframe|embed|object|handler)[\s\S]*?>/gi,"").replace(/<!\[CDATA\[[\s\S]*?\]\]>/gi,"").replace(/\bon\w+\s*=/gi,"data-removed=").replace(/javascript\s*:/gi,""):""):b(o)||b((0,l._l)((0,l._u)(t)))||null})}),e},[be.nodes,x,Se,Ee,Te,Pe,T,$,N]),Be=(0,o.useMemo)(()=>{const e=new Map;return be.nodes.forEach(t=>{const r=Re.get(t.id);r&&e.set(t.id,r.radius)}),e},[be.nodes,Re]),ze=(0,o.useMemo)(()=>{const e=new Set,t=(t,r,o)=>{if(!t)return;if(!(0,l.vF)(o))return;const n=(0,c.EF)(Te.get(t),r);e.add((0,c.Tm)(t,n))};return(h||[]).forEach(e=>{t(e.source,e.sourcePort,e.protocol),t(e.target,e.targetPort,e.protocol)}),e},[h,Te]),De=(0,o.useMemo)(()=>{const e=new Map;return Fe.forEach((t,r)=>{const o=Te.get(r),n=Ne.get(r)||new Set;t.forEach(t=>{const a=(0,c.Tm)(r,t),s=o?.ports?.get(t),i="up"===`${s?.operStatus||""}`.trim().toLowerCase(),l=!s&&n.has(t);i||l?e.set(a,ze.has(a)?"discovery":"topology"):e.set(a,"idle")})}),e},[Fe,Te,Ne,ze]),Oe=(0,o.useMemo)(()=>{const e=new Map;return Fe.forEach((t,r)=>{const o=Te.get(r);t.forEach(t=>{const n=(0,c.Tm)(r,t),a=o?.ports?.get(t);e.set(n,(0,c.vC)(a?.linkMode))})}),e},[Fe,Te]),We=(0,o.useMemo)(()=>{const e=new Map;return Fe.forEach((t,r)=>{const o=Te.get(r);t.forEach(t=>{const n=(0,c.Tm)(r,t),a=o?.ports?.get(t);e.set(n,{role:(0,c.DV)(a?.topologyRole),confidence:(0,c.qk)(a?.topologyRoleConfidence),sources:(0,c.te)(a?.topologyRoleSources)})})}),e},[Fe,Te]),Ve=(0,o.useMemo)(()=>{const e=new Map;return Fe.forEach((t,r)=>{t.forEach(t=>{const o=(0,c.Tm)(r,t),n=Ae.get(o);if(n)return void e.set(o,n);const a=De.get(o)||"idle",s=Oe.get(o)||"unknown",i=We.get(o)?.role||"unknown";e.set(o,(0,c.Zc)({status:a,role:i,mode:s}))})}),e},[Fe,Ae,De,Oe,We]),Ge=(0,o.useMemo)(()=>{const e=new Map;return be.nodes.forEach(t=>{const r=Pe.get(t.id)||[];if(!r.length)return;const o=Ce.get(t.id),n=Re.get(t.id);if(!o||!n)return;const a=n.radius+9,s=2*Math.PI/r.length;r.forEach((r,n)=>{const i=-Math.PI/2+s*n;e.set((0,c.Tm)(t.id,r),{id:(0,c.Tm)(t.id,r),nodeId:t.id,port:r,x:o.x+Math.cos(i)*a,y:o.y+Math.sin(i)*a})})}),e},[be.nodes,Pe,Ce,Re]),Ke=(0,o.useMemo)(()=>{const e=[];return Ge.forEach(t=>{const r=Re.get(t.nodeId);if(!r)return;const o=De.get(t.id)||"idle",n=Oe.get(t.id)||"unknown",a=We.get(t.id)||{role:"unknown",confidence:"low",sources:[]},s=Ve.get(t.id)||"unknown",i=(0,c.IV)(s),l=L?.port_types?.[s],u=l?m(l.color_slot,N):i.bullet,h=L?.port_fields,p=h?h.map(e=>{let t;switch(e.key){case"type":t=l?.label||i.label||s;break;case"role":if("unknown"===a.role)return null;t=`${a.role} (${a.confidence})`;break;case"status":t=o;break;case"mode":if("unknown"===n)return null;t=n;break;case"sources":if(!a.sources?.length)return null;t=a.sources.join(", ");break;default:return null}return{label:e.label,value:t}}).filter(Boolean):null;e.push({...t,fill:r.fillOverride||u,opacity:r.fillOverride?.35:Ee.active?r.focused?.7:.15:t.port===d.Lc?.55:.7,radius:"lldp"===s||"trunk"===s?3.2:"idle"===o?2.4:2.9,stroke:"none",strokeWidth:0,actorLabel:Ce.get(t.nodeId)?.label||"",tooltipFields:p,type:s})}),e},[Ge,De,Oe,We,Ve,Re,Ee.active,Ce,N]),Ue=(0,o.useMemo)(()=>be.nodes.length?be.nodes.filter(e=>!(0,l.Po)(e)).map(e=>({node:e,text:ge(e)})):[],[be.nodes]),Ze=(0,o.useMemo)(()=>{const e=ae.trim().toLowerCase();if(!e)return null;const t=new Set;return Ue.forEach(r=>{let{node:o,text:n}=r;n.includes(e)&&t.add(o.id)}),t},[ae,Ue]),Ye=null!==Ze;(0,o.useEffect)(()=>{if(!Ze||!Ze.size||!A||!p||!Y.current||!U.current)return;const e=be.nodes.filter(e=>Ze.has(e.id));if(!e.length)return;if(e.every(e=>{const[t,r]=W.apply([e.x,e.y]);return t>=0&&t<=A&&r>=0&&r<=p}))return;let t=1/0,r=-1/0,o=1/0,n=-1/0;e.forEach(e=>{e.x<t&&(t=e.x),e.x>r&&(r=e.x),e.y<o&&(o=e.y),e.y>n&&(n=e.y)});const a=r-t||1,i=n-o||1,l=(t+r)/2,c=(o+n)/2,d=W.k,u=Math.min((A-120)/a,(p-120)/i,2),h=Math.min(d,u),g=s.zoomIdentity.translate(A/2,p/2).scale(h).translate(-l,-c);V(g),s.select(U.current).call(Y.current.transform,g)},[Ze,be.nodes,A,p]);const He=(0,o.useCallback)(()=>{re(e=>{const t=!e;return oe.current=t,ke.current&&(t?ke.current.alpha(.15).alphaTarget(.01).restart():ke.current.alphaTarget(0).alpha(0).stop()),t})},[]),qe=(0,o.useCallback)(()=>{if(!be.nodes.length||!A||!p||!Y.current||!U.current)return;const e=_(be.nodes,A,p);V(e),s.select(U.current).call(Y.current.transform,e)},[be.nodes,A,p]),Xe=(0,o.useCallback)(e=>{if(!Y.current||!U.current||!A)return;s.select(U.current).call(Y.current.scaleBy,e,[A/2,p/2])},[A,p]),Je=(0,o.useCallback)(()=>Xe(1.25),[Xe]),Qe=(0,o.useCallback)(()=>Xe(.8),[Xe]),et=(0,o.useCallback)(e=>{if(!be.nodes.length||!A||!p)return;const[t,r]=W.invert([A/2,p/2]),o=e*Math.PI/180,n=Math.cos(o),a=Math.sin(o);Z.current.forEach((e,o)=>{const s=e.x-t,i=e.y-r;Z.current.set(o,{x:t+s*n-i*a,y:r+s*a+i*n})}),ve(e=>({...e,nodes:e.nodes.map(e=>{const t=Z.current.get(e.id);return t?{...e,x:t.x,y:t.y}:e})}));const s=_e.current;s.size&&s.forEach(e=>{const t=Z.current.get(e.id);t&&(e.x=t.x,e.y=t.y,e.anchorX=t.x,e.anchorY=t.y)})},[be.nodes.length,A,p,W]),tt=(0,o.useCallback)(()=>et(8),[et]),rt=(0,o.useCallback)(()=>et(-8),[et]),ot=(0,o.useCallback)(e=>se(e),[]),nt=(0,o.useCallback)(()=>se(""),[]),at=e=>e&&"unknown"!==e?e:"",st=(0,o.useMemo)(()=>({nodeKinds:Se,nodeProtocolsById:Le,portInventoryByActor:Te,tooltipPortsByActor:Fe,incidentLinksByNodeId:Ie,nodePositions:Ce,portDetectedTypeByKey:Ve,presentation:L}),[Se,Le,Te,Fe,Ie,Ce,Ve,L]);return(0,E.jsxs)(ce,{children:[!!t&&(0,E.jsx)(n.TextSmall,{color:"textDescription",children:t}),(0,E.jsxs)(de,{ref:F,height:`${p}px`,bare:T,children:[we&&!be.nodes.length&&A>0&&(0,E.jsx)(n.Flex,{alignItems:"center",justifyContent:"center",sx:{position:"absolute",inset:0},children:(0,E.jsx)(n.Text,{color:"textDescription",children:"Computing layout\u2026"})}),A>0&&be.nodes.length?(0,E.jsx)("svg",{ref:U,width:A,height:p,children:(0,E.jsxs)("g",{transform:W.toString(),children:[be.links.map(e=>{const t=Ce.get(e.source),r=Ce.get(e.target);if(!t||!r)return null;const o=Be.get(e.source)||0,a=Be.get(e.target)||0,s=r.x-t.x,i=r.y-t.y,c=Math.hypot(s,i),d=c>0?s/c:0,u=c>0?i/c:0,h=Math.max(c-1,0);let p=Math.min(o+0,h),g=Math.min(a+0,h);const m=p+g;if(m>h&&m>0){const e=h/m;p*=e,g*=e}const x=t.x+d*p,b=t.y+u*p,v=r.x-d*g,w=r.y-u*g,_=y&&y===e.id,C=Se.get(e.source)||"default",j=Se.get(e.target)||"default",S=e.linkType||e.link_type,I=S&&L?.link_types?S:(0,l.Z4)({link:e,sourceKind:C,targetKind:j}),F=L?.link_types?.[I],A=F?f(F,N):((e,t)=>{switch(e){case"ownership":return{color:(0,n.getColor)("generic")({theme:t}),widthFactor:.8,opacity:.62,dashArray:"4 4"};case"socket":return{color:(0,n.getColor)("textDescription")({theme:t}),widthFactor:1.05,opacity:.9};case"lldp":return{color:(0,n.getColor)("primary")({theme:t}),widthFactor:2,opacity:.98};case"snmp":return{color:(0,n.getColor)("warning")({theme:t}),widthFactor:1,opacity:.95};case"segment":return{color:(0,n.getColor)("offline")({theme:t}),widthFactor:1,opacity:.8};case"derived":return{color:(0,n.getColor)("unseen")({theme:t}),widthFactor:1,opacity:.92};case"probable":return{color:(0,n.getColor)("generic")({theme:t}),widthFactor:1,opacity:.98};default:return{color:(0,n.getColor)("textDescription")({theme:t}),widthFactor:1,opacity:.82}}})(I,N),P=Ee.linkIds.has(e.id),R=T&&e.source!==$&&e.target!==$,B=T?(0,n.getColor)("offline")({theme:N}):_?(0,n.getColor)("warning")({theme:N}):A.color,z=(_?3:k(1+Math.log10((e.weight||1)+1),1,4))*A.widthFactor,D=Ee.active&&P?1.2*z:z,O=Ye&&!(Ze.has(e.source)||Ze.has(e.target))?.06:R?.15:T?.5:Ee.active?P?1:.12:_?1:A.opacity;return(0,E.jsx)("g",{children:(0,E.jsx)(he,{clickable:!!M,x1:x,y1:b,x2:v,y2:w,stroke:B,strokeWidth:D,strokeDasharray:A.dashArray||void 0,opacity:O,onMouseEnter:t=>fe(t,{type:"link",...e}),onMouseLeave:xe,onClick:()=>{xe(),M?.(e)}})},e.id)}),Ke.map(e=>(0,E.jsx)("circle",{cx:e.x,cy:e.y,r:e.radius,fill:e.fill,opacity:Ye&&!Ze.has(e.nodeId)?.1:e.opacity,stroke:e.stroke,strokeWidth:e.strokeWidth,onMouseEnter:t=>fe(t,{type:"port",label:at(e.port)?`${e.actorLabel} :: ${e.port}`:e.actorLabel,details:{actor:e.actorLabel,...at(e.port)?{port:e.port}:{},tooltipFields:e.tooltipFields}}),onMouseLeave:xe},e.id)),be.nodes.map(e=>{const t=Re.get(e.id);if(!t)return null;const{nodeVisual:r,focused:o,radius:a,nodeOpacity:s,strokeColor:i,strokeWidth:l,fillOverride:c,labelColorOverride:d}=t,u=Ye&&Ze.has(e.id),h=Ye&&!u,p=h?.15:s,g=u?(0,n.getColor)("strokeMain")({theme:N}):i,f=u?Math.max(l,2.5):l;return(0,E.jsxs)("g",{children:[u&&(0,E.jsx)("circle",{cx:e.x,cy:e.y,r:a+6,fill:"none",stroke:(0,n.getColor)("strokeMain")({theme:N}),strokeWidth:1.5,opacity:.5,pointerEvents:"none"}),(0,E.jsx)(pe,{clickable:!!w,cx:e.x,cy:e.y,r:a,fill:c||r.fill,opacity:p,stroke:g,strokeWidth:f,onMouseEnter:t=>fe(t,{type:"node",...e}),onMouseLeave:xe,onPointerDown:t=>{t.preventDefault(),t.stopPropagation(),X.current=!0,xe(),K(e.id);const r=_e.current.get(e.id);r&&(r.fx=e.x,r.fy=e.y,r.anchorX=e.x,r.anchorY=e.y),ke.current?.alpha(.1).alphaTarget(.05).restart(),H.current={nodeId:e.id,startX:t.clientX,startY:t.clientY,moved:!1}},onClick:()=>{q.current!==e.id?(xe(),w?.(e)):q.current=""}}),t.iconSvg?(0,E.jsx)("g",{transform:`translate(${e.x-.55*a}, ${e.y-.55*a}) scale(${1.1*a/24})`,pointerEvents:"none",opacity:h?.1:Ee.active?o?.9:.25:.9,dangerouslySetInnerHTML:{__html:t.iconSvg}}):null,(0,E.jsx)("text",{x:e.x,y:e.y+a+((Pe.get(e.id)||[]).length>0?13:0)+12,textAnchor:"middle",fill:d||(0,n.getColor)("text")({theme:N}),opacity:h?.1:Ee.active?o?1:.24:r.labelOpacity,fontSize:"11",fontFamily:"monospace",pointerEvents:"none",children:e.label})]},e.id)})]})}):(0,E.jsx)(n.Flex,{height:"100%",alignItems:"center",justifyContent:"center",children:(0,E.jsx)(n.Text,{color:"textDescription",children:v})}),!T&&(0,E.jsxs)(ue,{active:!!ae,children:[(0,E.jsx)(n.SearchInput,{value:ae,onChange:ot,onReset:nt,placeholder:"Search actors..."}),Ye&&(0,E.jsxs)(n.TextSmall,{color:"textLite",children:[Ze.size," found"]})]}),!T&&(0,E.jsx)(le,{onZoomIn:Je,onZoomOut:Qe,onZoomAll:qe,onRotateCW:tt,onRotateCCW:rt,onToggleForces:He,onToggleLegend:()=>D(e=>!e),forcesOn:te,legendOpen:z,legendBtnRef:O}),!T&&z&&O.current&&(0,E.jsx)(n.Drop,{target:O.current,align:{bottom:"top",right:"right"},onClickOutside:()=>D(!1),onEsc:()=>D(!1),background:"mainBackground",padding:[2],round:2,width:"260px",height:{max:"70vh"},overflow:{vertical:"auto"},children:(0,E.jsx)(ne,{presentation:L})}),(0,E.jsx)(J,{hovered:P,svgRef:U,initialPositionRef:B,data:st})]})]})}),ye=xe},25219(e,t,r){r.d(t,{A:()=>D});r(98992),r(54520),r(72577),r(3949),r(81454),r(37550),r(71517),r(11379),r(93777),r(14190),r(12359),r(86097),r(17273),r(27415),r(19929),r(37583),r(55122),r(20230),r(57268),r(79733),r(25509),r(65223),r(60321),r(41927),r(11632),r(64377),r(66771),r(12516),r(68931),r(52514),r(35694),r(52774),r(49536),r(21926),r(94483),r(16215);var o=r(96540),n=r(38429),a=r(85660),s=r(427),i=r(25038),l=r(49440),c=r(32981),d=r(15036);const u=e=>{if(null===e||void 0===e||""===e)return"";if(Array.isArray(e)){const t=e.map(e=>e&&"object"===typeof e?u(e):`${e??""}`.trim()).filter(Boolean);return t.length?t.join(", "):""}if("object"===typeof e){const t=Object.entries(e).filter(e=>{let[,t]=e;return null!==t&&void 0!==t&&""!==t});return t.length?t.map(e=>{let[t,r]=e;return`${t}: ${r}`}).join(", "):""}return"boolean"===typeof e?e?"yes":"no":`${e}`.trim()},h=e=>e.replace(/([-_][a-z])/g,e=>e[1].toUpperCase()),p=(e,t)=>{if(!Array.isArray(t)||!e)return"";const r={actor_type:e.actorType,source:e.source,layer:e.layer};for(const o of t){if(void 0!==r[o]){const e=u(r[o]);if(e)return e;continue}const t=o.split(".");let n=e.details;for(const e of t){if(null===n||void 0===n){n=void 0;break}const t=Number(e);n=Number.isFinite(t)&&Array.isArray(n)?n[t]:void 0!==n[e]?n[e]:n[h(e)]}if(void 0!==n&&null!==n&&""!==n)return u(n)}return""};var g=r(79748),f=r(882);const m=(0,f.default)(n.Box).withConfig({displayName:"styled__SummaryGrid",componentId:"sc-n2rgc1-0"})(["display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:12px;line-height:1.5;"]),x=(0,f.default)(n.TextSmall).attrs({as:"span",color:"text"}).withConfig({displayName:"styled__SummaryValue",componentId:"sc-n2rgc1-1"})(["overflow-wrap:anywhere;"]),y=(0,f.default)(n.TextSmall).attrs({as:"span",whiteSpace:"nowrap",strong:!0,round:"3px"}).withConfig({displayName:"styled__Badge",componentId:"sc-n2rgc1-2"})(["display:inline-block;padding:1px 6px;line-height:1.4;"]),b=(0,f.default)(n.Box).attrs({as:"table"}).withConfig({displayName:"styled__StyledTable",componentId:"sc-n2rgc1-3"})(["width:100%;border-collapse:collapse;font-family:monospace;font-size:11px;th,td{border-bottom:1px solid ",";padding:5px 8px;text-align:left;white-space:nowrap;}th{position:sticky;top:0;z-index:1;background:",";color:",";font-weight:600;}tbody tr{cursor:pointer;}tbody tr:hover{background:",";}"],(0,n.getColor)("border"),(0,n.getColor)("mainBackground"),(0,n.getColor)("textDescription"),(0,n.getColor)("secondaryHighlight")),v=(0,f.default)(n.Box).attrs({as:"tr"}).withConfig({displayName:"styled__ExpandedRow",componentId:"sc-n2rgc1-4"})(["td{padding:8px 12px;background:rgba(0,171,68,0.03);}"]),w=(0,f.default)(n.Box).attrs({position:"relative",height:{min:"200px"}}).withConfig({displayName:"styled__InfoOverlayContainer",componentId:"sc-n2rgc1-5"})(["flex:1;"]),k=(0,f.default)(n.Box).attrs({position:"absolute",top:0,right:0,width:"75%",height:"100%",zIndex:0,overflow:"hidden"}).withConfig({displayName:"styled__DiagramBackground",componentId:"sc-n2rgc1-6"})(["pointer-events:none;mask-image:linear-gradient( to right,rgba(0,0,0,0.08) 0%,rgba(0,0,0,0.35) 25%,rgba(0,0,0,1) 40% );-webkit-mask-image:linear-gradient( to right,rgba(0,0,0,0.08) 0%,rgba(0,0,0,0.35) 25%,rgba(0,0,0,1) 40% );"]),_=(0,f.default)(n.ModalContent).attrs({overflow:"auto",width:{min:"600px"},height:{min:"400px"}}).withConfig({displayName:"styled__ResizableModalContent",componentId:"sc-n2rgc1-7"})(["resize:both;display:flex;flex-direction:column;background:",";border:1px solid rgba(45,138,154,0.2);box-shadow:0 8px 48px rgba(0,0,0,0.6),0 0 0 1px rgba(45,138,154,0.08);"],(0,n.getColor)("mainBackground")),C=(0,f.default)(n.Box).attrs({padding:[2]}).withConfig({displayName:"styled__KeyValueGrid",componentId:"sc-n2rgc1-8"})(["display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:12px;line-height:1.5;"]),j=(0,f.default)(n.H3).withConfig({displayName:"styled__SectionTitle",componentId:"sc-n2rgc1-9"})(["font-size:16px;margin:",";"],e=>{let{marginBottom:t}=e;return t?`0 0 ${t}px`:"0"}),M=(0,f.default)(y).withConfig({displayName:"styled__DynamicBadge",componentId:"sc-n2rgc1-10"})(["background:",";color:",";font-size:",";"],e=>{let{bg:t,theme:r}=e;return t?(0,n.getColor)(t)({theme:r}):"transparent"},e=>{let{color:t,theme:r}=e;return t?(0,n.getColor)(t)({theme:r}):"inherit"},e=>{let{fontSize:t}=e;return t?`${t}px`:"inherit"}),S=(0,f.default)(n.ModalBody).attrs({height:{min:0}}).withConfig({displayName:"styled__FlexibleModalBody",componentId:"sc-n2rgc1-11"})(["flex:1;"]),I=(0,f.default)(n.Box).attrs({as:"td"}).withConfig({displayName:"styled__BoldCell",componentId:"sc-n2rgc1-12"})(["font-weight:600;"]);var L=r(74848);const T=(0,o.memo)(e=>{let{node:t,summaryFields:r}=e;if(!t||!r?.length)return null;const a=r.map(e=>({label:e.label,value:p(t,e.sources)})).filter(e=>e.value);return(0,L.jsxs)(n.Box,{children:[(0,L.jsx)(j,{marginBottom:8,children:t.label}),(0,L.jsx)(m,{children:a.map(e=>(0,L.jsxs)(o.Fragment,{children:[(0,L.jsx)(n.TextSmall,{children:e.label}),(0,L.jsx)(x,{children:e.value})]},e.label))})]})}),$=new Set(["vendor","manufacturer","organization","vendor_source","vendorSource","vendor_confidence","vendorConfidence","model","sys_descr","sysDescr","sys_name","sysName","sys_location","sysLocation","sys_contact","sysContact","protocols","learned_sources","learnedSources","protocolsCollected","protocols_collected","capabilities","capabilities_enabled","capabilities_supported","capabilitiesEnabled","capabilitiesSupported","ports_up","portsUp","ports_down","portsDown","ports_admin_down","portsAdminDown","portsTotal","ports_total","fdb_total_macs","fdbTotalMacs","vlan_count","vlanCount","lldp_neighbor_count","lldpNeighborCount","cdp_neighbor_count","cdpNeighborCount","chart_id_prefix","chartIdPrefix","netdata_host_id","netdataHostId","inferred","port_inventory","portInventory","vendorDerived","vendor_derived","vendorDerivedConfidence","vendor_derived_confidence","vendorDerivedMatchPrefix","vendor_derived_match_prefix","vendorDerivedSource","vendor_derived_source","vendorMatchPrefix","vendor_match_prefix","ifStatuses","if_statuses","ifNames","if_names","ifIndexes","if_indexes","ifAdminStatusCounts","if_admin_status_counts","ifOperStatusCounts","if_oper_status_counts","ifLinkModeCounts","if_link_mode_counts","ifTopologyRoleCounts","if_topology_role_counts","displayName","display_name","displaySource","display_source","deviceId","device_id","discovered","deviceCharts","device_charts","chartContextPrefix","chart_context_prefix","managementAddresses","management_addresses","managementIp","management_ip"]),E=(0,o.memo)(e=>{let{node:t,portInventory:r}=e;if(!t)return null;const a=t.details?.attributes||{},s=(0,l.OR)(t),i=(0,l.LG)(a,"vendor_source","vendorSource"),d=(0,l.LG)(a,"vendor_confidence","vendorConfidence"),h=(0,l.LG)(a,"model"),p=(0,l.LG)(a,"sys_descr","sysDescr"),g=(0,l.LG)(a,"sys_location","sysLocation"),f=(0,l.LG)(a,"sys_contact","sysContact"),y=(0,l._u)(t),b=(0,l.SE)(y),v=(0,l.xd)([...(0,l.oU)(a.protocols),...(0,l.oU)(a.learned_sources)]),w=(0,c.Yh)(t,r),k=Number(a.ports_up??a.portsUp??0),_=Number(a.ports_down??a.portsDown??0),C=Number(a.ports_admin_down??a.portsAdminDown??0),S=Number(a.fdb_total_macs??a.fdbTotalMacs??0),I=Number(a.vlan_count??a.vlanCount??0),T=Number(a.lldp_neighbor_count??a.lldpNeighborCount??0),E=Number(a.cdp_neighbor_count??a.cdpNeighborCount??0),N=(0,l.LG)(a,"chart_id_prefix","chartIdPrefix"),F=(0,l.LG)(a,"netdata_host_id","netdataHostId"),A=[],P=(e,t)=>{t&&"-"!==t&&A.push({label:e,value:t})};P("Type",`${t.actorType||"-"}${b?` (${b})`:""}`),P("Vendor",`${s}${i?` [${i}${d?`/${d}`:""}]`:""}`),P("Model",h),P("Description",p),P("Location",g),P("Contact",f),v.length&&P("Protocols",v.join(", ")),y.length&&P("Capabilities",y.join(", ")),w>0&&P("Ports",`${w} total (${k} up, ${_} down, ${C} admin-down)`),I>0&&P("VLANs",`${I}`),S>0&&P("FDB MACs",`${S}`),(T>0||E>0)&&P("Neighbors",`LLDP: ${T}, CDP: ${E}`),N&&P("Chart Prefix",N),F&&P("Netdata Host",F),P("Source",t.source||"-"),P("Layer",t.layer||"-"),t.inferred&&P("Inferred","yes");const R=[];return Object.entries(a).forEach(e=>{let[t,r]=e;if($.has(t))return;const o=u(r);o&&R.push({label:t,value:o})}),(0,L.jsxs)(n.Box,{children:[(0,L.jsxs)(n.Flex,{alignItems:"center",gap:3,margin:[0,0,1.5],children:[(0,L.jsx)(j,{children:t.label}),b&&(0,L.jsx)(M,{bg:"#f5a623",color:"#0f1818",fontSize:12,children:b})]}),(0,L.jsxs)(m,{children:[A.map(e=>(0,L.jsxs)(o.Fragment,{children:[(0,L.jsx)(n.TextSmall,{children:e.label}),(0,L.jsx)(x,{children:e.value})]},e.label)),R.map(e=>(0,L.jsxs)(o.Fragment,{children:[(0,L.jsx)(n.TextSmall,{children:e.label}),(0,L.jsx)(x,{children:e.value})]},`extra-${e.label}`))]})]})}),N=(0,o.memo)(e=>{let{node:t}=e;const r=t?.details?.labels||{},a=Object.entries(r).map(e=>{let[t,r]=e;return{key:t,value:u(r)}}).filter(e=>e.value);return a.length?(0,L.jsx)(C,{children:a.map(e=>(0,L.jsxs)(o.Fragment,{children:[(0,L.jsx)(n.TextSmall,{children:e.key}),(0,L.jsx)(x,{children:e.value})]},e.key))}):(0,L.jsx)(n.TextSmall,{color:"textDescription",padding:[2],children:"No labels available for this actor."})}),F=(0,o.memo)(e=>{let{node:t}=e;const r=t?.details?.match||{},a=Object.entries(r).map(e=>{let[t,r]=e;return{key:t,value:u(r)}}).filter(e=>e.value);return a.length?(0,L.jsx)(C,{children:a.map(e=>(0,L.jsxs)(o.Fragment,{children:[(0,L.jsx)(n.TextSmall,{children:e.key}),(0,L.jsx)(x,{children:e.value})]},e.key))}):(0,L.jsx)(n.TextSmall,{color:"textDescription",padding:[2],children:"No identity/match data available for this actor."})}),A=(0,o.memo)(e=>{let{node:t,graphLinks:r,graphNodes:a,navigateTo:s}=e;const i=t?.id,l=(0,o.useMemo)(()=>i?r.filter(e=>e.source===i||e.target===i).map(e=>{const t=e.source===i,r=t?e.target:e.source,o=a.find(e=>e.id===r),n=t?e.sourcePort:e.targetPort,s=t?e.targetPort:e.sourcePort,l=n&&"unknown"!==n?n:"",c=s&&"unknown"!==s?s:"";return{id:e.id,remoteId:r,remoteLabel:o?.label||r,localPort:l,remotePort:c,protocol:e.protocol||"",direction:e.direction||""}}):[],[i,r,a]);return l.length?(0,L.jsx)(n.Box,{overflow:"auto",children:(0,L.jsxs)(b,{children:[(0,L.jsx)("thead",{children:(0,L.jsxs)("tr",{children:[(0,L.jsx)("th",{children:"Local Port"}),(0,L.jsx)("th",{children:"Remote Actor"}),(0,L.jsx)("th",{children:"Remote Port"}),(0,L.jsx)("th",{children:"Protocol"}),(0,L.jsx)("th",{children:"Direction"})]})}),(0,L.jsx)("tbody",{children:l.map(e=>(0,L.jsxs)("tr",{onClick:()=>s(e.remoteId),children:[(0,L.jsx)("td",{children:e.localPort||"-"}),(0,L.jsx)("td",{children:(0,L.jsx)(g.A,{onClick:t=>{t.stopPropagation(),s(e.remoteId)},children:e.remoteLabel})}),(0,L.jsx)("td",{children:e.remotePort||"-"}),(0,L.jsx)("td",{children:e.protocol||"-"}),(0,L.jsx)("td",{children:e.direction||"-"})]},e.id))})]})}):(0,L.jsx)(n.TextSmall,{color:"textDescription",padding:[2],children:"No links connected to this actor."})});r(74423);const P=(e,t)=>{const r=e[t];return void 0!==r?r:e[h(t)]},R=(0,o.memo)(e=>{let{node:t,tableKey:r,tableDef:a,navigateTo:s,timezone:i,locale:l}=e;const[c,d]=(0,o.useState)(""),u=a?.columns||[],p=t?.details?.tables?.[r]||t?.details?.tables?.[h(r)]||[],f=(0,o.useMemo)(()=>{if(!c.trim())return p;const e=c.trim().toLowerCase();return p.filter(t=>u.some(r=>{const o=P(t,r.key);return null!==o&&void 0!==o&&(Array.isArray(o)?o.some(t=>`${t}`.toLowerCase().includes(e)):`${o}`.toLowerCase().includes(e))}))},[p,c,u]),m=(0,o.useCallback)((e,t)=>{const r=P(e,t.key);if(null===r||void 0===r||""===r)return"-";switch(t.type){case"badge":return(0,L.jsx)(M,{bg:"rgba(45,138,154,0.15)",color:"textLite",children:`${r}`});case"count":return Array.isArray(r)?`${r.length}`:`${r}`;case"number":{const e=Number(r);return isNaN(e)?`${r}`:e.toLocaleString()}case"timestamp":{const e=Number(r);if(isNaN(e)||0===e)return"-";const t=e>1e12?e:1e3*e;try{return new Date(t).toLocaleString(l||void 0,{timeZone:i||void 0})}catch{return new Date(t).toLocaleString()}}case"duration":{const e=Number(r);if(isNaN(e)||0===e)return"-";const t=Math.abs(e);return t<60?`${t}s`:t<3600?`${Math.floor(t/60)}m ${t%60}s`:t<86400?`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m`:`${Math.floor(t/86400)}d ${Math.floor(t%86400/3600)}h`}case"bytes":{const e=Number(r);return isNaN(e)||0===e?"0":e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:e<1073741824?`${(e/1048576).toFixed(1)} MB`:`${(e/1073741824).toFixed(2)} GB`}case"actor_link":{const o=P(e,`${t.key}_id`);return o?(0,L.jsx)(g.A,{onClick:e=>{e.stopPropagation(),s(o)},children:`${r}`}):`${r}`}default:return Array.isArray(r)?r.join(", "):`${r}`}},[s,i,l]);return p.length?(0,L.jsxs)(n.Flex,{column:!0,gap:1,children:[(0,L.jsxs)(n.Flex,{alignItems:"center",gap:2,children:[(0,L.jsxs)(n.TextSmall,{strong:!0,color:"textDescription",children:[a?.label||r," (",f.length,f.length!==p.length?` of ${p.length}`:"",")"]}),(0,L.jsx)(n.SearchInput,{value:c,onChange:d,placeholder:`Search ${a?.label||r}...`})]}),(0,L.jsx)(n.Box,{overflow:"auto",height:{max:"420px"},children:(0,L.jsxs)(b,{children:[(0,L.jsx)("thead",{children:(0,L.jsx)("tr",{children:u.map(e=>(0,L.jsx)("th",{children:e.label||e.key},e.key))})}),(0,L.jsx)("tbody",{children:f.map((e,t)=>(0,L.jsx)("tr",{children:u.map(t=>(0,L.jsx)("td",{children:m(e,t)},t.key))},t))})]})})]}):(0,L.jsxs)(n.TextSmall,{color:"textDescription",padding:[2],children:["No ",a?.label||r," data available."]})}),B=(0,o.memo)(e=>{let{node:t,portInventory:r,graphLinks:a,graphNodes:s,navigateTo:i,search:u,setSearch:h,linkedOnly:p,setLinkedOnly:f,expandedPort:m,setExpandedPort:x}=e;const y=t?.id,w=(0,o.useMemo)(()=>{const e=new Map;return s.forEach(t=>{t.id!==y&&e.set(t.id,(0,c.gl)(t))}),e},[s,y]),k=(0,o.useMemo)(()=>{if(!y)return new Map;const e=new Map;return a.forEach(t=>{if(t.source!==y&&t.target!==y)return;const o=t.source===y,n=o?t.sourcePort:t.targetPort,a=(0,c.EF)(r,n),i=o?t.target:t.source,l=o?t.targetPort:t.sourcePort,d=s.find(e=>e.id===i),u=w.get(i)||null,h=u?(0,c.EF)(u,l):l||"-";e.has(a)||e.set(a,[]),e.get(a).push({id:t.id,protocol:t.protocol||"-",direction:t.direction||"-",remoteId:i,remoteLabel:d?.label||i,remotePort:h,weight:t.weight||0})}),e},[y,a,s,r]),_=(0,o.useMemo)(()=>{const e=new Set;return a.forEach(t=>{(0,l.vF)(t.protocol)&&(t.source===y&&e.add((0,c.EF)(r,t.sourcePort)),t.target===y&&e.add((0,c.EF)(r,t.targetPort)))}),e},[y,a,r]),C=(0,o.useMemo)(()=>{const e=new Set;return a.forEach(t=>{t.source===y&&e.add((0,c.EF)(r,t.sourcePort)),t.target===y&&e.add((0,c.EF)(r,t.targetPort))}),e},[y,a,r]),j=(0,o.useMemo)(()=>{const e=r?.ports||new Map,t=new Map;return[...e.entries()].forEach(e=>{let[r,o]=e;const n=k.has(r)||C.has(r),a=_.has(r),s="up"===`${o.operStatus||""}`.trim().toLowerCase(),i=!o.operStatus&&C.has(r);let l="idle";(s||i)&&(l=a?"discovery":"topology");const d=(0,c.Zc)({status:l,role:o.topologyRole,mode:o.linkMode});t.set(r,{name:r,ifIndex:o.ifIndex||"",adminStatus:o.adminStatus||"",operStatus:o.operStatus||"",linkMode:(0,c.vC)(o.linkMode),topologyRole:(0,c.DV)(o.topologyRole),stpState:o.stpState||"",fdbMacCount:o.fdbMacCount||0,vlanIds:o.vlanIds||[],neighbors:o.neighbors||[],chartIdSuffix:o.chartIdSuffix||"",availableMetrics:o.availableMetrics||[],portState:l,portType:d,hasLinks:n,linkCount:(k.get(r)||[]).length,neighborCount:(o.neighbors||[]).length})}),C.forEach(e=>{if(!e||e===d.Lc)return;if(t.has(e))return;const r=k.has(e),o=_.has(e),n=r?o?"discovery":"topology":"idle",a=(0,c.Zc)({status:n,role:"unknown",mode:"unknown"});t.set(e,{name:e,ifIndex:"",adminStatus:"",operStatus:"",linkMode:"unknown",topologyRole:"unknown",stpState:"",fdbMacCount:0,vlanIds:[],neighbors:[],chartIdSuffix:"",availableMetrics:[],portState:n,portType:a,hasLinks:r,linkCount:(k.get(e)||[]).length,neighborCount:0})}),[...t.values()].sort((e,t)=>(0,c.yl)(e.name,t.name))},[r,k,C,_]),S=(0,o.useMemo)(()=>{let e=j;if(p&&(e=e.filter(e=>e.hasLinks)),u.trim()){const t=u.trim().toLowerCase();e=e.filter(e=>{if(e.name.toLowerCase().includes(t))return!0;if(e.operStatus.toLowerCase().includes(t))return!0;if(e.linkMode.toLowerCase().includes(t))return!0;if(e.topologyRole.toLowerCase().includes(t))return!0;if(e.stpState.toLowerCase().includes(t))return!0;return!!(k.get(e.name)||[]).some(e=>e.remoteLabel.toLowerCase().includes(t))||!!e.neighbors.some(e=>`${e.remote_device||""}`.toLowerCase().includes(t))})}return e},[j,p,u,k]),T=(0,o.useCallback)(e=>{x(m===e?null:e)},[m,x]);return j.length?(0,L.jsxs)(n.Flex,{column:!0,gap:1,children:[(0,L.jsxs)(n.Flex,{alignItems:"center",justifyContent:"between",children:[(0,L.jsxs)(n.Flex,{alignItems:"center",gap:2,children:[(0,L.jsxs)(n.TextSmall,{strong:!0,color:"textDescription",children:["Ports (",S.length,p?` of ${j.length}`:"",")"]}),(0,L.jsx)(n.SearchInput,{value:u,onChange:h,placeholder:"Search ports..."})]}),(0,L.jsx)(n.Button,{flavour:"hollow",active:p,small:!0,onClick:()=>f(!p),children:p?"Linked only":"All ports"})]}),(0,L.jsx)(n.Box,{overflow:"auto",height:{max:"420px"},children:(0,L.jsxs)(b,{children:[(0,L.jsx)("thead",{children:(0,L.jsxs)("tr",{children:[(0,L.jsx)("th",{children:"Port"}),(0,L.jsx)("th",{children:"Status"}),(0,L.jsx)("th",{children:"Admin"}),(0,L.jsx)("th",{children:"Type"}),(0,L.jsx)("th",{children:"Mode"}),(0,L.jsx)("th",{children:"Role"}),(0,L.jsx)("th",{children:"STP"}),(0,L.jsx)("th",{children:"VLANs"}),(0,L.jsx)("th",{children:"FDB"}),(0,L.jsx)("th",{children:"Links"}),(0,L.jsx)("th",{children:"Neighbors"})]})}),(0,L.jsx)("tbody",{children:S.map(e=>{const t=m===e.name,r=(e=>{const t=`${e||""}`.trim().toLowerCase();return"up"===t?{bg:"#00ab44",color:"#fff",label:"UP"}:"down"===t||"lowerlayerdown"===t?{bg:"#f44",color:"#fff",label:"DOWN"}:"notpresent"===t?{bg:"#666",color:"#ddd",label:"N/P"}:"testing"===t?{bg:"#ff8a00",color:"#fff",label:"TEST"}:{bg:"#444",color:"#aaa",label:t||"-"}})(e.operStatus),a=(0,c.IV)(e.portType),s=(e=>{const t=`${e||""}`.trim().toLowerCase();return"forwarding"===t?{bg:"#00ab44",color:"#fff",label:"FWD"}:"blocking"===t?{bg:"#f44",color:"#fff",label:"BLK"}:"learning"===t?{bg:"#ff8a00",color:"#fff",label:"LRN"}:"listening"===t?{bg:"#ffcc00",color:"#222",label:"LSN"}:"disabled"===t?{bg:"#666",color:"#ddd",label:"DIS"}:null})(e.stpState),l=k.get(e.name)||[];return(0,L.jsxs)(o.Fragment,{children:[(0,L.jsxs)("tr",{onClick:()=>T(e.name),children:[(0,L.jsxs)(I,{children:[t?"\u25bc ":"\u25b6 ",e.name]}),(0,L.jsx)("td",{children:(0,L.jsx)(M,{bg:r.bg,color:r.color,children:r.label})}),(0,L.jsx)("td",{children:e.adminStatus||"-"}),(0,L.jsx)("td",{children:(0,L.jsx)(M,{bg:a.bullet,color:a.popoverColor,children:a.label})}),(0,L.jsx)("td",{children:"unknown"!==e.linkMode?(0,L.jsx)(M,{bg:"trunk"===e.linkMode?"#ff8a00":"#6ea8ff",color:"trunk"===e.linkMode?"#2d1700":"#0b2440",children:e.linkMode}):"-"}),(0,L.jsx)("td",{children:"unknown"!==e.topologyRole?(0,L.jsx)(M,{bg:"switch_facing"===e.topologyRole?"#f5a623":"host_facing"===e.topologyRole?"#2e9bff":"#50b8ff",color:"#0f1818",children:e.topologyRole.replace("_","-")}):"-"}),(0,L.jsx)("td",{children:s?(0,L.jsx)(M,{bg:s.bg,color:s.color,children:s.label}):"-"}),(0,L.jsx)("td",{children:e.vlanIds.length||"-"}),(0,L.jsx)("td",{children:e.fdbMacCount||"-"}),(0,L.jsx)("td",{children:e.linkCount||"-"}),(0,L.jsx)("td",{children:e.neighborCount||"-"})]}),t&&(0,L.jsx)(v,{children:(0,L.jsx)("td",{colSpan:11,children:(0,L.jsxs)(n.Flex,{column:!0,gap:1,children:[l.length>0&&(0,L.jsxs)(n.Flex,{column:!0,gap:.5,children:[(0,L.jsxs)(n.TextSmall,{strong:!0,children:["Links (",l.length,")"]}),l.map(e=>(0,L.jsxs)(n.Flex,{gap:2,alignItems:"center",children:[(0,L.jsx)(n.TextSmall,{children:e.protocol}),(0,L.jsx)(n.TextSmall,{children:e.direction}),(0,L.jsxs)(n.TextSmall,{children:[(0,L.jsx)(g.A,{onClick:t=>{t.stopPropagation(),i(e.remoteId,{expandPort:e.remotePort})},children:e.remoteLabel}),e.remotePort&&"-"!==e.remotePort?` : ${e.remotePort}`:""]})]},e.id))]}),e.neighbors.length>0&&(0,L.jsxs)(n.Flex,{column:!0,gap:.5,children:[(0,L.jsxs)(n.TextSmall,{strong:!0,children:["LLDP/CDP Neighbors (",e.neighbors.length,")"]}),e.neighbors.map((e,t)=>(0,L.jsxs)(n.Flex,{gap:2,alignItems:"center",children:[(0,L.jsx)(M,{bg:"rgba(0,171,68,0.2)",color:"#43ea7f",fontSize:10,children:e.protocol||"?"}),(0,L.jsx)(n.TextSmall,{children:e.remote_device||"-"}),(0,L.jsxs)(n.TextSmall,{children:["port: ",e.remote_port||"-"]}),e.remote_ip&&(0,L.jsxs)(n.TextSmall,{children:["IP: ",e.remote_ip]})]},t))]}),e.chartIdSuffix&&(0,L.jsxs)(n.Flex,{column:!0,gap:.3,children:[(0,L.jsx)(n.TextSmall,{strong:!0,children:"Charts"}),(0,L.jsxs)(n.TextSmall,{color:"primary",children:["suffix: ",e.chartIdSuffix,e.availableMetrics.length>0&&(0,L.jsxs)(L.Fragment,{children:[" \xb7 metrics: ",e.availableMetrics.join(", ")]})]})]}),!l.length&&!e.neighbors.length&&!e.chartIdSuffix&&(0,L.jsx)(n.TextSmall,{children:"No additional details"})]})})})]},e.name)})})]})})]}):(0,L.jsx)(n.TextSmall,{color:"textDescription",padding:[2],children:"No ports available for this actor."})}),z=(0,o.memo)(e=>{let{actorId:t,graphNodes:r,graphLinks:h,allLinks:p,presentation:g,onClose:f}=e;const{timezone:m,locale:x}=(0,s.bO)(),[y,b]=(0,o.useState)([{actorId:t,activeTab:"info",subTab:"ports",portSearch:"",linkedOnly:!1,expandedPort:null}]),[v,C]=(0,o.useState)(0),[j,{height:M}]=(0,a.A)(),I=y[v],$=I.actorId,P=(0,o.useCallback)(e=>{b(t=>t.map((t,r)=>r===v?{...t,...e}:t))},[v]),z=(0,o.useCallback)(e=>P({activeTab:e}),[P]),D=(0,o.useCallback)(e=>P({subTab:e}),[P]),O=(0,o.useCallback)(e=>P({portSearch:e}),[P]),W=(0,o.useCallback)(e=>P({linkedOnly:e}),[P]),V=(0,o.useCallback)(e=>P({expandedPort:e}),[P]),G=(0,o.useCallback)(function(e){let{expandPort:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||e===$)return;if(!r.some(t=>t.id===e))return;const o={actorId:e,activeTab:"info",subTab:"ports",portSearch:"",linkedOnly:!1,expandedPort:null,expandedPort:t||null};b(e=>[...e.slice(0,v+1),o]),C(e=>e+1)},[v,$,r]),K=(0,o.useCallback)(()=>{C(e=>Math.max(0,e-1))},[]),U=(0,o.useCallback)(()=>{C(e=>Math.min(y.length-1,e+1))},[y.length]),Z=(0,o.useMemo)(()=>r.find(e=>e.id===$)||null,[r,$]),Y=(0,o.useMemo)(()=>g?.actor_types?.[Z?.actorType]||null,[g,Z?.actorType]),H=(0,o.useMemo)(()=>Y?.modal_tabs?.length?Y.modal_tabs:[{id:"info",label:"Info"}],[Y]),q=(0,o.useMemo)(()=>Y?.tables?Y.tables:{},[Y]),X=(0,o.useMemo)(()=>Object.entries(q).sort((e,t)=>{let[,r]=e,[,o]=t;return(r.order||0)-(o.order||0)}),[q]);(0,o.useEffect)(()=>{X.length&&!X.some(e=>{let[t]=e;return t===I.subTab})&&"labels"!==I.subTab&&"matches"!==I.subTab&&D(X[0][0])},[X,I.subTab,D]);const J=(0,o.useMemo)(()=>(0,l.mt)({actorId:$,nodes:r,links:h}),[$,r,h]),Q=(0,o.useMemo)(()=>Z?(0,c.gl)(Z):{ports:new Map,aliases:new Map},[Z]),ee=(0,o.useMemo)(()=>{const e=Z?.details?.labels||{},t=Z?.details?.match||{},r=Object.entries(e).filter(e=>{let[,t]=e;return u(t)}).length,o=Object.entries(t).filter(e=>{let[,t]=e;return u(t)}).length,n=Z?h.filter(e=>e.source===Z.id||e.target===Z.id).length:0,a=new Set;Z&&h.forEach(e=>{if(e.source===Z.id){const t=(0,c.EF)(Q,e.sourcePort);t&&t!==d.Lc&&a.add(t)}if(e.target===Z.id){const t=(0,c.EF)(Q,e.targetPort);t&&t!==d.Lc&&a.add(t)}});return{ports:Math.max(Q?.ports?.size||0,a.size),labels:r,matches:o,links:n}},[Z,h,Q]),te=v>0,re=v<y.length-1;return(0,L.jsx)(n.Modal,{onClickOutside:f,onEsc:f,children:(0,L.jsxs)(_,{width:"75vw",height:{max:"95vh"},children:[(0,L.jsxs)(n.ModalHeader,{children:[(0,L.jsxs)(n.Flex,{alignItems:"center",gap:2,flex:!0,children:[(0,L.jsx)(n.IconButton,{icon:"chevron_left",flavour:"hollow",disabled:!te,onClick:K,tooltip:"Back",iconSize:"small"}),(0,L.jsx)(n.IconButton,{icon:"chevron_right",flavour:"hollow",disabled:!re,onClick:U,tooltip:"Forward",iconSize:"small"}),(0,L.jsx)(n.H3,{children:Z?.label||$})]}),(0,L.jsx)(n.ModalCloseButton,{onClose:f})]}),(0,L.jsx)(n.Flex,{children:H.map(e=>(0,L.jsx)(n.Tab,{label:e.label,active:I.activeTab===e.id,onClick:()=>z(e.id)},e.id))}),(0,L.jsxs)(S,{overflow:{vertical:"auto"},padding:[2],children:["info"===I.activeTab&&Z&&(0,L.jsxs)(n.Flex,{column:!0,gap:2,flex:!0,children:[(0,L.jsxs)(w,{ref:j,children:[(0,L.jsx)(k,{children:(0,L.jsx)(i.A,{nodes:J.nodes,links:J.links,portStateLinks:p||h,height:Math.max(200,M||200),selectedNodeId:$,emptyMessage:"",presentation:g,isolationMode:!0,isolationActorId:$})}),(0,L.jsx)(n.Box,{position:"relative",zIndex:1,children:Y?.summary_fields?(0,L.jsx)(T,{node:Z,summaryFields:Y.summary_fields}):(0,L.jsx)(E,{node:Z,portInventory:Q})})]}),(0,L.jsxs)(n.Flex,{children:[X.map(e=>{let[t,r]=e;return(0,L.jsx)(n.Tab,{label:r.label||t,active:I.subTab===t,onClick:()=>D(t)},t)}),!X.length&&(0,L.jsxs)(o.Fragment,{children:[(0,L.jsx)(n.Tab,{label:`Ports (${ee.ports})`,active:"ports"===I.subTab,onClick:()=>D("ports")}),(0,L.jsx)(n.Tab,{label:`Links (${ee.links})`,active:"links"===I.subTab,onClick:()=>D("links")})]}),(0,L.jsx)(n.Tab,{label:`Labels (${ee.labels})`,active:"labels"===I.subTab,onClick:()=>D("labels")}),(0,L.jsx)(n.Tab,{label:`Matches (${ee.matches})`,active:"matches"===I.subTab,onClick:()=>D("matches")})]}),X.map(e=>{let[t,o]=e;return I.subTab!==t?null:"links"===o.source?(0,L.jsx)(A,{node:Z,graphLinks:h,graphNodes:r,navigateTo:G},t):"data"===o.source?(0,L.jsx)(R,{node:Z,tableKey:t,tableDef:o,navigateTo:G,timezone:m,locale:x},t):null}),!X.length&&"ports"===I.subTab&&(0,L.jsx)(B,{node:Z,portInventory:Q,graphLinks:h,graphNodes:r,navigateTo:G,search:I.portSearch,setSearch:O,linkedOnly:I.linkedOnly,setLinkedOnly:W,expandedPort:I.expandedPort,setExpandedPort:V}),!X.length&&"links"===I.subTab&&(0,L.jsx)(A,{node:Z,graphLinks:h,graphNodes:r,navigateTo:G}),"labels"===I.subTab&&(0,L.jsx)(N,{node:Z}),"matches"===I.subTab&&(0,L.jsx)(F,{node:Z})]}),"info"===I.activeTab&&!Z&&(0,L.jsx)(n.Box,{padding:[2],children:(0,L.jsxs)(n.Text,{color:"textDescription",children:["Actor not found: ",$]})})]})]})})}),D=z},15036(e,t,r){r.d(t,{Cd:()=>n,Lc:()=>o,d4:()=>s,fO:()=>a});const o="unknown",n={unknown:0,host_candidate:1,host_facing:2,switch_facing:3},a={low:1,medium:2,high:3},s={lldp:{bullet:"#00ab44",popoverBackground:"#43ea7f",popoverColor:"#06280f",label:"lldp/cdp"},switch_facing:{bullet:"#f5a623",popoverBackground:"#ffc76f",popoverColor:"#2d1700",label:"switch-facing"},host_facing:{bullet:"#a855f7",popoverBackground:"#c4b5fd",popoverColor:"#2e1065",label:"host-facing"},host_candidate:{bullet:"#22d3ee",popoverBackground:"#67e8f9",popoverColor:"#083344",label:"host-candidate"},trunk:{bullet:"#f43f5e",popoverBackground:"#fda4af",popoverColor:"#4c0519",label:"trunk"},access:{bullet:"#a3e635",popoverBackground:"#d9f99d",popoverColor:"#1a2e05",label:"access"},topology:{bullet:"#38bdf8",popoverBackground:"#7dd3fc",popoverColor:"#082f49",label:"unclassified"},idle:{bullet:"#5b6568",popoverBackground:"#5b6568",popoverColor:"#e8efef",label:"idle"},unknown:{bullet:"#667174",popoverBackground:"#b6c0c4",popoverColor:"#1f2a2c",label:"unknown"}}},32981(e,t,r){r.d(t,{DV:()=>i,EF:()=>v,IV:()=>b,Tm:()=>a,Yh:()=>_,Zc:()=>y,gl:()=>w,qk:()=>l,te:()=>c,vC:()=>s,yl:()=>f});r(98992),r(54520),r(72577),r(3949),r(81454),r(37550),r(71517),r(11379),r(93777),r(14190),r(12359),r(86097),r(17273),r(27415),r(19929),r(37583),r(55122),r(20230),r(57268),r(79733),r(25509),r(65223),r(60321),r(41927),r(11632),r(64377),r(66771),r(12516),r(68931),r(52514),r(35694),r(52774),r(49536),r(21926),r(94483),r(16215);var o=r(15036),n=r(49440);const a=(e,t)=>`${e}|${t}`,s=e=>{const t=`${e||""}`.trim().toLowerCase();return"trunk"===t||"access"===t?t:"unknown"},i=e=>{const t=`${e||""}`.trim().toLowerCase();return"switch_facing"===t||"host_facing"===t||"host_candidate"===t?t:"unknown"},l=e=>{const t=`${e||""}`.trim().toLowerCase();return"high"===t||"medium"===t||"low"===t?t:"low"},c=e=>(0,n.xd)((0,n.oU)(e).map(e=>e.toLowerCase())),d=(e,t)=>{const r=s(e),o=s(t);return"trunk"===r||"trunk"===o?"trunk":"access"===r||"access"===o?"access":"unknown"},u=(e,t)=>{const r=i(e),n=i(t);return o.Cd[n]>o.Cd[r]?n:r},h=(e,t)=>{const r=l(e),n=l(t);return o.fO[n]>o.fO[r]?n:r},p=(e,t)=>(0,n.xd)([...e||[],...t||[]]),g=e=>{const t=`${e||""}`.trim();return t&&"-"!==t?t:o.Lc},f=(e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}),m=e=>`${e||""}`.trim().toLowerCase().replace(/[\s_-]+/g,""),x=new Set(["ethernetcsmacd"]),y=e=>{let{status:t,role:r,mode:o}=e;if("discovery"===`${t}`.toLowerCase())return"lldp";const n=i(r);if("unknown"!==n)return n;const a=s(o);return"trunk"===a?"trunk":"access"===a?"access":"topology"===`${t}`.toLowerCase()?"topology":"idle"===`${t}`.toLowerCase()?"idle":"unknown"},b=e=>o.d4[e]||o.d4.unknown,v=(e,t)=>{const r=(e=>{const t=`${e||""}`.trim();if(!t)return[o.Lc];const r=t.split("|").map(e=>g(e)).filter(Boolean);return r.length?[...new Set(r)]:[o.Lc]})(t),n=e?.ports,a=e?.aliases;if(a?.size){const e=r.find(e=>a.has(e));if(e)return a.get(e)}if(n?.size){const e=r.find(e=>n.has(e));if(e)return e;const t=r.find(e=>e&&e!==o.Lc);return t||o.Lc}return r[0]||o.Lc},w=e=>{const t=e?.details?.attributes||{},r=Array.isArray(t?.if_statuses)?t.if_statuses:Array.isArray(t?.ifStatuses)?t.ifStatuses:[],n=Array.isArray(t?.if_names)?t.if_names:Array.isArray(t?.ifNames)?t.ifNames:[],a=Array.isArray(t?.if_indexes)?t.if_indexes:Array.isArray(t?.ifIndexes)?t.ifIndexes:[],f=new Map,y=new Map,b=r.some(e=>Boolean(m(e?.if_type??e?.ifType))),v=(e,t)=>{const r=g(e);r&&r!==o.Lc&&y.set(r,t)};if(r.forEach(e=>{const t=`${e?.if_name??e?.ifName??""}`.trim(),r=`${e?.if_index??e?.ifIndex??""}`.trim(),n=`${e?.admin_status??e?.adminStatus??""}`.trim(),a=`${e?.oper_status??e?.operStatus??""}`.trim(),y=m(e?.if_type??e?.ifType),w=s(e?.link_mode??e?.linkMode),k=i(e?.topology_role??e?.topologyRole),_=l(e?.topology_role_confidence??e?.topologyRoleConfidence),C=c(e?.topology_role_sources??e?.topologyRoleSources);if(b&&!(e=>{const t=m(e);return!!t&&x.has(t)})(y))return;const j=g(t||r);if(!j||j===o.Lc)return;const M=f.get(j);!M||!M.adminStatus&&n||!M.operStatus&&a?f.set(j,{name:j,ifIndex:r,ifType:y,adminStatus:n,operStatus:a,linkMode:d(M?.linkMode,w),topologyRole:u(M?.topologyRole,k),topologyRoleConfidence:h(M?.topologyRoleConfidence,_),topologyRoleSources:p(M?.topologyRoleSources,C),stpState:`${e?.stp_state??e?.stpState??""}`.trim()||"",fdbMacCount:Number(e?.fdb_mac_count??e?.fdbMacCount??0)||0,vlanIds:Array.isArray(e?.vlan_ids??e?.vlanIds)?e?.vlan_ids??e?.vlanIds:[],neighbors:Array.isArray(e?.neighbors)?e.neighbors:[],chartIdSuffix:`${e?.chart_id_suffix??e?.chartIdSuffix??""}`.trim()||"",availableMetrics:Array.isArray(e?.available_metrics??e?.availableMetrics)?e?.available_metrics??e?.availableMetrics:[]}):M&&(M.linkMode=d(M.linkMode,w),M.topologyRole=u(M.topologyRole,k),M.topologyRoleConfidence=h(M.topologyRoleConfidence,_),M.topologyRoleSources=p(M.topologyRoleSources,C)),v(t,j),v(r,j)}),!r.length){const e={ifType:"",adminStatus:"",operStatus:"",linkMode:"unknown",topologyRole:"unknown",topologyRoleConfidence:"low",topologyRoleSources:[],stpState:"",fdbMacCount:0,vlanIds:[],neighbors:[],chartIdSuffix:"",availableMetrics:[]};n.length?n.forEach((t,r)=>{const n=g(t);n&&n!==o.Lc&&!f.has(n)&&(f.set(n,{...e,name:n,ifIndex:""}),v(t,n),v(a[r],n))}):a.forEach(t=>{const r=g(t);r&&r!==o.Lc&&!f.has(r)&&(f.set(r,{...e,name:r,ifIndex:`${t}`}),v(t,r))})}return{ports:f,aliases:y}},k=e=>{const t=Number(e);return!Number.isFinite(t)||t<=0?0:t},_=(e,t)=>{const r=e?.details?.attributes||{},o=k(r?.ports_total??r?.portsTotal);if(o>0)return o;const n=k(t?.ports?.size);return n>0?n:0}},49440(e,t,r){r.d(t,{Dh:()=>C,FL:()=>v,LG:()=>i,Lf:()=>y,NI:()=>d,OR:()=>g,Po:()=>f,SE:()=>h,TV:()=>k,Z4:()=>j,_B:()=>b,_N:()=>w,_l:()=>p,_u:()=>u,cn:()=>s,mt:()=>M,oU:()=>n,pV:()=>x,vF:()=>_,xd:()=>a});r(74423),r(98992),r(54520),r(81454),r(25509),r(65223),r(60321),r(41927),r(11632),r(64377),r(66771),r(12516),r(68931),r(52514),r(35694),r(52774),r(49536),r(21926),r(94483),r(16215);const o=e=>"[unset]"===e||"unset"===e||"[unknown]"===e,n=e=>Array.isArray(e)?e.map(e=>`${e??""}`.trim()).filter(e=>e&&!o(e)):"string"===typeof e?e.split(/[,\s]+/).map(e=>e.trim()).filter(e=>e&&!o(e)):[],a=e=>[...new Set(e.map(e=>`${e??""}`.trim()).filter(Boolean))].sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base",numeric:!0})),s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;const r=Array.isArray(e)?e:[];if(r.length<=t)return r;const o=r.length-t;return[...r.slice(0,t),`+${o} more`]},i=function(e){if(!e||"object"!==typeof e)return"";for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];for(const n of r){const t=e[n];if("string"===typeof t&&t.trim())return t.trim()}return""},l=function(e){if(!e||"object"!==typeof e)return[];for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];for(const n of r)if(Array.isArray(e[n]))return e[n];return[]},c=e=>{const t=l(e||{},"management_addresses","managementAddresses");return a(t.map(e=>"string"===typeof e?e:e&&"object"===typeof e?`${e.address||e.ip||""}`.trim():"").filter(Boolean))},d=e=>{const t=e?.details?.match||{},r=e?.details?.attributes||{},o=e?.details?.labels||{};return[{key:"actor_id",values:a([e?.id])},{key:"ip",values:a([...l(t,"ipAddresses","ip_addresses"),i(r,"management_ip","managementIp"),...c(r)])},{key:"mac",values:a(l(t,"macAddresses","mac_addresses"))},{key:"chassis",values:a(l(t,"chassisIds","chassis_ids"))},{key:"hostname",values:a([...l(t,"hostnames"),i(t,"sys_name","sysName"),i(r,"sys_name","sysName"),i(r,"display_name","displayName"),i(o,"display_name","displayName")])},{key:"netdata",values:a([i(t,"netdataMachineGuid","netdata_machine_guid"),i(t,"netdataNodeId","netdata_node_id")])}].filter(e=>e.values.length)},u=e=>{const t=e?.details?.attributes||{},r=[...n(t.capabilities),...n(t.capabilities_enabled),...n(t.capabilities_supported),...n(t.capabilitiesEnabled),...n(t.capabilitiesSupported)];return a(r.map(e=>e.toLowerCase()))},h=e=>{const t=new Set(e||[]);return t.has("firewall")?"FW":t.has("router")?"R":t.has("bridge")?"SW":t.has("wlanaccesspoint")||t.has("wlan-ap")||t.has("wlanap")?"AP":""},p=e=>{const t=new Set(e||[]);return t.has("firewall")?"firewall":t.has("router")?"router":t.has("bridge")?"switch":t.has("wlanaccesspoint")||t.has("wlan-ap")||t.has("wlanap")?"access_point":t.has("telephone")?"phone":""},g=e=>{const t=e?.details?.attributes||{},r=e?.details?.labels||{},o=e?.details?.match||{};return i(t,"vendor","manufacturer","organization")||i(r,"vendor","manufacturer","organization")||i(o,"vendor","manufacturer","organization")||"-"},f=e=>{if(!e)return!1;return`${e.actorType||e.kind||""}`.toLowerCase().includes("segment")},m=new Set(["device","router","switch","firewall","access_point","server","storage","load_balancer","printer","phone","ups","camera"]),x=e=>{const t=`${e?.actorType||e?.kind||""}`.toLowerCase();return m.has(t)},y=e=>x(e)&&!e?.inferred,b=e=>!f(e)&&!!e?.inferred,v=e=>{const t=`${e?.actorType||e?.kind||""}`.toLowerCase();return t.includes("endpoint")||t.includes("derived")},w=e=>y(e)&&"snmp"===`${e?.source||""}`.trim().toLowerCase(),k=e=>"lldp"===`${e?.protocol||""}`.toLowerCase(),_=e=>{const t=`${e||""}`.toLowerCase();return"lldp"===t||"cdp"===t},C=e=>{let{node:t,lldpNodeIds:r,segmentNodeIds:o}=e;return(e=>{const t=`${e?.actorType||e?.kind||""}`.toLowerCase(),r=`${e?.details?.labels?.actor_class||e?.details?.attributes?.actor_class||""}`.toLowerCase();return"self"===t||"self"===r})(t)?"self":o.has(t.id)?"segment":b(t)?"inferred":r.has(t.id)?"lldp":v(t)?"derived":(e=>!(!e||f(e)||v(e)||b(e))&&x(e))(t)?"snmp":"default"},j=e=>{let{link:t,sourceKind:r,targetKind:o}=e;const n=`${t?.details?.labels?.link_class||""}`.trim().toLowerCase();if("ownership"===n||"ownership"===`${t?.protocol||""}`.trim().toLowerCase())return"ownership";if("socket"===n)return"socket";if(k(t))return"lldp";const a=`${t?.details?.metrics?.inference||t?.details?.state||""}`.trim().toLowerCase(),s=`${t?.details?.metrics?.attachment_mode||""}`.trim().toLowerCase();return"probable"===a||s.startsWith("probable_")?"probable":"segment"===r||"segment"===o?"segment":"derived"===r||"derived"===o?"derived":"snmp"===r||"snmp"===o?"snmp":"default"},M=e=>{let{actorId:t,nodes:r,links:o}=e;const n=new Set;n.add(t);const a=o.filter(e=>(e.source===t||e.target===t)&&(n.add(e.source),n.add(e.target),!0));return{nodes:r.filter(e=>n.has(e.id)),links:a}}}}]);