@inf-monkeys-tech/monkeys-design 2.0.272 → 2.0.273
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/components/capabilities/index.js +3 -3
- package/dist/components/capabilities/index.js.map +1 -1
- package/dist/components/capabilities/index.mjs +3 -3
- package/dist/components/capabilities/index.mjs.map +1 -1
- package/dist/components/visualizations/index.js +1 -1
- package/dist/components/visualizations/index.js.map +1 -1
- package/dist/components/visualizations/index.mjs +1 -1
- package/dist/components/visualizations/index.mjs.map +1 -1
- package/dist/components/workbench/index.js +1 -1
- package/dist/components/workbench/index.js.map +1 -1
- package/dist/components/workbench/index.mjs +1 -1
- package/dist/components/workbench/index.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/sources/{d16ffdc5969b7ca24c61d2ab95f576794238d974bfed006ddf79c17118cfb4ee.tsx → 6eedbebd1935ba71dd71cb6f7090d527a23c5d2f4a2bb1e059b8338dfb3a7bcc.tsx} +1 -1
- package/dist/sources/{1ffd6e7b4cf7c9deda4d231cfdb7d3e07d2017d4e8c1cf007d164addc0a208b3.tsx → 7f65cf7da10339a13ed70bd78c19a89bb254246d50bbe7fe07bbe62eebd98f91.tsx} +1 -1
- package/package.json +1 -1
|
@@ -42,7 +42,7 @@ var Po__namespace = /*#__PURE__*/_interopNamespace(Po);
|
|
|
42
42
|
var wt__namespace = /*#__PURE__*/_interopNamespace(wt);
|
|
43
43
|
var it__namespace = /*#__PURE__*/_interopNamespace(it);
|
|
44
44
|
|
|
45
|
-
var na=Object.defineProperty;var a=(e,t)=>na(e,"name",{value:t,configurable:true});var Rr=zod.z.enum(["top-left","top-center","top-right","bottom-left","bottom-center","bottom-right"]),wr=zod.z.enum(["core","star","potential","all"]),_o=zod.z.record(zod.z.string(),zod.z.union([zod.z.string(),zod.z.number().finite()])).optional(),$o={position:Rr.default("bottom-left"),offsetX:zod.z.number().min(0).max(500).default(12),offsetY:zod.z.number().min(0).max(500).default(12)},aa=zod.z.object({rendering:zod.z.object({mode:zod.z.enum(["canvas","hybrid"]).default("canvas")}).strict().prefault({}),guides:zod.z.array(zod.z.object({id:zod.z.string().min(1),label:zod.z.string(),description:zod.z.string().default(""),...$o}).strict()).optional(),minimap:zod.z.object({...$o,visible:zod.z.boolean().default(true),width:zod.z.number().min(100).max(500).default(168),height:zod.z.number().min(50).max(300).default(108),zoomControls:zod.z.boolean().default(true),avoidViewRail:zod.z.boolean().default(true),interactive:zod.z.boolean().default(true)}).strict().prefault({}),views:zod.z.object({...$o,position:Rr.default("bottom-center"),visible:zod.z.boolean().default(true),initial:wr.default("core"),items:zod.z.array(zod.z.object({id:wr,label:zod.z.string(),center:zod.z.object({x:zod.z.number().finite(),y:zod.z.number().finite()}).strict().optional(),zoomPercent:zod.z.number().min(10).max(1e3).optional()}).strict()).max(4).optional(),animated:zod.z.boolean().default(true)}).strict().prefault({}),interaction:zod.z.object({pan:zod.z.boolean().default(true),zoom:zod.z.boolean().default(true),wheel:zod.z.boolean().default(true),keyboard:zod.z.boolean().default(true),threshold:zod.z.boolean().default(true),openPoints:zod.z.boolean().default(true)}).strict().prefault({}),zoom:zod.z.object({min:zod.z.number().min(10).max(100).default(80),max:zod.z.number().min(100).max(1e3).default(200),step:zod.z.number().min(1).max(100).default(20)}).strict().prefault({}),hover:zod.z.object({enabled:zod.z.boolean().default(true),content:zod.z.enum(["radar","summary"]).default("radar"),delay:zod.z.number().min(0).max(5e3).default(0),trigger:zod.z.enum(["hover","focus","both"]).default("both"),scale:zod.z.number().min(1).max(2).default(1),highlight:zod.z.boolean().default(true),width:zod.z.number().min(160).max(640).default(300),padding:zod.z.number().min(0).max(40).default(12),surface:zod.z.enum(["panel","plain"]).default("panel"),card:zod.z.object({size:zod.z.enum(["sm","md","lg"]).default("sm"),aspectRatio:zod.z.enum(["native","4/3","9/16"]).default("4/3"),style:_o,categoryStyle:_o,relatedStyle:_o,imageFit:zod.z.enum(["cover","contain"]).default("cover"),imageBackdrop:zod.z.enum(["none","blur"]).default("none"),imagePosition:zod.z.string().max(128).optional(),categoryPosition:zod.z.enum(["header","meta","hidden"]).default("meta"),showRelated:zod.z.boolean().default(false),relatedLabel:zod.z.string().max(64).default("\u5173\u8054\u70ED\u8BCD"),maxRelated:zod.z.number().int().min(0).max(8).default(3),showAction:zod.z.boolean().default(true)}).strict().prefault({})}).strict().prefault({}),appearance:zod.z.object({grid:zod.z.boolean().default(true),axes:zod.z.boolean().default(true),axisLabels:zod.z.boolean().default(true),thresholdHandle:zod.z.boolean().default(true),pointSize:zod.z.number().min(2).max(24).default(5),labelScale:zod.z.number().min(.5).max(2).default(1)}).strict().prefault({}),data:zod.z.object({mode:zod.z.enum(["representative","all"]).default("representative")}).strict().prefault({}),performance:zod.z.object({canvasThreshold:zod.z.number().int().min(100).max(1e3).default(300),maxDomLabels:zod.z.number().int().min(0).max(500).default(160),collisionAttempts:zod.z.number().int().min(1).max(2e4).default(4096)}).strict().prefault({})}).strict().superRefine((e,t)=>{for(let[o,r]of [["guides",e.guides],["views",e.views.items]])r&&new Set(r.map(n=>n.id)).size!==r.length&&t.addIssue({code:"custom",path:[o],message:"IDs must be unique"});});function Go(e={}){return aa.parse(e)}a(Go,"resolveQuadrantConfig");var ia={guides:[],data:{mode:"all"},hover:{content:"summary"},views:{items:[{id:"core",label:"\u4E2D\u5FC3"},{id:"star",label:"\u53F3\u4E0A"},{id:"potential",label:"\u5DE6\u4E0A"},{id:"all",label:"\u5168\u89C8"}]}};function kt(e){return {top:e.position.startsWith("top")?e.offsetY:"auto",bottom:e.position.startsWith("bottom")?e.offsetY:"auto",left:e.position.endsWith("left")?e.offsetX:e.position.endsWith("center")?"50%":"auto",right:e.position.endsWith("right")?e.offsetX:"auto",transform:e.position.endsWith("center")?"translateX(-50%)":void 0}}a(kt,"quadrantDockStyle");var At={physics:{repulsion:18e3,linkDistance:100,weakLinkDistance:280,linkStrength:.014,strongLinkStrength:.025,centerStrength:.0015,velocityRetention:.72,maxVelocity:35,collisionPadding:18,collisionPasses:2,cooling:.975,minAlpha:.002,ticksPerFrame:2},nodes:{fontSize:13,iconSize:16,showIcons:true,showLabels:true,focusScale:1.08,borderRadius:999,glow:true,contextOpacity:null},edges:{visible:true,curved:true,widthScale:1,opacityScale:1,glow:true,color:null},interaction:{pan:true,zoom:true,dragNodes:true,keyboard:true,openNodes:true,dragThreshold:4,keyboardStep:15,keyboardFastStep:50},viewport:{minZoom:.08,maxZoom:8,fitMaxZoom:2,fitPadding:60,screenPadding:50,zoomSensitivity:.0012,zoomStep:180,fitOnResize:true},ui:{controls:true,minimap:true,minimapWidth:156,minimapHeight:108,dock:"bottom-left"}};for(let e of Object.values(At))Object.freeze(e);Object.freeze(At);var Cr={repulsion:[0,1e6],linkDistance:[0,2e3],weakLinkDistance:[0,3e3],linkStrength:[0,.2],strongLinkStrength:[0,.2],centerStrength:[0,.1],velocityRetention:[0,.99],maxVelocity:[1,100],collisionPadding:[0,200],collisionPasses:[0,8],cooling:[.5,.995],minAlpha:[.001,.1],ticksPerFrame:[1,10],fontSize:[8,48],iconSize:[8,64],focusScale:[.5,2],borderRadius:[0,999],contextOpacity:[0,1],widthScale:[0,8],opacityScale:[0,5],dragThreshold:[0,30],keyboardStep:[1,200],keyboardFastStep:[1,500],minZoom:[.01,20],maxZoom:[.01,20],fitMaxZoom:[.01,20],fitPadding:[0,500],screenPadding:[0,300],zoomSensitivity:[1e-4,.01],zoomStep:[1,1e3],minimapWidth:[140,360],minimapHeight:[60,300]},Mr=new Set(["collisionPasses","ticksPerFrame"]),Tr=a(e=>typeof e=="object"&&e!==null&&!Array.isArray(e),"record");function Vt(e={}){if(!Tr(e))throw new Error("config must be an object");let t=structuredClone(At);for(let[o,r]of Object.entries(e)){if(!Object.prototype.hasOwnProperty.call(t,o))throw new Error(`Unknown config group: ${o}`);if(!Tr(r))throw new Error(`config.${o} must be an object`);let n=t[o];for(let[s,l]of Object.entries(r)){let c=`config.${o}.${s}`;if(!Object.prototype.hasOwnProperty.call(n,s))throw new Error(`Unknown field: ${c}`);if((s==="contextOpacity"||s==="color")&&l===null){n[s]=null;continue}if(s==="dock"){if(typeof l!="string"||!["bottom-left","bottom-right","top-left","top-right"].includes(l))throw new Error(`${c} must be a supported corner`)}else if(s==="color"){if(typeof l!="string"||!/^#[\da-f]{6}$/i.test(l))throw new Error(`${c} must be a #RRGGBB color or null`)}else if(Cr[s]){let[h,f]=Cr[s];if(typeof l!="number"||!Number.isFinite(l)||l<h||l>f||Mr.has(s)&&!Number.isInteger(l))throw new Error(`${c} must be ${Mr.has(s)?"an integer":"a number"} in [${h}, ${f}]`)}else if(typeof l!="boolean")throw new Error(`${c} must be a boolean`);n[s]=l;}}if(t.viewport.minZoom>t.viewport.maxZoom)throw new Error("config.viewport.minZoom must not exceed maxZoom");return t}a(Vt,"resolveRelationshipGraphConfig");var Wo=a((e,t,o)=>Math.min(o,Math.max(t,e)),"clamp");function so(e,t,o={}){let r=Vt({physics:o.physics??{}}).physics,n=[...e].sort((d,C)=>d.id.localeCompare(C.id,"en")).map((d,C)=>({...d,x:Number.isFinite(d.x)?d.x:Math.cos(C*2.39996)*100,y:Number.isFinite(d.y)?d.y:Math.sin(C*2.39996)*100,vx:0,vy:0,...o.fixedNodes?.has(d.id)?{fx:o.fixedNodes.get(d.id).x,fy:o.fixedNodes.get(d.id).y}:{}})),s=new Map(n.map(d=>[d.id,d])),l=t.flatMap(d=>{let C=s.get(d.sourceId),i=s.get(d.targetId);if(!C||!i||C===i)return [];let g=Number.isFinite(d.associationStrength)?Wo(d.associationStrength,0,1):0;return [{source:C,target:i,strength:g,distance:(C.width+i.width)/2+(r.linkDistance+(1-g)*r.weakLinkDistance)}]}).sort((d,C)=>`${d.source.id}:${d.target.id}`.localeCompare(`${C.source.id}:${C.target.id}`,"en")),c=o.center??{x:3800,y:2800},h=n.length?1:0,f=0;function M(d=1){for(let C=0;C<d&&h>0;C++){for(let i=0;i<n.length;i++)for(let g=i+1;g<n.length;g++){let m=n[i],R=n[g],x=R.x-m.x,T=R.y-m.y;if(Math.abs(x)+Math.abs(T)<.01){let b=(i+g+1)*2.39996;x=Math.cos(b),T=Math.sin(b);}let w=Math.max(1,Math.hypot(x,T)),p=Math.min(8,r.repulsion/Math.max(2500,w*w))*h,N=x/w*p,I=T/w*p;m.vx-=N,m.vy-=I,R.vx+=N,R.vy+=I;}for(let{source:i,target:g,strength:m,distance:R}of l){let x=g.x-i.x,T=g.y-i.y,w=Math.max(1,Math.hypot(x,T)),p=(w-R)*(r.linkStrength+m*r.strongLinkStrength)*h,N=x/w*p,I=T/w*p;i.vx+=N,i.vy+=I,g.vx-=N,g.vy-=I;}f=0;for(let i of n)i.vx=Wo((i.vx+(c.x-i.x)*r.centerStrength*h)*r.velocityRetention,-r.maxVelocity,r.maxVelocity),i.vy=Wo((i.vy+(c.y-i.y)*r.centerStrength*h)*r.velocityRetention,-r.maxVelocity,r.maxVelocity),i.fx!==void 0&&i.fy!==void 0?(i.x=i.fx,i.y=i.fy,i.vx=i.vy=0):(i.x+=i.vx,i.y+=i.vy,f+=i.vx*i.vx+i.vy*i.vy);for(let i=0;i<r.collisionPasses;i++)for(let g=0;g<n.length;g++)for(let m=g+1;m<n.length;m++){let R=n[g],x=n[m],T=x.x-R.x,w=x.y-R.y,p=(R.width+x.width)/2+r.collisionPadding-Math.abs(T),N=(R.height+x.height)/2+r.collisionPadding-Math.abs(w);if(p<=0||N<=0)continue;let I=R.fx===void 0,b=x.fx===void 0,F=Number(I)+Number(b);if(F)if(p<N){let $=Math.sign(T||1)*p/F;I&&(R.x-=$),b&&(x.x+=$);}else {let $=Math.sign(w||1)*N/F;I&&(R.y-=$),b&&(x.y+=$);}}h*=r.cooling,h<r.minAlpha&&(h=0);}return h>0}return a(M,"step"),{step:M,get active(){return h>0},get energy(){return f},positions:a(()=>new Map(n.map(({id:d,x:C,y:i})=>[d,{x:C,y:i}])),"positions"),reheat(){n.length&&(h=Math.max(h,.65));},pin(d,C,i){let g=s.get(d);!g||!Number.isFinite(C)||!Number.isFinite(i)||(g.x=g.fx=C,g.y=g.fy=i,g.vx=g.vy=0,h=Math.max(h,.65));},release(d){let C=s.get(d);if(!C)return;let i=o.fixedNodes?.get(d);C.fx=i?.x,C.fy=i?.y,h=Math.max(h,.65);}}}a(so,"createForceSimulation");var sa=a((e,t,o,r={})=>{let n=[...e].sort((h,f)=>h.id.localeCompare(f.id,"en")),s=new Map;for(let h of t)s.set(h.sourceId,(s.get(h.sourceId)??0)+1),s.set(h.targetId,(s.get(h.targetId)??0)+1);let l=n.map((h,f)=>{let M=f*Math.PI*(3-Math.sqrt(5)),d=h.role==="focus"?0:130*Math.sqrt(f+1);return {...h,x:3800+Math.cos(M)*d,y:2800+Math.sin(M)*d}}),c=so(l,t,r);return c.step(Math.max(1,Math.min(1e3,Number.isFinite(o)?Math.floor(o):280))),new Map([...c.positions()].map(([h,f])=>[h,{...f,degree:s.get(h)??0}]))},"layoutTrendRadarFocusTopology"),lo=a((e,t)=>{if(!e.length)return {x:0,y:0,width:2,height:2};let o=Math.min(...e.map(l=>l.x-l.width/2))-t,r=Math.max(...e.map(l=>l.x+l.width/2))+t,n=Math.min(...e.map(l=>l.y-l.height/2))-t,s=Math.max(...e.map(l=>l.y+l.height/2))+t;return {x:o,y:n,width:Math.max(2,r-o),height:Math.max(2,s-n)}},"calculateTrendRadarFocusTopologyBounds");function Re(...e){return tailwindMerge.twMerge(e.filter(Boolean).join(" "))}a(Re,"cn");var It={width:7600,height:5600};var da=a((e,t,o)=>Math.min(o,Math.max(t,e)),"clamp");var kr=a(e=>{let t=Number.isFinite(e)?da(e,0,1):0,o=.8+Math.pow(t,1.35)*7.2;return {strokeWidth:o,strokeOpacity:.26+t*.7,glowWidth:o+3+t*7,glowOpacity:t<.28?.02:.04+t*.14}},"getTrendRadarFocusTopologyFocusEdgeStyle"),co=a((e,t="dark")=>{let o=a((c,h,f)=>`color-mix(in srgb, ${h} ${f}%, ${c})`,"mix"),r=e.role==="context",n=e.role==="focus",s=o("hsl(var(--monkeys-color-background))",e.solidColor,t==="light"?n?16:r?4:10:n?48:40),l=t==="light"?o(r?"hsl(var(--monkeys-color-muted-foreground))":"hsl(var(--monkeys-color-foreground))",e.solidColor,r?10:38):o(e.color,"hsl(var(--monkeys-color-foreground))",n?45:34);return {background:s,foreground:l,border:o(s,l,n?82:67)}},"getTrendRadarFocusTopologyNodeTone"),ca=a((e,t)=>{let o=t.x-e.x,r=t.y-e.y,n=Math.max(Math.hypot(o,r),1),s=Math.min(72,Math.max(18,n*.13)),l=e.id.localeCompare(t.id)>=0?1:-1;return {x:(e.x+t.x)/2+r/n*s*l,y:(e.y+t.y)/2-o/n*s*l}},"getTrendRadarFocusTopologyEdgeControlPoint"),Sr=a((e,t)=>{let o=ca(e,t);return `M ${e.x} ${e.y} Q ${o.x} ${o.y} ${t.x} ${t.y}`},"getTrendRadarFocusTopologyEdgePath");var Pa={"align-justify":lucideReact.AlignJustify,grid:lucideReact.Grid3X3,layers:lucideReact.Layers,"map-pin":lucideReact.MapPin,mountain:lucideReact.Mountain,package:lucideReact.Package,paintbrush:lucideReact.Paintbrush,palette:lucideReact.Palette,scissors:lucideReact.Scissors,shield:lucideReact.Shield,"shield-check":lucideReact.ShieldCheck,shirt:lucideReact.Shirt,snowflake:lucideReact.Snowflake,sparkles:lucideReact.Sparkles,user:lucideReact.UserRound,users:lucideReact.UsersRound},Na=a((e,t)=>{if(e.role!=="focus")return "var(--trend-radar-muted-color)";let o=Math.pow(e.associationStrength,1.2)*86;return `color-mix(in srgb, var(--trend-radar-muted-color), ${t.color} ${o}%)`},"edgeStroke");function Nr({model:e,config:t=At,onOpenNode:o,renderNodeAction:r,relationshipLabel:n,colorMode:s="dark",onNodePointerDown:l,onNodeKeyDown:c}){let h=a((d,C)=>t.edges.curved?Sr(d,C):`M ${d.x} ${d.y} L ${C.x} ${C.y}`,"edgePath"),f=Qe.useId().replace(/:/g,""),M=Qe.useMemo(()=>new Map(e.nodes.map(d=>[d.id,d])),[e.nodes]);return jsxRuntime.jsxs("div",{className:"trend-radar-focus-topology-background pointer-events-none relative size-full overflow-visible","data-radar-focus-topology-surface":"true","data-radar-focus-topology-color-mode":s,children:[t.edges.visible&&jsxRuntime.jsxs("svg",{viewBox:`0 0 ${It.width} ${It.height}`,className:"absolute inset-0 size-full overflow-visible","aria-hidden":"true",children:[jsxRuntime.jsx("defs",{children:jsxRuntime.jsx("filter",{id:f,x:"-40%",y:"-40%",width:"180%",height:"180%",children:jsxRuntime.jsx("feGaussianBlur",{stdDeviation:"7"})})}),jsxRuntime.jsx("g",{"data-radar-focus-topology-edge-layer":"context",children:e.edges.filter(d=>d.role!=="focus").map(d=>{let C=M.get(d.sourceId),i=M.get(d.targetId);return !C||!i?null:jsxRuntime.jsx("path",{d:h(C,i),fill:"none",stroke:t.edges.color??"var(--trend-radar-muted-color)",strokeWidth:Math.max(.8,.72+Math.pow(d.associationStrength,1.08)*2.2)*t.edges.widthScale,strokeOpacity:Math.min(1,(d.role==="related"?.12:.045)*t.edges.opacityScale),strokeLinecap:"round",strokeLinejoin:"round"},d.id)})}),jsxRuntime.jsx("g",{"data-radar-focus-topology-edge-layer":"focus",children:e.edges.filter(d=>d.role==="focus").map(d=>{let C=M.get(d.sourceId),i=M.get(d.targetId);if(!C||!i)return null;let g=h(C,i),m=t.edges.color??Na(d,C.id===e.subjectId?i:C),R=kr(d.associationStrength);return jsxRuntime.jsxs("g",{"data-radar-focus-topology-focus-edge":d.id,"data-radar-focus-topology-association-strength":d.associationStrength.toFixed(4),children:[jsxRuntime.jsx("path",{d:g,fill:"none",stroke:m,strokeWidth:R.glowWidth*t.edges.widthScale,strokeOpacity:t.edges.glow?Math.min(1,R.glowOpacity*t.edges.opacityScale):0,strokeLinecap:"round",filter:`url(#${f})`}),jsxRuntime.jsx("path",{d:g,fill:"none",stroke:m,strokeWidth:R.strokeWidth*t.edges.widthScale,strokeOpacity:Math.min(1,R.strokeOpacity*t.edges.opacityScale),strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("title",{children:n(d)})})]},d.id)})})]}),e.nodes.map(d=>{let C=Pa[d.iconName]??lucideReact.Palette,i=co(d,s),g=d.role==="focus",m=d.role==="context",R=!!(o&&!g);return jsxRuntime.jsxs("div",{className:Re("absolute transition-[filter,opacity,transform] duration-200",g?"z-20":d.role==="related"?"z-10":"z-0",m&&s==="dark"&&"opacity-[0.18] brightness-[0.72] saturate-[0.3] hover:!opacity-100 hover:!filter-none"),style:{"--radar-node-background":i.background,"--radar-node-foreground":i.foreground,"--radar-node-border":i.border,left:d.x,opacity:m?t.nodes.contextOpacity??(s==="dark"?d.contextOpacity:void 0):void 0,top:d.y,width:d.width,height:d.height,transform:`translate(-50%, -50%) scale(${g?t.nodes.focusScale:1})`,transformOrigin:"center center"},"data-radar-focus-topology-node-anchor":d.ref.id,children:[jsxRuntime.jsxs("button",{type:"button",disabled:!R&&!l,"aria-label":d.label,title:d.taxonomy?.secondaryLabel?`${d.label} \xB7 ${d.taxonomy.secondaryLabel}`:d.label,onPointerDown:x=>{x.stopPropagation(),l?.(x,d);},onKeyDown:x=>c?.(x,d),onClick:x=>{x.stopPropagation(),R&&o?.(d);},className:Re("focus-visible:ring-primary pointer-events-auto flex size-full items-center justify-center gap-2 rounded-full border-0 px-3 text-left text-[0.8125rem] leading-none font-semibold outline-hidden transition-[box-shadow,filter,transform] focus-visible:ring-2",R&&"cursor-pointer hover:brightness-110",!R&&"cursor-default disabled:opacity-100"),style:{fontSize:t.nodes.fontSize,borderRadius:t.nodes.borderRadius,color:i.foreground,backgroundColor:i.background,boxShadow:t.nodes.glow?g?`inset 0 0 0 2px ${i.border}, 0 0 34px ${d.color}66`:d.role==="related"?`inset 0 0 0 1px ${i.border}, 0 0 18px ${d.color}24`:`inset 0 0 0 1px ${i.border}`:`inset 0 0 0 ${g?2:1}px ${i.border}`},"data-radar-focus-topology-node":d.ref.id,"data-world-x":d.x.toFixed(2),"data-world-y":d.y.toFixed(2),"data-radar-focus-topology-node-role":d.role,children:[t.nodes.showIcons&&jsxRuntime.jsx(C,{className:"shrink-0",size:t.nodes.iconSize,color:i.foreground,strokeWidth:1.8,"aria-hidden":"true"}),t.nodes.showLabels&&jsxRuntime.jsx("span",{className:"min-w-0 truncate",style:{color:"inherit"},children:d.label})]}),r?.(d)]},d.id)})]})}a(Nr,"TrendRadarFocusTopologySurface");function Er({model:e,config:t,onCameraChange:o,colorMode:r="light",ariaLabel:n,onOpenNode:s,renderNodeAction:l,nodeAction:c,onNodeAction:h,relationshipLabel:f,controls:M,onNodePositionChange:d}){if(c?.maxActive!==void 0&&(!Number.isSafeInteger(c.maxActive)||c.maxActive<1))throw new TypeError("Node action maxActive must be a positive integer.");if(c?.size!==void 0&&(!Number.isFinite(c.size)||c.size<16||c.size>48))throw new TypeError("Node action size must be between 16 and 48.");let C=Qe.useMemo(()=>Vt(t),[t]),i=Qe.useMemo(()=>new Set(c?.activeNodeIds??[]),[c?.activeNodeIds]),g=JSON.stringify(C.physics),m=Qe.useMemo(()=>JSON.parse(g),[g]),R=JSON.stringify(C.viewport),x=Qe.useMemo(()=>JSON.parse(R),[R]),{interaction:T,ui:w}=C,p=Qe.useRef(null),N=Qe.useRef(),I=JSON.stringify({nodes:e.nodes.map(({id:k,x:S,y:Y,width:X,height:K})=>({id:k,x:S,y:Y,width:X,height:K})),edges:e.edges.map(({sourceId:k,targetId:S,associationStrength:Y})=>({sourceId:k,targetId:S,associationStrength:Y}))}),b=Qe.useMemo(()=>{let k=JSON.parse(I);return so(k.nodes,k.edges,{physics:m})},[I,m]),[F,$]=Qe.useState(()=>b.positions()),[W,E]=Qe.useState(false),[y,L]=Qe.useState({x:0,y:0,z:1}),G=Qe.useRef(o);G.current=o,Qe.useEffect(()=>{G.current?.(y);},[y]);let O=Qe.useRef(y),H=Qe.useRef(),q=Qe.useRef(false),[v,z]=Qe.useState({width:1,height:1}),J=Qe.useRef(false),_=Qe.useMemo(()=>e.nodes.map(k=>({...k,...F.get(k.id)??{}})),[e.nodes,F]),ae=Qe.useRef(_);ae.current=_;let te=Qe.useCallback(k=>{O.current=k,L(k);},[]),Z=Qe.useCallback(()=>{if(N.current!==void 0)return;if(J.current&&!H.current){b.step(1400),$(b.positions()),E(false);return}E(b.active);let k=a(()=>{b.step(m.ticksPerFrame),$(b.positions()),b.active?N.current=requestAnimationFrame(k):(N.current=void 0,E(false));},"tick");N.current=requestAnimationFrame(k);},[b,m.ticksPerFrame]),ge=Qe.useCallback(()=>{let k=p.current;if(!k)return;let S=lo(ae.current,x.fitPadding),Y=Math.max(x.minZoom,Math.min(x.maxZoom,x.fitMaxZoom,(k.clientWidth-x.screenPadding*2)/S.width,(k.clientHeight-x.screenPadding*2)/S.height));te({x:k.clientWidth/(2*Y)-S.x-S.width/2,y:k.clientHeight/(2*Y)-S.y-S.height/2,z:Y});},[te,x]);Qe.useEffect(()=>{J.current=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches??false;let k=b.positions();return $(k),ae.current=ae.current.map(S=>({...S,...k.get(S.id)})),ge(),Z(),()=>{N.current!==void 0&&cancelAnimationFrame(N.current),N.current=void 0;let S=H.current;S?.target.hasPointerCapture?.(S.pointerId)&&S.target.releasePointerCapture(S.pointerId),H.current=void 0;}},[b,ge,Z]),Qe.useEffect(()=>{let k=p.current;if(!k)return;let S=new ResizeObserver(()=>{z({width:k.clientWidth,height:k.clientHeight}),x.fitOnResize&&ge();});return S.observe(k),()=>S.disconnect()},[ge,x.fitOnResize]);let ve=Qe.useCallback((k,S,Y)=>{if(!T.zoom)return;let X=O.current,K=Math.max(x.minZoom,Math.min(x.maxZoom,X.z*Math.exp(-k*x.zoomSensitivity)));te({x:X.x-S/X.z+S/K,y:X.y-Y/X.z+Y/K,z:K});},[te,x,T.zoom]);Qe.useEffect(()=>{let k=p.current;if(!k)return;let S=a(Y=>{if(H.current||!T.zoom)return;Y.preventDefault();let X=k.getBoundingClientRect();ve(Y.deltaY,Y.clientX-X.left,Y.clientY-X.top);},"wheel");return k.addEventListener("wheel",S,{passive:false}),()=>k.removeEventListener("wheel",S)},[ve,T.zoom]);let ie=a((k,S)=>{if(k.button!==0||H.current||(S?!T.dragNodes:!T.pan))return;q.current=false;let Y=O.current;H.current={pointerId:k.pointerId,id:S?.id,startX:k.clientX,startY:k.clientY,x:S?.x??Y.x,y:S?.y??Y.y,moved:false,target:k.currentTarget},k.currentTarget.setPointerCapture(k.pointerId),S&&(b.pin(S.id,S.x,S.y),Z());},"begin"),Se=a(k=>{let S=H.current;if(!(!S||S.pointerId!==k.pointerId)){if(H.current=void 0,q.current=S.moved,S.id){let Y=b.positions().get(S.id);b.release(S.id),Z(),S.moved&&Y&&d?.(S.id,Y);}S.target.hasPointerCapture(k.pointerId)&&S.target.releasePointerCapture(k.pointerId);}},"end"),Le={...e,nodes:_},de=new Map(_.map(k=>[k.id,k])),U=lo([...e.nodes,..._],200);return jsxRuntime.jsxs("section",{ref:p,className:"relationship-graph bg-background relative size-full overflow-hidden",style:{cursor:T.pan?void 0:"default",touchAction:T.pan||T.dragNodes?"none":"auto"},role:"region","aria-label":n,"data-radar-focus-topology":"true","data-graph-engine":"native-force","data-force-running":W,"data-radar-focus-topology-camera":`${y.x.toFixed(2)},${y.y.toFixed(2)},${y.z.toFixed(3)}`,onPointerDown:k=>{k.target.closest("button")||ie(k);},onPointerMove:k=>{let S=H.current;if(!S||S.pointerId!==k.pointerId)return;let Y=k.clientX-S.startX,X=k.clientY-S.startY;S.moved||(S.moved=Math.hypot(Y,X)>T.dragThreshold),S.moved&&(S.id?(b.pin(S.id,S.x+Y/O.current.z,S.y+X/O.current.z),$(b.positions()),Z()):te({...O.current,x:S.x+Y/O.current.z,y:S.y+X/O.current.z}));},onPointerUp:Se,onPointerCancel:Se,onLostPointerCapture:Se,onClickCapture:k=>{q.current&&(k.preventDefault(),k.stopPropagation(),q.current=false);},children:[jsxRuntime.jsx("div",{style:{position:"absolute",left:0,top:0,width:It.width,height:It.height,transformOrigin:"0 0",transform:`translate(${y.x*y.z}px, ${y.y*y.z}px) scale(${y.z})`},children:jsxRuntime.jsx(Nr,{model:Le,config:C,colorMode:r,relationshipLabel:f,onOpenNode:T.openNodes?s:void 0,renderNodeAction:l??(c&&h?k=>{if(c.nodeKinds&&!c.nodeKinds.includes(k.ref.kind))return null;let S=i.has(k.id),Y=c.disabled||!S&&c.maxActive!==void 0&&i.size>=c.maxActive,X=`${S?c.activeLabel??c.label:c.label}: ${k.label}`,K=S?lucideReact.Check:lucideReact.Plus,re=c.size??24;return jsxRuntime.jsx("button",{type:"button","data-relationship-node-action":k.id,"aria-label":X,title:X,"aria-pressed":S,disabled:Y,className:"grid place-items-center rounded-md border border-current bg-card text-foreground shadow-sm outline-none hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-40",style:{position:"absolute",right:0,top:0,width:re,height:re,color:co(k,r).foreground,transform:`translate(50%, -50%) scale(${c.keepScreenSize===false?1:1/y.z})`,transformOrigin:"center"},onPointerDown:be=>be.stopPropagation(),onKeyDown:be=>be.stopPropagation(),onClick:be=>{be.stopPropagation(),h(k);},children:jsxRuntime.jsx(K,{size:re*.6,"aria-hidden":"true"})})}:void 0),onNodePointerDown:T.dragNodes?(k,S)=>ie(k,S):void 0,onNodeKeyDown:(k,S)=>{if(!T.keyboard||!T.dragNodes)return;let Y={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]}[k.key];if(!Y)return;k.preventDefault(),k.stopPropagation();let X=(k.shiftKey?T.keyboardFastStep:T.keyboardStep)/O.current.z,K={x:S.x+Y[0]*X,y:S.y+Y[1]*X};b.pin(S.id,K.x,K.y),$(b.positions()),b.release(S.id),Z(),d?.(S.id,K);}})}),(w.controls||w.minimap)&&jsxRuntime.jsxs("div",{className:"relationship-minimap","data-radar-focus-topology-minimap":"true",style:{width:w.minimapWidth,left:w.dock.endsWith("left")?12:"auto",right:w.dock.endsWith("right")?12:"auto",top:w.dock.startsWith("top")?12:"auto",bottom:w.dock.startsWith("bottom")?12:"auto"},children:[w.controls&&jsxRuntime.jsxs("div",{className:"relationship-controls",children:[jsxRuntime.jsx("button",{type:"button","aria-label":M.zoomOut,onClick:()=>ve(x.zoomStep,v.width/2,v.height/2),disabled:!T.zoom||y.z<=x.minZoom,children:jsxRuntime.jsx(lucideReact.Minus,{size:15})}),jsxRuntime.jsxs("output",{children:[Math.round(y.z*100),"%"]}),jsxRuntime.jsx("button",{type:"button","aria-label":M.zoomIn,onClick:()=>ve(-x.zoomStep,v.width/2,v.height/2),disabled:!T.zoom||y.z>=x.maxZoom,children:jsxRuntime.jsx(lucideReact.Plus,{size:15})}),jsxRuntime.jsx("button",{type:"button","aria-label":M.zoomToFit,onClick:ge,children:jsxRuntime.jsx(lucideReact.LocateFixed,{size:15})})]}),w.minimap&&jsxRuntime.jsx("button",{type:"button",className:"relationship-minimap-map",disabled:!T.pan,"aria-label":M.minimap,onClick:k=>{if(k.detail===0){ge();return}let S=k.currentTarget.getBoundingClientRect(),Y=(k.clientX-S.left)/S.width*U.width+U.x,X=(k.clientY-S.top)/S.height*U.height+U.y;te({...y,x:v.width/(2*y.z)-Y,y:v.height/(2*y.z)-X});},children:jsxRuntime.jsxs("svg",{viewBox:`${U.x} ${U.y} ${U.width} ${U.height}`,style:{height:w.minimapHeight},preserveAspectRatio:"none","aria-hidden":"true",children:[e.edges.map(k=>{let S=de.get(k.sourceId),Y=de.get(k.targetId);return S&&Y?jsxRuntime.jsx("line",{x1:S.x,y1:S.y,x2:Y.x,y2:Y.y,stroke:"currentColor",strokeWidth:2,opacity:.2},k.id):null}),_.map(k=>jsxRuntime.jsx("circle",{cx:k.x,cy:k.y,r:k.role==="focus"?14:8,fill:k.color},k.id)),jsxRuntime.jsx("rect",{x:-y.x,y:-y.y,width:v.width/y.z,height:v.height/y.z,fill:"currentColor",fillOpacity:.07,stroke:"currentColor",strokeWidth:4})]})})]})]})}a(Er,"RelationshipGraph2D");var Vo={locale:"en-US",messages:{pagination:{navigation:"Pagination",first:"First",previous:"Previous",next:"Next",last:"Last",page:a(({page:e,pageCount:t})=>`Page ${e} of ${t}`,"page"),currentPage:a(({page:e,pageCount:t})=>`Page ${e} of ${t}, current page`,"currentPage"),emptyResults:"0 results",range:a(({start:e,end:t,total:o})=>`${e}-${t} of ${o}`,"range"),selected:a(({count:e})=>`${e} selected`,"selected"),pageSize:"Items per page",loadBatchSize:"Items per load",perLoad:"Items per load",jumpToPage:"Jump to page",pages:"pages",clickToJump:"Click to jump to a page"},dialog:{close:"Close dialog"},dropdownMenu:{actions:"Actions"},loading:{spinner:"Loading"},layout:{resizePanels:"Resize panels",expandPanel:"Expand",collapsePanel:"Collapse",movePanel:"Move",moveBefore:"Move earlier",moveAfter:"Move later"},steps:{label:"Progress",current:"Current",completed:"Completed",error:"Error",disabled:"Disabled"},numberInput:{increment:"Increase value",decrement:"Decrease value"},passwordInput:{showPassword:"Show password",hidePassword:"Hide password"},multiSelect:{placeholder:"Select options",empty:"No options",removeOption:a(({value:e})=>`Remove ${e}`,"removeOption")},table:{dragColumn:a(({columnId:e})=>`Drag column ${e}`,"dragColumn"),resizeColumn:a(({columnId:e})=>`Resize column ${e}`,"resizeColumn"),sortColumn:a(({columnId:e})=>e?`Sort column ${e}`:"Sort column","sortColumn"),loadingRow:"Loading table row"},toolbar:{theme:{label:"Appearance",toggle:"Toggle theme",auto:"Auto",light:"Light",dark:"Dark"},language:{label:"Language",switch:"Switch language"}},toast:{errorTitle:"Error",warningTitle:"Warning",defaultErrorDescription:"Something went wrong.",defaultWarningDescription:"Please check and try again."},dataExplorer:{viewTree:{actions:"More actions",expand:"Expand",collapse:"Collapse",loading:"Loading...",empty:"No views",error:"Unable to load views"}},workbench:{relationshipGraph:{zoomOut:"Zoom out",zoomIn:"Zoom in",zoomToFit:"Fit graph",minimap:"Graph overview"},collection:{label:"Collection",loading:"Loading items",empty:"No items",loadError:"Unable to load items",refreshError:"Unable to refresh items",retry:"Retry",loadingMore:"Loading more items",permission:"You do not have permission to view this content",offline:"You appear to be offline",requestAccess:"Request access"},interactiveTable:{columnActions:"Column actions",freezeColumn:"Freeze to left",freezeEndColumn:"Freeze to right",unfreezeColumn:"Unfreeze from left",unfreezeEndColumn:"Unfreeze from right",unfreezeAllColumns:"Unfreeze all columns",resetColumnWidth:"Reset column width",frozenColumnTitle:"Frozen column"}},agentWorkbench:{label:"Session activity",reasoning:"Reasoning",plan:"Plan",taskNoDetail:"No additional details",modes:{chat:"Chat",work:"Work"},composer:{send:"Send message",stop:"Stop generating",queue:"Queue message",attach:"Add photos or files",voice:"Start voice input",webSearch:"Web search",chatMode:"Chat mode",model:"Model",reasoning:"Reasoning effort",permissions:"Permissions",removeAttachment:"Remove attachment",editQueued:"Edit queued message",deleteQueued:"Delete queued message",moveUp:"Move message up",moveDown:"Move message down",queued:"Queued messages",uploading:"Uploading",uploadFailed:"Upload failed",retryAttachment:"Retry attachment upload",noModels:"No models available",message:"Message",attachmentOnly:"Attachment",reasoningOptions:{low:"Low",medium:"Medium",high:"High",xhigh:"Extra high"},permissionOptions:{"approval-required":"Approval required","auto-approve":"Auto approve","full-access":"Full access"}},quickStart:{label:"Quick start",back:"Back",addFile:"Add file"},tool:{input:"Input",output:"Output",status:{pending:"Pending",running:"Running",completed:"Completed",failed:"Error",denied:"Denied"}},approval:{approve:"Approve",reject:"Reject",approved:"Approved",rejected:"Rejected"},artifact:{pending:"Preparing",ready:"Ready",failed:"Failed",open:a(({name:e})=>`Open ${e}`,"open")},run:{stopping:"Stopping...",stoppedAfter:a(({duration:e})=>`You stopped after ${e}`,"stoppedAfter")},process:{running:"Working",queued:"Queued",waitingApproval:"Waiting for approval",failed:"Failed",stopped:"Stopped",processed:"Processed",processedFor:a(({duration:e})=>`Worked for ${e}`,"processedFor"),completedCount:a(({completed:e,total:t})=>`${e}/${t} completed`,"completedCount")},artifactWorkspace:{outputs:"Outputs",sources:"Sources",viewAll:"View all",toggleSummary:"Toggle files",tabs:"Open files",closeTab:a(({name:e})=>`Close ${e}`,"closeTab"),closeWorkspace:"Close workspace",close:"Close",closeOthers:"Close other tabs",closeRight:"Close tabs to the right",closeAll:"Close all tabs",kinds:{audio:"Audio",file:"File",html:"HTML",image:"Image",markdown:"Markdown",pdf:"PDF",presentation:"Presentation",video:"Video",web:"Web page"},collapse:"Collapse",maximize:"Full screen",restore:"Exit full screen",download:a(({name:e})=>`Download ${e}`,"download"),openExternal:a(({name:e})=>`Open ${e} in a new window`,"openExternal"),loading:"Loading preview...",failed:"Preview unavailable",retry:"Try again"},usage:{label:"Context usage",context:a(({used:e,total:t})=>`${e} / ${t} tokens`,"context")},navigation:{search:"Search agents and sessions",searchSessions:"Search sessions",searchShortcut:"Focus search",clearSearch:"Clear search",tabsLabel:"Agent workbench navigation",agents:"Agents",sessions:"Sessions",newAgent:"New Agent",newSession:"New Session",capabilities:"Capabilities & Extensions",settings:"Agent Settings",allAgents:"All Agents",recentSessions:"Recent Sessions",chat:"Chat",work:"Work",chats:"Chats",builtIn:"Built-in",noDescription:"No description",loading:"Loading...",emptyAgents:"No agents yet",emptySessions:"No sessions yet",noResults:"No matching results",retry:"Retry",pin:"Pin",unpin:"Unpin",rename:"Rename",delete:"Delete",actions:"Actions",save:"Save",cancel:"Cancel",running:"Running",completed:"Completed",failed:"Failed",contextUsage:a(({percent:e})=>`${e}% context used`,"contextUsage")},details:{title:"Task details",description:"Summary and workspace activity",duration:"Duration",updated:"Updated",model:"Model",mode:"Mode",permissions:"Permissions",tokenUsage:"Token usage",summary:"Summary",summaryEmpty:"No summary is available yet.",summaryFailed:"The summary could not be generated.",highlights:"Highlights",pendingItems:"Pending items",tabs:{label:"Task detail views",summary:"Summary",workspace:"Workspace"},status:{queued:"Queued",running:"Running",waiting_approval:"Waiting for approval",stopping:"Stopping",stopped:"Stopped",completed:"Completed",failed:"Failed"},state:{loading:{title:"Loading task details",description:"Restoring the latest session activity."},empty:{title:"No task selected",description:"Select a task to inspect its details."},error:{title:"Unable to load task details",description:"Try again after the session is available."}},actions:{close:"Close task details",copySummary:"Copy summary",retry:"Retry",retrySummary:"Retry summary",resume:"Resume",continueInNewTask:"Continue in new task",editAndRerun:"Edit and rerun",export:"Export"},workspace:{diffs:"Code changes",files:"Files",terminals:"Terminals",tests:"Tests",artifacts:"Artifacts",exitCode:a(({code:e})=>`Exit code ${e}`,"exitCode"),diffStatus:{added:"Added",modified:"Modified",deleted:"Deleted",renamed:"Renamed"},fileOperation:{upsert:"Updated",delete:"Deleted"}}}}}};function Ar(e,t){return t?{beautiful:{...e.beautiful,...t.beautiful},pagination:{...e.pagination,...t.pagination},dialog:{...e.dialog,...t.dialog},dropdownMenu:{...e.dropdownMenu,...t.dropdownMenu},loading:{...e.loading,...t.loading},layout:{...e.layout,...t.layout},steps:{...e.steps,...t.steps},numberInput:{...e.numberInput,...t.numberInput},passwordInput:{...e.passwordInput,...t.passwordInput},multiSelect:{...e.multiSelect,...t.multiSelect},table:{...e.table,...t.table},toolbar:{theme:{...e.toolbar.theme,...t.toolbar?.theme},language:{...e.toolbar.language,...t.toolbar?.language}},toast:{...e.toast,...t.toast},dataExplorer:{viewTree:{...e.dataExplorer.viewTree,...t.dataExplorer?.viewTree}},workbench:{relationshipGraph:{zoomOut:"Zoom out",zoomIn:"Zoom in",zoomToFit:"Fit graph",minimap:"Graph overview",...e.workbench.relationshipGraph,...t.workbench?.relationshipGraph},collection:{...e.workbench.collection,...t.workbench?.collection},interactiveTable:{...e.workbench.interactiveTable,...t.workbench?.interactiveTable}},agentWorkbench:{...e.agentWorkbench,...t.agentWorkbench,modes:{...e.agentWorkbench.modes,...t.agentWorkbench?.modes},composer:{...e.agentWorkbench.composer,...t.agentWorkbench?.composer},quickStart:{...e.agentWorkbench.quickStart,...t.agentWorkbench?.quickStart},tool:{...e.agentWorkbench.tool,...t.agentWorkbench?.tool,status:{...e.agentWorkbench.tool.status,...t.agentWorkbench?.tool?.status}},approval:{...e.agentWorkbench.approval,...t.agentWorkbench?.approval},artifact:{...e.agentWorkbench.artifact,...t.agentWorkbench?.artifact},run:{...e.agentWorkbench.run,...t.agentWorkbench?.run},process:{...e.agentWorkbench.process,...t.agentWorkbench?.process},artifactWorkspace:{...e.agentWorkbench.artifactWorkspace,...t.agentWorkbench?.artifactWorkspace},usage:{...e.agentWorkbench.usage,...t.agentWorkbench?.usage},navigation:{...e.agentWorkbench.navigation,...t.agentWorkbench?.navigation},details:{...e.agentWorkbench.details,...t.agentWorkbench?.details,tabs:{...e.agentWorkbench.details.tabs,...t.agentWorkbench?.details?.tabs},status:{...e.agentWorkbench.details.status,...t.agentWorkbench?.details?.status},state:{loading:{...e.agentWorkbench.details.state.loading,...t.agentWorkbench?.details?.state?.loading},empty:{...e.agentWorkbench.details.state.empty,...t.agentWorkbench?.details?.state?.empty},error:{...e.agentWorkbench.details.state.error,...t.agentWorkbench?.details?.state?.error}},actions:{...e.agentWorkbench.details.actions,...t.agentWorkbench?.details?.actions},workspace:{...e.agentWorkbench.details.workspace,...t.agentWorkbench?.details?.workspace,diffStatus:{...e.agentWorkbench.details.workspace.diffStatus,...t.agentWorkbench?.details?.workspace?.diffStatus},fileOperation:{...e.agentWorkbench.details.workspace.fileOperation,...t.agentWorkbench?.details?.workspace?.fileOperation}}}}}:e}a(Ar,"mergeMonkeysLocaleMessages");var Bo={locale:Vo.locale,messages:Ar(Vo.messages)};var La=Object.freeze({}),Da=Object.freeze({}),Ir=Symbol.for("@inf-monkeys-tech/monkeys-design/provider-context@1");function Fa(){return Object.freeze({locale:Qe.createContext({...Bo,provided:false}),theme:Qe.createContext({provided:false}),direction:Qe.createContext({provided:false}),environment:Qe.createContext({provided:false,environment:La,portal:Da})})}a(Fa,"createMonkeysProviderContexts");function Oa(){let e=globalThis,t=e[Ir];if(t)return t;let o=Fa();return Object.defineProperty(e,Ir,{value:o,enumerable:false,configurable:false,writable:false}),o}a(Oa,"getMonkeysProviderContexts");var go=Oa(),Lr=go.locale,_a=go.theme,$a=go.direction;go.environment;function Dr(){return Qe.useContext(Lr).messages}a(Dr,"useMonkeysLocaleMessages");function Fr(){let e=Qe.useContext(Lr),t=Qe.useContext(_a),o=Qe.useContext($a),r=e.provided||t.provided||o.provided;return Qe.useMemo(()=>r?{dir:o.direction,"data-monkeys-direction":o.direction,"data-monkeys-locale":e.locale,"data-monkeys-theme":t.themeId,"data-monkeys-theme-mode":t.resolvedTheme?.colorMode}:{},[o.direction,e.locale,r,t.resolvedTheme?.colorMode,t.themeId])}a(Fr,"useMonkeysComponentAttributes");var ke=a((e,t,o,r)=>Number.isFinite(e)?Math.min(r,Math.max(o,e)):t,"finite");function yo(e={}){return {layout:{mode:e.layout?.mode??"clustered",radius:ke(e.layout?.radius,18,1,1e3),depth:ke(e.layout?.depth,8,0,1e3),spacing:ke(e.layout?.spacing,1.8,.1,50),iterations:Math.round(ke(e.layout?.iterations,60,0,200)),linkStrength:ke(e.layout?.linkStrength,.035,0,.5)},camera:{fieldOfView:ke(e.camera?.fieldOfView,48,15,100),fitPadding:ke(e.camera?.fitPadding,1.2,1,3),rotateSpeed:ke(e.camera?.rotateSpeed,.5,.01,5),autoRotate:e.camera?.autoRotate??false,autoRotateSpeed:ke(e.camera?.autoRotateSpeed,.5,-10,10),enablePan:e.camera?.enablePan??true,enableZoom:e.camera?.enableZoom??true},nodes:{size:ke(e.nodes?.size,.8,.05,10),opacity:ke(e.nodes?.opacity,1,0,1),glow:e.nodes?.glow??true,defaultColor:e.nodes?.defaultColor,groupColors:e.nodes?.groupColors??{}},edges:{opacity:ke(e.edges?.opacity,.4,0,1),dimOpacity:ke(e.edges?.dimOpacity,.08,0,1),defaultColor:e.edges?.defaultColor},labels:{visible:e.labels?.visible??true,fontSize:ke(e.labels?.fontSize,12,8,32),maxVisible:Math.round(ke(e.labels?.maxVisible,100,0,1e3)),collisionPadding:ke(e.labels?.collisionPadding,6,0,50),color:e.labels?.color},controls:{visible:e.controls?.visible??true,placement:e.controls?.placement??"top-right",resetLabel:e.controls?.resetLabel,zoomInLabel:e.controls?.zoomInLabel,zoomOutLabel:e.controls?.zoomOutLabel},interaction:{enabled:e.interaction?.enabled??true,openOn:e.interaction?.openOn??"click",hitRadius:ke(e.interaction?.hitRadius,14,4,100)},minHeight:ke(e.minHeight,320,0,2e3),pixelRatioLimit:ke(e.pixelRatioLimit,2,.5,3)}}a(yo,"resolveRelationship3DConfig");var Or=a(e=>Array.from(e).reduce((t,o)=>Math.imul(t^o.charCodeAt(0),16777619)>>>0,2166136261),"hash"),Dt=Math.PI*(3-Math.sqrt(5));function Yo(e,t,o={}){let{layout:r}=yo(o),n=new Set;for(let i of e){if(!i.id||n.has(i.id))throw new TypeError("3D graph node IDs must be nonempty and unique.");n.add(i.id);}let s=[...e].sort((i,g)=>i.id<g.id?-1:i.id>g.id?1:0),l=[...new Set(s.map(i=>i.group??""))].sort(),c=new Map,h=new Map(l.map(i=>[i,s.filter(g=>(g.group??"")===i).length])),f=s.map((i,g)=>{let m=i.group??"",R=c.get(m)??0;c.set(m,R+1);let x,T,w;if(r.mode==="provided"){if(!i.position||![i.position.x,i.position.y,i.position.z].every(Number.isFinite))throw new TypeError("Provided 3D layouts require finite x, y and z for every node.");({x,y:T,z:w}=i.position);}else if(r.mode==="sphere"){let p=1-2*(g+.5)/Math.max(s.length,1),N=Math.sqrt(1-p*p);x=Math.cos(g*Dt)*N*r.radius,T=p*r.radius,w=Math.sin(g*Dt)*N*r.depth;}else {let p=l.indexOf(m),N=p*Dt-Math.PI/2,I=l.length>1?r.radius*.6:0,b=Math.sqrt(R)*r.spacing,F=Or(m)/4294967295*Math.PI*2;x=Math.cos(N)*I+Math.cos(R*Dt+F)*b,T=Math.sin(N)*I*.8+Math.sin(R*Dt+F)*b*.8,w=(l.length>1?(p/(l.length-1)-.5)*r.depth:0)+Math.sin(R*Dt*1.37+F)*Math.min(r.depth*.4,Math.sqrt(h.get(m))*.7);}return {...i,x,y:T,z:w,anchorX:x,anchorY:T,anchorZ:w}}),M=new Map(f.map(i=>[i.id,i])),d=t.filter(i=>n.has(i.sourceId)&&n.has(i.targetId)&&i.sourceId!==i.targetId),C=new Map(f.map(i=>[i.id,new Set]));if(d.forEach(i=>{C.get(i.sourceId).add(i.targetId),C.get(i.targetId).add(i.sourceId);}),r.mode==="clustered")for(let i=0;i<r.iterations;i++){for(let R of d){let x=M.get(R.sourceId),T=M.get(R.targetId),w=r.linkStrength*((x.group??"")===(T.group??"")?1:.12)*ke(R.weight,.5,0,1);for(let p of ["x","y","z"]){let N=(T[p]-x[p])*w;x[p]+=N,T[p]-=N;}}let g=new Map,m=r.spacing;for(let R of f){R.x+=(R.anchorX-R.x)*.1,R.y+=(R.anchorY-R.y)*.1,R.z+=(R.anchorZ-R.z)*.1;let x=Math.floor(R.x/m),T=Math.floor(R.y/m),w=Math.floor(R.z/m);for(let I=-1;I<=1;I++)for(let b=-1;b<=1;b++)for(let F=-1;F<=1;F++)for(let $ of g.get(`${x+I},${T+b},${w+F}`)??[]){let W=R.x-$.x,E=R.y-$.y,y=R.z-$.z,L=Math.hypot(W,E,y);if(L>=m)continue;let G=(m-L)*.22/Math.max(L,.001),O=Or(R.id+$.id)/4294967295*Math.PI*2,H=L?W:Math.cos(O)*.001,q=L?E:Math.sin(O)*.001,v=L?y:.001;R.x+=H*G,R.y+=q*G,R.z+=v*G,$.x-=H*G,$.y-=q*G,$.z-=v*G;}let p=`${x},${T},${w}`,N=g.get(p)??[];N.push(R),g.set(p,N);}}return {points:f,links:d,neighbors:C}}a(Yo,"buildRelationship3DLayout");function Ba({nodes:e,edges:t,ariaLabel:o,config:r,selectedNodeId:n,onNodeSelect:s,onUnavailable:l,className:c,emptyLabel:h="No related nodes"}){let f=Dr(),M=Qe.useRef(null),d=Qe.useRef(new Map),C=Qe.useRef({onNodeSelect:s,onUnavailable:l,selectedNodeId:n,nodes:e});C.current={onNodeSelect:s,onUnavailable:l,selectedNodeId:n,nodes:e};let i=Qe.useRef({reset:a(()=>{},"reset"),zoomIn:a(()=>{},"zoomIn"),zoomOut:a(()=>{},"zoomOut"),invalidate:a(()=>{},"invalidate")}),[g,m]=Qe.useState(false),[R,x]=Qe.useState(0),T=JSON.stringify([e,t,r]),w=Qe.useMemo(()=>Yo(e,t,r),[T]),p=Qe.useMemo(()=>yo(r),[T]);Qe.useEffect(()=>{i.current.invalidate();},[n]),Qe.useEffect(()=>{let I=a(()=>{let $=M.current&&getComputedStyle(M.current);return ["--radar-canvas","--background","--radar-series-one","--primary"].map(W=>$?.getPropertyValue(W)).join("|")},"signature"),b=I(),F=new MutationObserver(()=>{let $=I();$!==b&&(b=$,x(W=>W+1));});for(let $=M.current?.parentElement;$;$=$.parentElement)F.observe($,{attributes:true,attributeFilter:["class","style","data-theme"]});return ()=>F.disconnect()},[]),Qe.useEffect(()=>{let I=M.current;if(!I||!w.points.length)return;let b=false,F=[],$=a(()=>{for(;F.length;)F.pop()();},"release");m(false);let W=a(()=>{$(),b||(m(true),C.current.onUnavailable?.("webgl-unavailable"));},"fail");return Promise.all([import('three'),import('three/examples/jsm/controls/OrbitControls.js')]).then(([E,{OrbitControls:y}])=>{if(b)return;let L=new E.WebGLRenderer({antialias:true});F.push(()=>{L.dispose(),L.forceContextLoss(),L.domElement.remove();}),L.setPixelRatio(Math.min(window.devicePixelRatio||1,p.pixelRatioLimit)),L.domElement.style.cssText="position:absolute;inset:0;width:100%;height:100%;touch-action:none",L.domElement.setAttribute("aria-hidden","true"),I.prepend(L.domElement);let G=new E.Scene,O=getComputedStyle(I),H=a((V,j)=>{let ue=document.createElement("span");ue.style.color=`hsl(${O.getPropertyValue(V).trim()||O.getPropertyValue(j).trim()})`,I.append(ue);let Ie=new E.Color(getComputedStyle(ue).color);return ue.remove(),Ie},"token");G.background=H("--radar-canvas","--background");let q=p.nodes.defaultColor?new E.Color(p.nodes.defaultColor):H("--radar-series-one","--primary"),v=new Map(w.points.map(V=>[V.id,new E.Color(V.color??p.nodes.groupColors[V.group??""]??q)])),z=new Map(w.points.map(V=>[V.id,new E.Vector3(V.x,V.y,V.z)])),J=new E.PerspectiveCamera(p.camera.fieldOfView,1,.01,1e5),_=new y(J,L.domElement);F.push(()=>_.dispose()),_.enableDamping=true,_.dampingFactor=.1,_.rotateSpeed=p.camera.rotateSpeed,_.enablePan=p.camera.enablePan,_.enableZoom=p.camera.enableZoom;let ae=window.matchMedia?.("(prefers-reduced-motion: reduce)"),te=a(()=>{_.autoRotate=p.camera.autoRotate&&!ae?.matches,ce();},"motionChange");_.autoRotate=p.camera.autoRotate&&!ae?.matches,_.autoRotateSpeed=p.camera.autoRotateSpeed,ae?.addEventListener("change",te),F.push(()=>ae?.removeEventListener("change",te));let Z=64,ge=new Uint8Array(Z*Z*4);for(let V=0;V<Z;V++)for(let j=0;j<Z;j++){let ue=Math.hypot(j+.5-Z/2,V+.5-Z/2)/(Z/2),Ie=p.nodes.glow?ue<.1?1:Math.exp(-ue*7.5):ue<.45?1:0;ge.set([255,255,255,Math.round(Ie*255)],(V*Z+j)*4);}let ve=new E.DataTexture(ge,Z,Z,E.RGBAFormat);ve.minFilter=ve.magFilter=E.LinearFilter,ve.needsUpdate=true,F.push(()=>ve.dispose());let ie=w.points.map(V=>{let j=new E.SpriteMaterial({map:ve,color:v.get(V.id),transparent:true,depthWrite:false,blending:p.nodes.glow?E.AdditiveBlending:E.NormalBlending});F.push(()=>j.dispose());let ue=new E.Sprite(j);return ue.position.copy(z.get(V.id)),G.add(ue),ue}),Se=new E.BufferGeometry;F.push(()=>Se.dispose()),Se.setAttribute("position",new E.Float32BufferAttribute(w.links.flatMap(V=>[...z.get(V.sourceId).toArray(),...z.get(V.targetId).toArray()]),3));let Le=new Float32Array(w.links.length*6);Se.setAttribute("color",new E.BufferAttribute(Le,3));let de=new E.LineBasicMaterial({vertexColors:true,transparent:true,opacity:p.edges.opacity,depthWrite:false});F.push(()=>de.dispose()),G.add(new E.LineSegments(Se,de));let U=new E.Box3().setFromPoints([...z.values()]),k=U.getCenter(new E.Vector3),S=U.getSize(new E.Vector3),Y=Math.max(S.length()/2,1),X=0,K=0,re=false,be=0,xe,De,Ne,Ke=false,ye=new E.Vector3,ft=[...w.points].sort((V,j)=>(w.neighbors.get(j.id)?.size??0)-(w.neighbors.get(V.id)?.size??0)),Je=a(()=>{let V=E.MathUtils.degToRad(J.fov/2),j=Y*p.camera.fitPadding/Math.sin(Math.atan(Math.tan(V)*Math.min(J.aspect,1)));_.target.copy(k),J.position.copy(k).add(new E.Vector3(0,0,j)),J.near=Math.max(j/1e4,.01),J.far=Math.max(j*100,1e3),_.minDistance=Math.max(Y*.15,.1),_.maxDistance=j*8,J.updateProjectionMatrix(),_.update(),ce();},"fit");function ce(){!b&&!be&&(be=requestAnimationFrame(st));}a(ce,"invalidate");function st(){if(be=0,b||!X||!K||document.hidden)return;_.update(),J.updateMatrixWorld();let V=C.current.selectedNodeId,j=xe??V,ue=j?w.neighbors.get(j):void 0;(!Ke||Ne!==j)&&(Ne=j,Ke=true,w.links.forEach((me,$e)=>{let u=!j||me.sourceId===j||me.targetId===j,P=new E.Color(me.color??p.edges.defaultColor??v.get(me.targetId)).multiplyScalar(u?1:p.edges.dimOpacity);Le.set([...P.toArray(),...P.toArray()],$e*6);}),Se.attributes.color.needsUpdate=true),ie.forEach((me,$e)=>{let u=w.points[$e],P=j===u.id;me.scale.setScalar((u.size&&Number.isFinite(u.size)?Math.min(10,Math.max(.05,u.size)):p.nodes.size)*(P?1.5:1)),me.material.opacity=p.nodes.opacity*(!j||P||ue?.has(u.id)?1:.3);});let Ie=new Map,ze=j?[...ft.filter(me=>me.id===j),...ft.filter(me=>me.id!==j)]:ft,Oe=0;for(let me of ze){let $e=d.current.get(me.id);if(!$e)continue;ye.copy(z.get(me.id)).project(J);let u=(ye.x+1)*X/2,P=(-ye.y+1)*K/2+8,A=Math.min(180,Math.max(p.labels.fontSize*me.label.length*.7,p.labels.fontSize*2)),oe=p.labels.fontSize+8,se={x:u-A/2,y:P,w:A,h:oe},Me=[];for(let Ge=Math.floor(se.x/64);Ge<=Math.floor((se.x+A+p.labels.collisionPadding)/64);Ge++)for(let Pe=Math.floor(P/32);Pe<=Math.floor((P+oe+p.labels.collisionPadding)/32);Pe++)Me.push(`${Ge},${Pe}`);let we=Me.some(Ge=>Ie.get(Ge)?.some(Pe=>se.x<Pe.x+Pe.w+p.labels.collisionPadding&&se.x+A+p.labels.collisionPadding>Pe.x&&P<Pe.y+Pe.h+p.labels.collisionPadding&&P+oe+p.labels.collisionPadding>Pe.y)),je=p.labels.visible&&Oe<p.labels.maxVisible&&ye.z>-1&&ye.z<1&&se.x>0&&se.x+A<X&&P>0&&P+oe<K&&(!we||me.id===j);if($e.style.display=je?"block":"none",$e.tabIndex=je&&p.interaction.enabled?0:-1,je){$e.style.transform=`translate(${u}px,${P}px) translate(-50%,0)`,$e.style.color=p.labels.color??"#"+v.get(me.id).getHexString(),$e.style.opacity=!j||me.id===j||ue?.has(me.id)?"1":"0.4";for(let Ge of Me){let Pe=Ie.get(Ge)??[];Pe.push(se),Ie.set(Ge,Pe);}Oe++;}}L.render(G,J),_.autoRotate&&ce();}a(st,"draw"),_.addEventListener("change",ce),F.push(()=>{_.removeEventListener("change",ce),cancelAnimationFrame(be);}),i.current={reset:Je,zoomIn:a(()=>{J.position.sub(_.target).multiplyScalar(.8).add(_.target),_.update(),ce();},"zoomIn"),zoomOut:a(()=>{J.position.sub(_.target).multiplyScalar(1.25).add(_.target),_.update(),ce();},"zoomOut"),invalidate:ce},F.push(()=>{i.current={reset:a(()=>{},"reset"),zoomIn:a(()=>{},"zoomIn"),zoomOut:a(()=>{},"zoomOut"),invalidate:a(()=>{},"invalidate")};});let ht=new ResizeObserver(()=>{let V=I.getBoundingClientRect();X=V.width,K=V.height,!(!X||!K)&&(J.aspect=X/K,J.updateProjectionMatrix(),L.setSize(X,K,false),re?ce():(re=true,Je()));});ht.observe(I),F.push(()=>ht.disconnect());let ot=a(V=>{let j=L.domElement.getBoundingClientRect(),ue,Ie=p.interaction.hitRadius;for(let ze of w.points){if(ye.copy(z.get(ze.id)).project(J),ye.z<-1||ye.z>1)continue;let Oe=Math.hypot((ye.x+1)*X/2-(V.clientX-j.left),(-ye.y+1)*K/2-(V.clientY-j.top));Oe<Ie&&(ue=ze,Ie=Oe);}return ue?C.current.nodes.find(ze=>ze.id===ue.id):void 0},"hit"),Ct=a(V=>{De={x:V.clientX,y:V.clientY,pointerId:V.pointerId};},"onDown"),Mt=a(V=>{xe=ot(V)?.id,L.domElement.style.cursor=xe&&p.interaction.enabled?"pointer":"grab",ce();},"onMove"),qe=a(()=>{xe=void 0,De=void 0,ce();},"onLeave"),Ze=a(V=>{let j=De?.pointerId===V.pointerId&&Math.hypot(V.clientX-De.x,V.clientY-De.y)<5;if(De=void 0,j&&p.interaction.enabled&&p.interaction.openOn==="click"){let ue=ot(V);ue&&C.current.onNodeSelect?.(ue);}},"onUp"),Ae=a(V=>{if(p.interaction.enabled&&p.interaction.openOn==="double-click"){let j=ot(V);j&&C.current.onNodeSelect?.(j);}},"onDouble"),Fe=a(V=>{V.preventDefault(),W();},"contextLost"),_e=a(()=>{document.hidden||ce();},"visibility"),lt={pointerdown:Ct,pointermove:Mt,pointerup:Ze,pointerleave:qe,pointercancel:qe,dblclick:Ae,webglcontextlost:Fe};for(let[V,j]of Object.entries(lt))L.domElement.addEventListener(V,j);document.addEventListener("visibilitychange",_e),F.push(()=>{for(let[V,j]of Object.entries(lt))L.domElement.removeEventListener(V,j);document.removeEventListener("visibilitychange",_e);});}).catch(W),()=>{b=true,$();}},[w,p,R]);let N=p.controls.placement;return jsxRuntime.jsxs("div",{ref:M,role:"group","aria-label":o,className:c,"data-monkeys-component":"relationship-graph-3d","data-renderer-status":g?"unavailable":"webgl",style:{position:"relative",width:"100%",height:"100%",minHeight:p.minHeight,overflow:"hidden",background:"hsl(var(--radar-canvas, var(--background)))"},children:[e.map(I=>jsxRuntime.jsx("button",{ref:b=>{b?d.current.set(I.id,b):d.current.delete(I.id);},type:"button",disabled:!p.interaction.enabled,tabIndex:g&&p.interaction.enabled?0:-1,"aria-pressed":n===I.id,title:I.meta,onClick:()=>{p.interaction.enabled&&(g||p.interaction.openOn==="click")&&C.current.onNodeSelect?.(I);},onDoubleClick:()=>{p.interaction.enabled&&p.interaction.openOn==="double-click"&&C.current.onNodeSelect?.(I);},onKeyDown:b=>{p.interaction.enabled&&p.interaction.openOn==="double-click"&&(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),C.current.onNodeSelect?.(I));},className:"font-sans focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary",style:{display:g?"inline-block":"none",position:g?"relative":"absolute",transform:g?"none":void 0,opacity:g?1:void 0,color:g?"hsl(var(--foreground))":void 0,left:0,top:0,border:0,background:"transparent",padding:2,maxWidth:180,fontSize:p.labels.fontSize,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",cursor:p.interaction.enabled?"pointer":"default"},children:I.label},I.id)),!e.length&&jsxRuntime.jsx("div",{role:"status",className:"grid size-full place-items-center text-sm text-muted-foreground",children:h}),g&&jsxRuntime.jsx("div",{role:"alert",className:"relative p-3 text-foreground",children:f.workbench.collection.loadError}),!g&&p.controls.visible&&jsxRuntime.jsxs("div",{className:"absolute z-10 flex items-center gap-1 rounded-lg border border-border bg-background/90 p-1 text-foreground",style:{[N.startsWith("top")?"top":"bottom"]:12,[N.endsWith("left")?"left":"right"]:12},children:[p.camera.enableZoom&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",className:"rounded p-1.5 hover:bg-muted","aria-label":p.controls.zoomOutLabel??"Zoom out",title:p.controls.zoomOutLabel??"Zoom out",onClick:()=>i.current.zoomOut(),children:jsxRuntime.jsx(lucideReact.Minus,{size:14})}),jsxRuntime.jsx("button",{type:"button",className:"rounded p-1.5 hover:bg-muted","aria-label":p.controls.zoomInLabel??"Zoom in",title:p.controls.zoomInLabel??"Zoom in",onClick:()=>i.current.zoomIn(),children:jsxRuntime.jsx(lucideReact.Plus,{size:14})})]}),jsxRuntime.jsxs("button",{type:"button",className:"flex items-center gap-1 rounded p-1.5 text-xs hover:bg-muted","aria-label":p.controls.resetLabel??"Reset view",onClick:()=>i.current.reset(),children:[jsxRuntime.jsx(lucideReact.LocateFixed,{size:14}),p.controls.resetLabel??"Reset view"]})]})]})}a(Ba,"RelationshipGraph3D");function Ho(e,{size:t=128,inner:o="rgba(255,255,255,1)",middle:r="rgba(255,255,255,.42)"}={}){let n=document.createElement("canvas");n.width=t,n.height=t;let s=n.getContext("2d");if(!s)throw new Error("Unable to initialize the glow texture canvas.");let l=t/2,c=s.createRadialGradient(l,l,0,l,l,l);c.addColorStop(0,o),c.addColorStop(.16,r),c.addColorStop(.48,"rgba(255,255,255,.12)"),c.addColorStop(1,"rgba(255,255,255,0)"),s.fillStyle=c,s.fillRect(0,0,t,t);let h=new e.CanvasTexture(n);return h.colorSpace=e.SRGBColorSpace,h}a(Ho,"createRadialTexture");var Gr=`
|
|
45
|
+
var na=Object.defineProperty;var a=(e,t)=>na(e,"name",{value:t,configurable:true});var Rr=zod.z.enum(["top-left","top-center","top-right","bottom-left","bottom-center","bottom-right"]),wr=zod.z.enum(["core","star","potential","all"]),_o=zod.z.record(zod.z.string(),zod.z.union([zod.z.string(),zod.z.number().finite()])).optional(),$o={position:Rr.default("bottom-left"),offsetX:zod.z.number().min(0).max(500).default(12),offsetY:zod.z.number().min(0).max(500).default(12)},aa=zod.z.object({rendering:zod.z.object({mode:zod.z.enum(["canvas","hybrid"]).default("canvas")}).strict().prefault({}),guides:zod.z.array(zod.z.object({id:zod.z.string().min(1),label:zod.z.string(),description:zod.z.string().default(""),...$o}).strict()).optional(),minimap:zod.z.object({...$o,visible:zod.z.boolean().default(true),width:zod.z.number().min(100).max(500).default(168),height:zod.z.number().min(50).max(300).default(108),zoomControls:zod.z.boolean().default(true),avoidViewRail:zod.z.boolean().default(true),interactive:zod.z.boolean().default(true)}).strict().prefault({}),views:zod.z.object({...$o,position:Rr.default("bottom-center"),visible:zod.z.boolean().default(true),initial:wr.default("core"),items:zod.z.array(zod.z.object({id:wr,label:zod.z.string(),center:zod.z.object({x:zod.z.number().finite(),y:zod.z.number().finite()}).strict().optional(),zoomPercent:zod.z.number().min(10).max(1e3).optional()}).strict()).max(4).optional(),animated:zod.z.boolean().default(true)}).strict().prefault({}),interaction:zod.z.object({pan:zod.z.boolean().default(true),zoom:zod.z.boolean().default(true),wheel:zod.z.boolean().default(true),keyboard:zod.z.boolean().default(true),threshold:zod.z.boolean().default(true),openPoints:zod.z.boolean().default(true)}).strict().prefault({}),zoom:zod.z.object({min:zod.z.number().min(10).max(100).default(80),max:zod.z.number().min(100).max(1e3).default(200),step:zod.z.number().min(1).max(100).default(20)}).strict().prefault({}),hover:zod.z.object({enabled:zod.z.boolean().default(true),content:zod.z.enum(["radar","summary"]).default("radar"),delay:zod.z.number().min(0).max(5e3).default(0),trigger:zod.z.enum(["hover","focus","both"]).default("both"),scale:zod.z.number().min(1).max(2).default(1),highlight:zod.z.boolean().default(true),width:zod.z.number().min(160).max(640).default(300),padding:zod.z.number().min(0).max(40).default(12),surface:zod.z.enum(["panel","plain"]).default("panel"),card:zod.z.object({size:zod.z.enum(["sm","md","lg"]).default("sm"),aspectRatio:zod.z.enum(["native","4/3","9/16"]).default("4/3"),style:_o,categoryStyle:_o,relatedStyle:_o,imageFit:zod.z.enum(["cover","contain"]).default("cover"),imageBackdrop:zod.z.enum(["none","blur"]).default("none"),imagePosition:zod.z.string().max(128).optional(),categoryPosition:zod.z.enum(["header","meta","hidden"]).default("meta"),showRelated:zod.z.boolean().default(false),relatedLabel:zod.z.string().max(64).default("\u5173\u8054\u70ED\u8BCD"),maxRelated:zod.z.number().int().min(0).max(8).default(3),showAction:zod.z.boolean().default(true)}).strict().prefault({})}).strict().prefault({}),appearance:zod.z.object({grid:zod.z.boolean().default(true),axes:zod.z.boolean().default(true),axisLabels:zod.z.boolean().default(true),thresholdHandle:zod.z.boolean().default(true),pointSize:zod.z.number().min(2).max(24).default(5),labelScale:zod.z.number().min(.5).max(2).default(1)}).strict().prefault({}),data:zod.z.object({mode:zod.z.enum(["representative","all"]).default("representative")}).strict().prefault({}),performance:zod.z.object({canvasThreshold:zod.z.number().int().min(100).max(1e3).default(300),maxDomLabels:zod.z.number().int().min(0).max(500).default(160),collisionAttempts:zod.z.number().int().min(1).max(2e4).default(4096)}).strict().prefault({})}).strict().superRefine((e,t)=>{for(let[o,r]of [["guides",e.guides],["views",e.views.items]])r&&new Set(r.map(n=>n.id)).size!==r.length&&t.addIssue({code:"custom",path:[o],message:"IDs must be unique"});});function Go(e={}){return aa.parse(e)}a(Go,"resolveQuadrantConfig");var ia={guides:[],data:{mode:"all"},hover:{content:"summary"},views:{items:[{id:"core",label:"\u4E2D\u5FC3"},{id:"star",label:"\u53F3\u4E0A"},{id:"potential",label:"\u5DE6\u4E0A"},{id:"all",label:"\u5168\u89C8"}]}};function kt(e){return {top:e.position.startsWith("top")?e.offsetY:"auto",bottom:e.position.startsWith("bottom")?e.offsetY:"auto",left:e.position.endsWith("left")?e.offsetX:e.position.endsWith("center")?"50%":"auto",right:e.position.endsWith("right")?e.offsetX:"auto",transform:e.position.endsWith("center")?"translateX(-50%)":void 0}}a(kt,"quadrantDockStyle");var At={physics:{repulsion:18e3,linkDistance:100,weakLinkDistance:280,linkStrength:.014,strongLinkStrength:.025,centerStrength:.0015,velocityRetention:.72,maxVelocity:35,collisionPadding:18,collisionPasses:2,cooling:.975,minAlpha:.002,ticksPerFrame:2},nodes:{fontSize:13,iconSize:16,showIcons:true,showLabels:true,focusScale:1.08,borderRadius:999,glow:true,contextOpacity:null},edges:{visible:true,curved:true,widthScale:1,opacityScale:1,glow:true,color:null},interaction:{pan:true,zoom:true,dragNodes:true,keyboard:true,openNodes:true,dragThreshold:4,keyboardStep:15,keyboardFastStep:50},viewport:{minZoom:.08,maxZoom:8,fitMaxZoom:2,fitPadding:60,screenPadding:50,zoomSensitivity:.0012,zoomStep:180,fitOnResize:true},ui:{controls:true,minimap:true,minimapWidth:156,minimapHeight:108,dock:"bottom-left"}};for(let e of Object.values(At))Object.freeze(e);Object.freeze(At);var Cr={repulsion:[0,1e6],linkDistance:[0,2e3],weakLinkDistance:[0,3e3],linkStrength:[0,.2],strongLinkStrength:[0,.2],centerStrength:[0,.1],velocityRetention:[0,.99],maxVelocity:[1,100],collisionPadding:[0,200],collisionPasses:[0,8],cooling:[.5,.995],minAlpha:[.001,.1],ticksPerFrame:[1,10],fontSize:[8,48],iconSize:[8,64],focusScale:[.5,2],borderRadius:[0,999],contextOpacity:[0,1],widthScale:[0,8],opacityScale:[0,5],dragThreshold:[0,30],keyboardStep:[1,200],keyboardFastStep:[1,500],minZoom:[.01,20],maxZoom:[.01,20],fitMaxZoom:[.01,20],fitPadding:[0,500],screenPadding:[0,300],zoomSensitivity:[1e-4,.01],zoomStep:[1,1e3],minimapWidth:[140,360],minimapHeight:[60,300]},Mr=new Set(["collisionPasses","ticksPerFrame"]),Tr=a(e=>typeof e=="object"&&e!==null&&!Array.isArray(e),"record");function Vt(e={}){if(!Tr(e))throw new Error("config must be an object");let t=structuredClone(At);for(let[o,r]of Object.entries(e)){if(!Object.prototype.hasOwnProperty.call(t,o))throw new Error(`Unknown config group: ${o}`);if(!Tr(r))throw new Error(`config.${o} must be an object`);let n=t[o];for(let[s,l]of Object.entries(r)){let c=`config.${o}.${s}`;if(!Object.prototype.hasOwnProperty.call(n,s))throw new Error(`Unknown field: ${c}`);if((s==="contextOpacity"||s==="color")&&l===null){n[s]=null;continue}if(s==="dock"){if(typeof l!="string"||!["bottom-left","bottom-right","top-left","top-right"].includes(l))throw new Error(`${c} must be a supported corner`)}else if(s==="color"){if(typeof l!="string"||!/^#[\da-f]{6}$/i.test(l))throw new Error(`${c} must be a #RRGGBB color or null`)}else if(Cr[s]){let[h,f]=Cr[s];if(typeof l!="number"||!Number.isFinite(l)||l<h||l>f||Mr.has(s)&&!Number.isInteger(l))throw new Error(`${c} must be ${Mr.has(s)?"an integer":"a number"} in [${h}, ${f}]`)}else if(typeof l!="boolean")throw new Error(`${c} must be a boolean`);n[s]=l;}}if(t.viewport.minZoom>t.viewport.maxZoom)throw new Error("config.viewport.minZoom must not exceed maxZoom");return t}a(Vt,"resolveRelationshipGraphConfig");var Wo=a((e,t,o)=>Math.min(o,Math.max(t,e)),"clamp");function so(e,t,o={}){let r=Vt({physics:o.physics??{}}).physics,n=[...e].sort((d,C)=>d.id.localeCompare(C.id,"en")).map((d,C)=>({...d,x:Number.isFinite(d.x)?d.x:Math.cos(C*2.39996)*100,y:Number.isFinite(d.y)?d.y:Math.sin(C*2.39996)*100,vx:0,vy:0,...o.fixedNodes?.has(d.id)?{fx:o.fixedNodes.get(d.id).x,fy:o.fixedNodes.get(d.id).y}:{}})),s=new Map(n.map(d=>[d.id,d])),l=t.flatMap(d=>{let C=s.get(d.sourceId),i=s.get(d.targetId);if(!C||!i||C===i)return [];let g=Number.isFinite(d.associationStrength)?Wo(d.associationStrength,0,1):0;return [{source:C,target:i,strength:g,distance:(C.width+i.width)/2+(r.linkDistance+(1-g)*r.weakLinkDistance)}]}).sort((d,C)=>`${d.source.id}:${d.target.id}`.localeCompare(`${C.source.id}:${C.target.id}`,"en")),c=o.center??{x:3800,y:2800},h=n.length?1:0,f=0;function M(d=1){for(let C=0;C<d&&h>0;C++){for(let i=0;i<n.length;i++)for(let g=i+1;g<n.length;g++){let m=n[i],R=n[g],x=R.x-m.x,T=R.y-m.y;if(Math.abs(x)+Math.abs(T)<.01){let b=(i+g+1)*2.39996;x=Math.cos(b),T=Math.sin(b);}let w=Math.max(1,Math.hypot(x,T)),p=Math.min(8,r.repulsion/Math.max(2500,w*w))*h,N=x/w*p,I=T/w*p;m.vx-=N,m.vy-=I,R.vx+=N,R.vy+=I;}for(let{source:i,target:g,strength:m,distance:R}of l){let x=g.x-i.x,T=g.y-i.y,w=Math.max(1,Math.hypot(x,T)),p=(w-R)*(r.linkStrength+m*r.strongLinkStrength)*h,N=x/w*p,I=T/w*p;i.vx+=N,i.vy+=I,g.vx-=N,g.vy-=I;}f=0;for(let i of n)i.vx=Wo((i.vx+(c.x-i.x)*r.centerStrength*h)*r.velocityRetention,-r.maxVelocity,r.maxVelocity),i.vy=Wo((i.vy+(c.y-i.y)*r.centerStrength*h)*r.velocityRetention,-r.maxVelocity,r.maxVelocity),i.fx!==void 0&&i.fy!==void 0?(i.x=i.fx,i.y=i.fy,i.vx=i.vy=0):(i.x+=i.vx,i.y+=i.vy,f+=i.vx*i.vx+i.vy*i.vy);for(let i=0;i<r.collisionPasses;i++)for(let g=0;g<n.length;g++)for(let m=g+1;m<n.length;m++){let R=n[g],x=n[m],T=x.x-R.x,w=x.y-R.y,p=(R.width+x.width)/2+r.collisionPadding-Math.abs(T),N=(R.height+x.height)/2+r.collisionPadding-Math.abs(w);if(p<=0||N<=0)continue;let I=R.fx===void 0,b=x.fx===void 0,F=Number(I)+Number(b);if(F)if(p<N){let $=Math.sign(T||1)*p/F;I&&(R.x-=$),b&&(x.x+=$);}else {let $=Math.sign(w||1)*N/F;I&&(R.y-=$),b&&(x.y+=$);}}h*=r.cooling,h<r.minAlpha&&(h=0);}return h>0}return a(M,"step"),{step:M,get active(){return h>0},get energy(){return f},positions:a(()=>new Map(n.map(({id:d,x:C,y:i})=>[d,{x:C,y:i}])),"positions"),reheat(){n.length&&(h=Math.max(h,.65));},pin(d,C,i){let g=s.get(d);!g||!Number.isFinite(C)||!Number.isFinite(i)||(g.x=g.fx=C,g.y=g.fy=i,g.vx=g.vy=0,h=Math.max(h,.65));},release(d){let C=s.get(d);if(!C)return;let i=o.fixedNodes?.get(d);C.fx=i?.x,C.fy=i?.y,h=Math.max(h,.65);}}}a(so,"createForceSimulation");var sa=a((e,t,o,r={})=>{let n=[...e].sort((h,f)=>h.id.localeCompare(f.id,"en")),s=new Map;for(let h of t)s.set(h.sourceId,(s.get(h.sourceId)??0)+1),s.set(h.targetId,(s.get(h.targetId)??0)+1);let l=n.map((h,f)=>{let M=f*Math.PI*(3-Math.sqrt(5)),d=h.role==="focus"?0:130*Math.sqrt(f+1);return {...h,x:3800+Math.cos(M)*d,y:2800+Math.sin(M)*d}}),c=so(l,t,r);return c.step(Math.max(1,Math.min(1e3,Number.isFinite(o)?Math.floor(o):280))),new Map([...c.positions()].map(([h,f])=>[h,{...f,degree:s.get(h)??0}]))},"layoutTrendRadarFocusTopology"),lo=a((e,t)=>{if(!e.length)return {x:0,y:0,width:2,height:2};let o=Math.min(...e.map(l=>l.x-l.width/2))-t,r=Math.max(...e.map(l=>l.x+l.width/2))+t,n=Math.min(...e.map(l=>l.y-l.height/2))-t,s=Math.max(...e.map(l=>l.y+l.height/2))+t;return {x:o,y:n,width:Math.max(2,r-o),height:Math.max(2,s-n)}},"calculateTrendRadarFocusTopologyBounds");function Re(...e){return tailwindMerge.twMerge(e.filter(Boolean).join(" "))}a(Re,"cn");var It={width:7600,height:5600};var da=a((e,t,o)=>Math.min(o,Math.max(t,e)),"clamp");var kr=a(e=>{let t=Number.isFinite(e)?da(e,0,1):0,o=.8+Math.pow(t,1.35)*7.2;return {strokeWidth:o,strokeOpacity:.26+t*.7,glowWidth:o+3+t*7,glowOpacity:t<.28?.02:.04+t*.14}},"getTrendRadarFocusTopologyFocusEdgeStyle"),co=a((e,t="dark")=>{let o=a((c,h,f)=>`color-mix(in srgb, ${h} ${f}%, ${c})`,"mix"),r=e.role==="context",n=e.role==="focus",s=o("hsl(var(--monkeys-color-background))",e.solidColor,t==="light"?n?16:r?4:10:n?48:40),l=t==="light"?o(r?"hsl(var(--monkeys-color-muted-foreground))":"hsl(var(--monkeys-color-foreground))",e.solidColor,r?10:38):o(e.color,"hsl(var(--monkeys-color-foreground))",n?45:34);return {background:s,foreground:l,border:o(s,l,n?82:67)}},"getTrendRadarFocusTopologyNodeTone"),ca=a((e,t)=>{let o=t.x-e.x,r=t.y-e.y,n=Math.max(Math.hypot(o,r),1),s=Math.min(72,Math.max(18,n*.13)),l=e.id.localeCompare(t.id)>=0?1:-1;return {x:(e.x+t.x)/2+r/n*s*l,y:(e.y+t.y)/2-o/n*s*l}},"getTrendRadarFocusTopologyEdgeControlPoint"),Sr=a((e,t)=>{let o=ca(e,t);return `M ${e.x} ${e.y} Q ${o.x} ${o.y} ${t.x} ${t.y}`},"getTrendRadarFocusTopologyEdgePath");var Pa={"align-justify":lucideReact.AlignJustify,grid:lucideReact.Grid3X3,layers:lucideReact.Layers,"map-pin":lucideReact.MapPin,mountain:lucideReact.Mountain,package:lucideReact.Package,paintbrush:lucideReact.Paintbrush,palette:lucideReact.Palette,scissors:lucideReact.Scissors,shield:lucideReact.Shield,"shield-check":lucideReact.ShieldCheck,shirt:lucideReact.Shirt,snowflake:lucideReact.Snowflake,sparkles:lucideReact.Sparkles,user:lucideReact.UserRound,users:lucideReact.UsersRound},Na=a((e,t)=>{if(e.role!=="focus")return "var(--trend-radar-muted-color)";let o=Math.pow(e.associationStrength,1.2)*86;return `color-mix(in srgb, var(--trend-radar-muted-color), ${t.color} ${o}%)`},"edgeStroke");function Nr({model:e,config:t=At,onOpenNode:o,renderNodeAction:r,relationshipLabel:n,colorMode:s="dark",onNodePointerDown:l,onNodeKeyDown:c}){let h=a((d,C)=>t.edges.curved?Sr(d,C):`M ${d.x} ${d.y} L ${C.x} ${C.y}`,"edgePath"),f=Qe.useId().replace(/:/g,""),M=Qe.useMemo(()=>new Map(e.nodes.map(d=>[d.id,d])),[e.nodes]);return jsxRuntime.jsxs("div",{className:"trend-radar-focus-topology-background pointer-events-none relative size-full overflow-visible","data-radar-focus-topology-surface":"true","data-radar-focus-topology-color-mode":s,children:[t.edges.visible&&jsxRuntime.jsxs("svg",{viewBox:`0 0 ${It.width} ${It.height}`,className:"absolute inset-0 size-full overflow-visible","aria-hidden":"true",children:[jsxRuntime.jsx("defs",{children:jsxRuntime.jsx("filter",{id:f,x:"-40%",y:"-40%",width:"180%",height:"180%",children:jsxRuntime.jsx("feGaussianBlur",{stdDeviation:"7"})})}),jsxRuntime.jsx("g",{"data-radar-focus-topology-edge-layer":"context",children:e.edges.filter(d=>d.role!=="focus").map(d=>{let C=M.get(d.sourceId),i=M.get(d.targetId);return !C||!i?null:jsxRuntime.jsx("path",{d:h(C,i),fill:"none",stroke:t.edges.color??"var(--trend-radar-muted-color)",strokeWidth:Math.max(.8,.72+Math.pow(d.associationStrength,1.08)*2.2)*t.edges.widthScale,strokeOpacity:Math.min(1,(d.role==="related"?.12:.045)*t.edges.opacityScale),strokeLinecap:"round",strokeLinejoin:"round"},d.id)})}),jsxRuntime.jsx("g",{"data-radar-focus-topology-edge-layer":"focus",children:e.edges.filter(d=>d.role==="focus").map(d=>{let C=M.get(d.sourceId),i=M.get(d.targetId);if(!C||!i)return null;let g=h(C,i),m=t.edges.color??Na(d,C.id===e.subjectId?i:C),R=kr(d.associationStrength);return jsxRuntime.jsxs("g",{"data-radar-focus-topology-focus-edge":d.id,"data-radar-focus-topology-association-strength":d.associationStrength.toFixed(4),children:[jsxRuntime.jsx("path",{d:g,fill:"none",stroke:m,strokeWidth:R.glowWidth*t.edges.widthScale,strokeOpacity:t.edges.glow?Math.min(1,R.glowOpacity*t.edges.opacityScale):0,strokeLinecap:"round",filter:`url(#${f})`}),jsxRuntime.jsx("path",{d:g,fill:"none",stroke:m,strokeWidth:R.strokeWidth*t.edges.widthScale,strokeOpacity:Math.min(1,R.strokeOpacity*t.edges.opacityScale),strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("title",{children:n(d)})})]},d.id)})})]}),e.nodes.map(d=>{let C=Pa[d.iconName]??lucideReact.Palette,i=co(d,s),g=d.role==="focus",m=d.role==="context",R=!!(o&&!g);return jsxRuntime.jsxs("div",{className:Re("absolute transition-[filter,opacity,transform] duration-200",g?"z-20":d.role==="related"?"z-10":"z-0",m&&s==="dark"&&"opacity-[0.18] brightness-[0.72] saturate-[0.3] hover:!opacity-100 hover:!filter-none"),style:{"--radar-node-background":i.background,"--radar-node-foreground":i.foreground,"--radar-node-border":i.border,left:d.x,opacity:m?t.nodes.contextOpacity??(s==="dark"?d.contextOpacity:void 0):void 0,top:d.y,width:d.width,height:d.height,transform:`translate(-50%, -50%) scale(${g?t.nodes.focusScale:1})`,transformOrigin:"center center"},"data-radar-focus-topology-node-anchor":d.ref.id,children:[jsxRuntime.jsxs("button",{type:"button",disabled:!R&&!l,"aria-label":d.label,title:d.taxonomy?.secondaryLabel?`${d.label} \xB7 ${d.taxonomy.secondaryLabel}`:d.label,onPointerDown:x=>{x.stopPropagation(),l?.(x,d);},onKeyDown:x=>c?.(x,d),onClick:x=>{x.stopPropagation(),R&&o?.(d);},className:Re("focus-visible:ring-primary pointer-events-auto flex size-full items-center justify-center gap-2 rounded-full border-0 px-3 text-left text-[0.8125rem] leading-none font-semibold outline-hidden transition-[box-shadow,filter,transform] focus-visible:ring-2",R&&"cursor-pointer hover:brightness-110",!R&&"cursor-default disabled:opacity-100"),style:{fontSize:t.nodes.fontSize,borderRadius:t.nodes.borderRadius,color:i.foreground,backgroundColor:i.background,boxShadow:t.nodes.glow?g?`inset 0 0 0 2px ${i.border}, 0 0 34px ${d.color}66`:d.role==="related"?`inset 0 0 0 1px ${i.border}, 0 0 18px ${d.color}24`:`inset 0 0 0 1px ${i.border}`:`inset 0 0 0 ${g?2:1}px ${i.border}`},"data-radar-focus-topology-node":d.ref.id,"data-world-x":d.x.toFixed(2),"data-world-y":d.y.toFixed(2),"data-radar-focus-topology-node-role":d.role,children:[t.nodes.showIcons&&jsxRuntime.jsx(C,{className:"shrink-0",size:t.nodes.iconSize,color:i.foreground,strokeWidth:1.8,"aria-hidden":"true"}),t.nodes.showLabels&&jsxRuntime.jsx("span",{className:"min-w-0 truncate",style:{color:"inherit"},children:d.label})]}),r?.(d)]},d.id)})]})}a(Nr,"TrendRadarFocusTopologySurface");function Er({model:e,config:t,onCameraChange:o,colorMode:r="light",ariaLabel:n,onOpenNode:s,renderNodeAction:l,nodeAction:c,onNodeAction:h,relationshipLabel:f,controls:M,onNodePositionChange:d}){if(c?.maxActive!==void 0&&(!Number.isSafeInteger(c.maxActive)||c.maxActive<1))throw new TypeError("Node action maxActive must be a positive integer.");if(c?.size!==void 0&&(!Number.isFinite(c.size)||c.size<16||c.size>48))throw new TypeError("Node action size must be between 16 and 48.");let C=Qe.useMemo(()=>Vt(t),[t]),i=Qe.useMemo(()=>new Set(c?.activeNodeIds??[]),[c?.activeNodeIds]),g=JSON.stringify(C.physics),m=Qe.useMemo(()=>JSON.parse(g),[g]),R=JSON.stringify(C.viewport),x=Qe.useMemo(()=>JSON.parse(R),[R]),{interaction:T,ui:w}=C,p=Qe.useRef(null),N=Qe.useRef(),I=JSON.stringify({nodes:e.nodes.map(({id:k,x:S,y:Y,width:X,height:K})=>({id:k,x:S,y:Y,width:X,height:K})),edges:e.edges.map(({sourceId:k,targetId:S,associationStrength:Y})=>({sourceId:k,targetId:S,associationStrength:Y}))}),b=Qe.useMemo(()=>{let k=JSON.parse(I);return so(k.nodes,k.edges,{physics:m})},[I,m]),[F,$]=Qe.useState(()=>b.positions()),[W,E]=Qe.useState(false),[y,L]=Qe.useState({x:0,y:0,z:1}),G=Qe.useRef(o);G.current=o,Qe.useEffect(()=>{G.current?.(y);},[y]);let O=Qe.useRef(y),H=Qe.useRef(),q=Qe.useRef(false),[v,z]=Qe.useState({width:1,height:1}),J=Qe.useRef(false),_=Qe.useMemo(()=>e.nodes.map(k=>({...k,...F.get(k.id)??{}})),[e.nodes,F]),ae=Qe.useRef(_);ae.current=_;let te=Qe.useCallback(k=>{O.current=k,L(k);},[]),Z=Qe.useCallback(()=>{if(N.current!==void 0)return;if(J.current&&!H.current){b.step(1400),$(b.positions()),E(false);return}E(b.active);let k=a(()=>{b.step(m.ticksPerFrame),$(b.positions()),b.active?N.current=requestAnimationFrame(k):(N.current=void 0,E(false));},"tick");N.current=requestAnimationFrame(k);},[b,m.ticksPerFrame]),ge=Qe.useCallback(()=>{let k=p.current;if(!k)return;let S=lo(ae.current,x.fitPadding),Y=Math.max(x.minZoom,Math.min(x.maxZoom,x.fitMaxZoom,(k.clientWidth-x.screenPadding*2)/S.width,(k.clientHeight-x.screenPadding*2)/S.height));te({x:k.clientWidth/(2*Y)-S.x-S.width/2,y:k.clientHeight/(2*Y)-S.y-S.height/2,z:Y});},[te,x]);Qe.useEffect(()=>{J.current=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches??false;let k=b.positions();return $(k),ae.current=ae.current.map(S=>({...S,...k.get(S.id)})),ge(),Z(),()=>{N.current!==void 0&&cancelAnimationFrame(N.current),N.current=void 0;let S=H.current;S?.target.hasPointerCapture?.(S.pointerId)&&S.target.releasePointerCapture(S.pointerId),H.current=void 0;}},[b,ge,Z]),Qe.useEffect(()=>{let k=p.current;if(!k)return;let S=new ResizeObserver(()=>{z({width:k.clientWidth,height:k.clientHeight}),x.fitOnResize&&ge();});return S.observe(k),()=>S.disconnect()},[ge,x.fitOnResize]);let ve=Qe.useCallback((k,S,Y)=>{if(!T.zoom)return;let X=O.current,K=Math.max(x.minZoom,Math.min(x.maxZoom,X.z*Math.exp(-k*x.zoomSensitivity)));te({x:X.x-S/X.z+S/K,y:X.y-Y/X.z+Y/K,z:K});},[te,x,T.zoom]);Qe.useEffect(()=>{let k=p.current;if(!k)return;let S=a(Y=>{if(H.current||!T.zoom)return;Y.preventDefault();let X=k.getBoundingClientRect();ve(Y.deltaY,Y.clientX-X.left,Y.clientY-X.top);},"wheel");return k.addEventListener("wheel",S,{passive:false}),()=>k.removeEventListener("wheel",S)},[ve,T.zoom]);let ie=a((k,S)=>{if(k.button!==0||H.current||(S?!T.dragNodes:!T.pan))return;q.current=false;let Y=O.current;H.current={pointerId:k.pointerId,id:S?.id,startX:k.clientX,startY:k.clientY,x:S?.x??Y.x,y:S?.y??Y.y,moved:false,target:k.currentTarget},k.currentTarget.setPointerCapture(k.pointerId),S&&(b.pin(S.id,S.x,S.y),Z());},"begin"),Se=a(k=>{let S=H.current;if(!(!S||S.pointerId!==k.pointerId)){if(H.current=void 0,q.current=S.moved,S.id){let Y=b.positions().get(S.id);b.release(S.id),Z(),S.moved&&Y&&d?.(S.id,Y);}S.target.hasPointerCapture(k.pointerId)&&S.target.releasePointerCapture(k.pointerId);}},"end"),Le={...e,nodes:_},de=new Map(_.map(k=>[k.id,k])),U=lo([...e.nodes,..._],200);return jsxRuntime.jsxs("section",{ref:p,className:"relationship-graph bg-background relative size-full overflow-hidden",style:{cursor:T.pan?void 0:"default",touchAction:T.pan||T.dragNodes?"none":"auto"},role:"region","aria-label":n,"data-radar-focus-topology":"true","data-graph-engine":"native-force","data-force-running":W,"data-radar-focus-topology-camera":`${y.x.toFixed(2)},${y.y.toFixed(2)},${y.z.toFixed(3)}`,onPointerDown:k=>{k.target.closest("button")||ie(k);},onPointerMove:k=>{let S=H.current;if(!S||S.pointerId!==k.pointerId)return;let Y=k.clientX-S.startX,X=k.clientY-S.startY;S.moved||(S.moved=Math.hypot(Y,X)>T.dragThreshold),S.moved&&(S.id?(b.pin(S.id,S.x+Y/O.current.z,S.y+X/O.current.z),$(b.positions()),Z()):te({...O.current,x:S.x+Y/O.current.z,y:S.y+X/O.current.z}));},onPointerUp:Se,onPointerCancel:Se,onLostPointerCapture:Se,onClickCapture:k=>{q.current&&(k.preventDefault(),k.stopPropagation(),q.current=false);},children:[jsxRuntime.jsx("div",{style:{position:"absolute",left:0,top:0,width:It.width,height:It.height,transformOrigin:"0 0",transform:`translate(${y.x*y.z}px, ${y.y*y.z}px) scale(${y.z})`},children:jsxRuntime.jsx(Nr,{model:Le,config:C,colorMode:r,relationshipLabel:f,onOpenNode:T.openNodes?s:void 0,renderNodeAction:l??(c&&h?k=>{if(c.nodeKinds&&!c.nodeKinds.includes(k.ref.kind))return null;let S=i.has(k.id),Y=c.disabled||!S&&c.maxActive!==void 0&&i.size>=c.maxActive,X=`${S?c.activeLabel??c.label:c.label}: ${k.label}`,K=S?lucideReact.Check:lucideReact.Plus,re=c.size??24;return jsxRuntime.jsx("button",{type:"button","data-relationship-node-action":k.id,"aria-label":X,title:X,"aria-pressed":S,disabled:Y,className:"pointer-events-auto grid place-items-center rounded-md border border-current bg-card text-foreground shadow-sm outline-none hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-40",style:{position:"absolute",right:0,top:0,width:re,height:re,color:co(k,r).foreground,transform:`translate(50%, -50%) scale(${c.keepScreenSize===false?1:1/y.z})`,transformOrigin:"center"},onPointerDown:be=>be.stopPropagation(),onKeyDown:be=>be.stopPropagation(),onClick:be=>{be.stopPropagation(),h(k);},children:jsxRuntime.jsx(K,{size:re*.6,"aria-hidden":"true"})})}:void 0),onNodePointerDown:T.dragNodes?(k,S)=>ie(k,S):void 0,onNodeKeyDown:(k,S)=>{if(!T.keyboard||!T.dragNodes)return;let Y={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]}[k.key];if(!Y)return;k.preventDefault(),k.stopPropagation();let X=(k.shiftKey?T.keyboardFastStep:T.keyboardStep)/O.current.z,K={x:S.x+Y[0]*X,y:S.y+Y[1]*X};b.pin(S.id,K.x,K.y),$(b.positions()),b.release(S.id),Z(),d?.(S.id,K);}})}),(w.controls||w.minimap)&&jsxRuntime.jsxs("div",{className:"relationship-minimap","data-radar-focus-topology-minimap":"true",style:{width:w.minimapWidth,left:w.dock.endsWith("left")?12:"auto",right:w.dock.endsWith("right")?12:"auto",top:w.dock.startsWith("top")?12:"auto",bottom:w.dock.startsWith("bottom")?12:"auto"},children:[w.controls&&jsxRuntime.jsxs("div",{className:"relationship-controls",children:[jsxRuntime.jsx("button",{type:"button","aria-label":M.zoomOut,onClick:()=>ve(x.zoomStep,v.width/2,v.height/2),disabled:!T.zoom||y.z<=x.minZoom,children:jsxRuntime.jsx(lucideReact.Minus,{size:15})}),jsxRuntime.jsxs("output",{children:[Math.round(y.z*100),"%"]}),jsxRuntime.jsx("button",{type:"button","aria-label":M.zoomIn,onClick:()=>ve(-x.zoomStep,v.width/2,v.height/2),disabled:!T.zoom||y.z>=x.maxZoom,children:jsxRuntime.jsx(lucideReact.Plus,{size:15})}),jsxRuntime.jsx("button",{type:"button","aria-label":M.zoomToFit,onClick:ge,children:jsxRuntime.jsx(lucideReact.LocateFixed,{size:15})})]}),w.minimap&&jsxRuntime.jsx("button",{type:"button",className:"relationship-minimap-map",disabled:!T.pan,"aria-label":M.minimap,onClick:k=>{if(k.detail===0){ge();return}let S=k.currentTarget.getBoundingClientRect(),Y=(k.clientX-S.left)/S.width*U.width+U.x,X=(k.clientY-S.top)/S.height*U.height+U.y;te({...y,x:v.width/(2*y.z)-Y,y:v.height/(2*y.z)-X});},children:jsxRuntime.jsxs("svg",{viewBox:`${U.x} ${U.y} ${U.width} ${U.height}`,style:{height:w.minimapHeight},preserveAspectRatio:"none","aria-hidden":"true",children:[e.edges.map(k=>{let S=de.get(k.sourceId),Y=de.get(k.targetId);return S&&Y?jsxRuntime.jsx("line",{x1:S.x,y1:S.y,x2:Y.x,y2:Y.y,stroke:"currentColor",strokeWidth:2,opacity:.2},k.id):null}),_.map(k=>jsxRuntime.jsx("circle",{cx:k.x,cy:k.y,r:k.role==="focus"?14:8,fill:k.color},k.id)),jsxRuntime.jsx("rect",{x:-y.x,y:-y.y,width:v.width/y.z,height:v.height/y.z,fill:"currentColor",fillOpacity:.07,stroke:"currentColor",strokeWidth:4})]})})]})]})}a(Er,"RelationshipGraph2D");var Vo={locale:"en-US",messages:{pagination:{navigation:"Pagination",first:"First",previous:"Previous",next:"Next",last:"Last",page:a(({page:e,pageCount:t})=>`Page ${e} of ${t}`,"page"),currentPage:a(({page:e,pageCount:t})=>`Page ${e} of ${t}, current page`,"currentPage"),emptyResults:"0 results",range:a(({start:e,end:t,total:o})=>`${e}-${t} of ${o}`,"range"),selected:a(({count:e})=>`${e} selected`,"selected"),pageSize:"Items per page",loadBatchSize:"Items per load",perLoad:"Items per load",jumpToPage:"Jump to page",pages:"pages",clickToJump:"Click to jump to a page"},dialog:{close:"Close dialog"},dropdownMenu:{actions:"Actions"},loading:{spinner:"Loading"},layout:{resizePanels:"Resize panels",expandPanel:"Expand",collapsePanel:"Collapse",movePanel:"Move",moveBefore:"Move earlier",moveAfter:"Move later"},steps:{label:"Progress",current:"Current",completed:"Completed",error:"Error",disabled:"Disabled"},numberInput:{increment:"Increase value",decrement:"Decrease value"},passwordInput:{showPassword:"Show password",hidePassword:"Hide password"},multiSelect:{placeholder:"Select options",empty:"No options",removeOption:a(({value:e})=>`Remove ${e}`,"removeOption")},table:{dragColumn:a(({columnId:e})=>`Drag column ${e}`,"dragColumn"),resizeColumn:a(({columnId:e})=>`Resize column ${e}`,"resizeColumn"),sortColumn:a(({columnId:e})=>e?`Sort column ${e}`:"Sort column","sortColumn"),loadingRow:"Loading table row"},toolbar:{theme:{label:"Appearance",toggle:"Toggle theme",auto:"Auto",light:"Light",dark:"Dark"},language:{label:"Language",switch:"Switch language"}},toast:{errorTitle:"Error",warningTitle:"Warning",defaultErrorDescription:"Something went wrong.",defaultWarningDescription:"Please check and try again."},dataExplorer:{viewTree:{actions:"More actions",expand:"Expand",collapse:"Collapse",loading:"Loading...",empty:"No views",error:"Unable to load views"}},workbench:{relationshipGraph:{zoomOut:"Zoom out",zoomIn:"Zoom in",zoomToFit:"Fit graph",minimap:"Graph overview"},collection:{label:"Collection",loading:"Loading items",empty:"No items",loadError:"Unable to load items",refreshError:"Unable to refresh items",retry:"Retry",loadingMore:"Loading more items",permission:"You do not have permission to view this content",offline:"You appear to be offline",requestAccess:"Request access"},interactiveTable:{columnActions:"Column actions",freezeColumn:"Freeze to left",freezeEndColumn:"Freeze to right",unfreezeColumn:"Unfreeze from left",unfreezeEndColumn:"Unfreeze from right",unfreezeAllColumns:"Unfreeze all columns",resetColumnWidth:"Reset column width",frozenColumnTitle:"Frozen column"}},agentWorkbench:{label:"Session activity",reasoning:"Reasoning",plan:"Plan",taskNoDetail:"No additional details",modes:{chat:"Chat",work:"Work"},composer:{send:"Send message",stop:"Stop generating",queue:"Queue message",attach:"Add photos or files",voice:"Start voice input",webSearch:"Web search",chatMode:"Chat mode",model:"Model",reasoning:"Reasoning effort",permissions:"Permissions",removeAttachment:"Remove attachment",editQueued:"Edit queued message",deleteQueued:"Delete queued message",moveUp:"Move message up",moveDown:"Move message down",queued:"Queued messages",uploading:"Uploading",uploadFailed:"Upload failed",retryAttachment:"Retry attachment upload",noModels:"No models available",message:"Message",attachmentOnly:"Attachment",reasoningOptions:{low:"Low",medium:"Medium",high:"High",xhigh:"Extra high"},permissionOptions:{"approval-required":"Approval required","auto-approve":"Auto approve","full-access":"Full access"}},quickStart:{label:"Quick start",back:"Back",addFile:"Add file"},tool:{input:"Input",output:"Output",status:{pending:"Pending",running:"Running",completed:"Completed",failed:"Error",denied:"Denied"}},approval:{approve:"Approve",reject:"Reject",approved:"Approved",rejected:"Rejected"},artifact:{pending:"Preparing",ready:"Ready",failed:"Failed",open:a(({name:e})=>`Open ${e}`,"open")},run:{stopping:"Stopping...",stoppedAfter:a(({duration:e})=>`You stopped after ${e}`,"stoppedAfter")},process:{running:"Working",queued:"Queued",waitingApproval:"Waiting for approval",failed:"Failed",stopped:"Stopped",processed:"Processed",processedFor:a(({duration:e})=>`Worked for ${e}`,"processedFor"),completedCount:a(({completed:e,total:t})=>`${e}/${t} completed`,"completedCount")},artifactWorkspace:{outputs:"Outputs",sources:"Sources",viewAll:"View all",toggleSummary:"Toggle files",tabs:"Open files",closeTab:a(({name:e})=>`Close ${e}`,"closeTab"),closeWorkspace:"Close workspace",close:"Close",closeOthers:"Close other tabs",closeRight:"Close tabs to the right",closeAll:"Close all tabs",kinds:{audio:"Audio",file:"File",html:"HTML",image:"Image",markdown:"Markdown",pdf:"PDF",presentation:"Presentation",video:"Video",web:"Web page"},collapse:"Collapse",maximize:"Full screen",restore:"Exit full screen",download:a(({name:e})=>`Download ${e}`,"download"),openExternal:a(({name:e})=>`Open ${e} in a new window`,"openExternal"),loading:"Loading preview...",failed:"Preview unavailable",retry:"Try again"},usage:{label:"Context usage",context:a(({used:e,total:t})=>`${e} / ${t} tokens`,"context")},navigation:{search:"Search agents and sessions",searchSessions:"Search sessions",searchShortcut:"Focus search",clearSearch:"Clear search",tabsLabel:"Agent workbench navigation",agents:"Agents",sessions:"Sessions",newAgent:"New Agent",newSession:"New Session",capabilities:"Capabilities & Extensions",settings:"Agent Settings",allAgents:"All Agents",recentSessions:"Recent Sessions",chat:"Chat",work:"Work",chats:"Chats",builtIn:"Built-in",noDescription:"No description",loading:"Loading...",emptyAgents:"No agents yet",emptySessions:"No sessions yet",noResults:"No matching results",retry:"Retry",pin:"Pin",unpin:"Unpin",rename:"Rename",delete:"Delete",actions:"Actions",save:"Save",cancel:"Cancel",running:"Running",completed:"Completed",failed:"Failed",contextUsage:a(({percent:e})=>`${e}% context used`,"contextUsage")},details:{title:"Task details",description:"Summary and workspace activity",duration:"Duration",updated:"Updated",model:"Model",mode:"Mode",permissions:"Permissions",tokenUsage:"Token usage",summary:"Summary",summaryEmpty:"No summary is available yet.",summaryFailed:"The summary could not be generated.",highlights:"Highlights",pendingItems:"Pending items",tabs:{label:"Task detail views",summary:"Summary",workspace:"Workspace"},status:{queued:"Queued",running:"Running",waiting_approval:"Waiting for approval",stopping:"Stopping",stopped:"Stopped",completed:"Completed",failed:"Failed"},state:{loading:{title:"Loading task details",description:"Restoring the latest session activity."},empty:{title:"No task selected",description:"Select a task to inspect its details."},error:{title:"Unable to load task details",description:"Try again after the session is available."}},actions:{close:"Close task details",copySummary:"Copy summary",retry:"Retry",retrySummary:"Retry summary",resume:"Resume",continueInNewTask:"Continue in new task",editAndRerun:"Edit and rerun",export:"Export"},workspace:{diffs:"Code changes",files:"Files",terminals:"Terminals",tests:"Tests",artifacts:"Artifacts",exitCode:a(({code:e})=>`Exit code ${e}`,"exitCode"),diffStatus:{added:"Added",modified:"Modified",deleted:"Deleted",renamed:"Renamed"},fileOperation:{upsert:"Updated",delete:"Deleted"}}}}}};function Ar(e,t){return t?{beautiful:{...e.beautiful,...t.beautiful},pagination:{...e.pagination,...t.pagination},dialog:{...e.dialog,...t.dialog},dropdownMenu:{...e.dropdownMenu,...t.dropdownMenu},loading:{...e.loading,...t.loading},layout:{...e.layout,...t.layout},steps:{...e.steps,...t.steps},numberInput:{...e.numberInput,...t.numberInput},passwordInput:{...e.passwordInput,...t.passwordInput},multiSelect:{...e.multiSelect,...t.multiSelect},table:{...e.table,...t.table},toolbar:{theme:{...e.toolbar.theme,...t.toolbar?.theme},language:{...e.toolbar.language,...t.toolbar?.language}},toast:{...e.toast,...t.toast},dataExplorer:{viewTree:{...e.dataExplorer.viewTree,...t.dataExplorer?.viewTree}},workbench:{relationshipGraph:{zoomOut:"Zoom out",zoomIn:"Zoom in",zoomToFit:"Fit graph",minimap:"Graph overview",...e.workbench.relationshipGraph,...t.workbench?.relationshipGraph},collection:{...e.workbench.collection,...t.workbench?.collection},interactiveTable:{...e.workbench.interactiveTable,...t.workbench?.interactiveTable}},agentWorkbench:{...e.agentWorkbench,...t.agentWorkbench,modes:{...e.agentWorkbench.modes,...t.agentWorkbench?.modes},composer:{...e.agentWorkbench.composer,...t.agentWorkbench?.composer},quickStart:{...e.agentWorkbench.quickStart,...t.agentWorkbench?.quickStart},tool:{...e.agentWorkbench.tool,...t.agentWorkbench?.tool,status:{...e.agentWorkbench.tool.status,...t.agentWorkbench?.tool?.status}},approval:{...e.agentWorkbench.approval,...t.agentWorkbench?.approval},artifact:{...e.agentWorkbench.artifact,...t.agentWorkbench?.artifact},run:{...e.agentWorkbench.run,...t.agentWorkbench?.run},process:{...e.agentWorkbench.process,...t.agentWorkbench?.process},artifactWorkspace:{...e.agentWorkbench.artifactWorkspace,...t.agentWorkbench?.artifactWorkspace},usage:{...e.agentWorkbench.usage,...t.agentWorkbench?.usage},navigation:{...e.agentWorkbench.navigation,...t.agentWorkbench?.navigation},details:{...e.agentWorkbench.details,...t.agentWorkbench?.details,tabs:{...e.agentWorkbench.details.tabs,...t.agentWorkbench?.details?.tabs},status:{...e.agentWorkbench.details.status,...t.agentWorkbench?.details?.status},state:{loading:{...e.agentWorkbench.details.state.loading,...t.agentWorkbench?.details?.state?.loading},empty:{...e.agentWorkbench.details.state.empty,...t.agentWorkbench?.details?.state?.empty},error:{...e.agentWorkbench.details.state.error,...t.agentWorkbench?.details?.state?.error}},actions:{...e.agentWorkbench.details.actions,...t.agentWorkbench?.details?.actions},workspace:{...e.agentWorkbench.details.workspace,...t.agentWorkbench?.details?.workspace,diffStatus:{...e.agentWorkbench.details.workspace.diffStatus,...t.agentWorkbench?.details?.workspace?.diffStatus},fileOperation:{...e.agentWorkbench.details.workspace.fileOperation,...t.agentWorkbench?.details?.workspace?.fileOperation}}}}}:e}a(Ar,"mergeMonkeysLocaleMessages");var Bo={locale:Vo.locale,messages:Ar(Vo.messages)};var La=Object.freeze({}),Da=Object.freeze({}),Ir=Symbol.for("@inf-monkeys-tech/monkeys-design/provider-context@1");function Fa(){return Object.freeze({locale:Qe.createContext({...Bo,provided:false}),theme:Qe.createContext({provided:false}),direction:Qe.createContext({provided:false}),environment:Qe.createContext({provided:false,environment:La,portal:Da})})}a(Fa,"createMonkeysProviderContexts");function Oa(){let e=globalThis,t=e[Ir];if(t)return t;let o=Fa();return Object.defineProperty(e,Ir,{value:o,enumerable:false,configurable:false,writable:false}),o}a(Oa,"getMonkeysProviderContexts");var go=Oa(),Lr=go.locale,_a=go.theme,$a=go.direction;go.environment;function Dr(){return Qe.useContext(Lr).messages}a(Dr,"useMonkeysLocaleMessages");function Fr(){let e=Qe.useContext(Lr),t=Qe.useContext(_a),o=Qe.useContext($a),r=e.provided||t.provided||o.provided;return Qe.useMemo(()=>r?{dir:o.direction,"data-monkeys-direction":o.direction,"data-monkeys-locale":e.locale,"data-monkeys-theme":t.themeId,"data-monkeys-theme-mode":t.resolvedTheme?.colorMode}:{},[o.direction,e.locale,r,t.resolvedTheme?.colorMode,t.themeId])}a(Fr,"useMonkeysComponentAttributes");var ke=a((e,t,o,r)=>Number.isFinite(e)?Math.min(r,Math.max(o,e)):t,"finite");function yo(e={}){return {layout:{mode:e.layout?.mode??"clustered",radius:ke(e.layout?.radius,18,1,1e3),depth:ke(e.layout?.depth,8,0,1e3),spacing:ke(e.layout?.spacing,1.8,.1,50),iterations:Math.round(ke(e.layout?.iterations,60,0,200)),linkStrength:ke(e.layout?.linkStrength,.035,0,.5)},camera:{fieldOfView:ke(e.camera?.fieldOfView,48,15,100),fitPadding:ke(e.camera?.fitPadding,1.2,1,3),rotateSpeed:ke(e.camera?.rotateSpeed,.5,.01,5),autoRotate:e.camera?.autoRotate??false,autoRotateSpeed:ke(e.camera?.autoRotateSpeed,.5,-10,10),enablePan:e.camera?.enablePan??true,enableZoom:e.camera?.enableZoom??true},nodes:{size:ke(e.nodes?.size,.8,.05,10),opacity:ke(e.nodes?.opacity,1,0,1),glow:e.nodes?.glow??true,defaultColor:e.nodes?.defaultColor,groupColors:e.nodes?.groupColors??{}},edges:{opacity:ke(e.edges?.opacity,.4,0,1),dimOpacity:ke(e.edges?.dimOpacity,.08,0,1),defaultColor:e.edges?.defaultColor},labels:{visible:e.labels?.visible??true,fontSize:ke(e.labels?.fontSize,12,8,32),maxVisible:Math.round(ke(e.labels?.maxVisible,100,0,1e3)),collisionPadding:ke(e.labels?.collisionPadding,6,0,50),color:e.labels?.color},controls:{visible:e.controls?.visible??true,placement:e.controls?.placement??"top-right",resetLabel:e.controls?.resetLabel,zoomInLabel:e.controls?.zoomInLabel,zoomOutLabel:e.controls?.zoomOutLabel},interaction:{enabled:e.interaction?.enabled??true,openOn:e.interaction?.openOn??"click",hitRadius:ke(e.interaction?.hitRadius,14,4,100)},minHeight:ke(e.minHeight,320,0,2e3),pixelRatioLimit:ke(e.pixelRatioLimit,2,.5,3)}}a(yo,"resolveRelationship3DConfig");var Or=a(e=>Array.from(e).reduce((t,o)=>Math.imul(t^o.charCodeAt(0),16777619)>>>0,2166136261),"hash"),Dt=Math.PI*(3-Math.sqrt(5));function Yo(e,t,o={}){let{layout:r}=yo(o),n=new Set;for(let i of e){if(!i.id||n.has(i.id))throw new TypeError("3D graph node IDs must be nonempty and unique.");n.add(i.id);}let s=[...e].sort((i,g)=>i.id<g.id?-1:i.id>g.id?1:0),l=[...new Set(s.map(i=>i.group??""))].sort(),c=new Map,h=new Map(l.map(i=>[i,s.filter(g=>(g.group??"")===i).length])),f=s.map((i,g)=>{let m=i.group??"",R=c.get(m)??0;c.set(m,R+1);let x,T,w;if(r.mode==="provided"){if(!i.position||![i.position.x,i.position.y,i.position.z].every(Number.isFinite))throw new TypeError("Provided 3D layouts require finite x, y and z for every node.");({x,y:T,z:w}=i.position);}else if(r.mode==="sphere"){let p=1-2*(g+.5)/Math.max(s.length,1),N=Math.sqrt(1-p*p);x=Math.cos(g*Dt)*N*r.radius,T=p*r.radius,w=Math.sin(g*Dt)*N*r.depth;}else {let p=l.indexOf(m),N=p*Dt-Math.PI/2,I=l.length>1?r.radius*.6:0,b=Math.sqrt(R)*r.spacing,F=Or(m)/4294967295*Math.PI*2;x=Math.cos(N)*I+Math.cos(R*Dt+F)*b,T=Math.sin(N)*I*.8+Math.sin(R*Dt+F)*b*.8,w=(l.length>1?(p/(l.length-1)-.5)*r.depth:0)+Math.sin(R*Dt*1.37+F)*Math.min(r.depth*.4,Math.sqrt(h.get(m))*.7);}return {...i,x,y:T,z:w,anchorX:x,anchorY:T,anchorZ:w}}),M=new Map(f.map(i=>[i.id,i])),d=t.filter(i=>n.has(i.sourceId)&&n.has(i.targetId)&&i.sourceId!==i.targetId),C=new Map(f.map(i=>[i.id,new Set]));if(d.forEach(i=>{C.get(i.sourceId).add(i.targetId),C.get(i.targetId).add(i.sourceId);}),r.mode==="clustered")for(let i=0;i<r.iterations;i++){for(let R of d){let x=M.get(R.sourceId),T=M.get(R.targetId),w=r.linkStrength*((x.group??"")===(T.group??"")?1:.12)*ke(R.weight,.5,0,1);for(let p of ["x","y","z"]){let N=(T[p]-x[p])*w;x[p]+=N,T[p]-=N;}}let g=new Map,m=r.spacing;for(let R of f){R.x+=(R.anchorX-R.x)*.1,R.y+=(R.anchorY-R.y)*.1,R.z+=(R.anchorZ-R.z)*.1;let x=Math.floor(R.x/m),T=Math.floor(R.y/m),w=Math.floor(R.z/m);for(let I=-1;I<=1;I++)for(let b=-1;b<=1;b++)for(let F=-1;F<=1;F++)for(let $ of g.get(`${x+I},${T+b},${w+F}`)??[]){let W=R.x-$.x,E=R.y-$.y,y=R.z-$.z,L=Math.hypot(W,E,y);if(L>=m)continue;let G=(m-L)*.22/Math.max(L,.001),O=Or(R.id+$.id)/4294967295*Math.PI*2,H=L?W:Math.cos(O)*.001,q=L?E:Math.sin(O)*.001,v=L?y:.001;R.x+=H*G,R.y+=q*G,R.z+=v*G,$.x-=H*G,$.y-=q*G,$.z-=v*G;}let p=`${x},${T},${w}`,N=g.get(p)??[];N.push(R),g.set(p,N);}}return {points:f,links:d,neighbors:C}}a(Yo,"buildRelationship3DLayout");function Ba({nodes:e,edges:t,ariaLabel:o,config:r,selectedNodeId:n,onNodeSelect:s,onUnavailable:l,className:c,emptyLabel:h="No related nodes"}){let f=Dr(),M=Qe.useRef(null),d=Qe.useRef(new Map),C=Qe.useRef({onNodeSelect:s,onUnavailable:l,selectedNodeId:n,nodes:e});C.current={onNodeSelect:s,onUnavailable:l,selectedNodeId:n,nodes:e};let i=Qe.useRef({reset:a(()=>{},"reset"),zoomIn:a(()=>{},"zoomIn"),zoomOut:a(()=>{},"zoomOut"),invalidate:a(()=>{},"invalidate")}),[g,m]=Qe.useState(false),[R,x]=Qe.useState(0),T=JSON.stringify([e,t,r]),w=Qe.useMemo(()=>Yo(e,t,r),[T]),p=Qe.useMemo(()=>yo(r),[T]);Qe.useEffect(()=>{i.current.invalidate();},[n]),Qe.useEffect(()=>{let I=a(()=>{let $=M.current&&getComputedStyle(M.current);return ["--radar-canvas","--background","--radar-series-one","--primary"].map(W=>$?.getPropertyValue(W)).join("|")},"signature"),b=I(),F=new MutationObserver(()=>{let $=I();$!==b&&(b=$,x(W=>W+1));});for(let $=M.current?.parentElement;$;$=$.parentElement)F.observe($,{attributes:true,attributeFilter:["class","style","data-theme"]});return ()=>F.disconnect()},[]),Qe.useEffect(()=>{let I=M.current;if(!I||!w.points.length)return;let b=false,F=[],$=a(()=>{for(;F.length;)F.pop()();},"release");m(false);let W=a(()=>{$(),b||(m(true),C.current.onUnavailable?.("webgl-unavailable"));},"fail");return Promise.all([import('three'),import('three/examples/jsm/controls/OrbitControls.js')]).then(([E,{OrbitControls:y}])=>{if(b)return;let L=new E.WebGLRenderer({antialias:true});F.push(()=>{L.dispose(),L.forceContextLoss(),L.domElement.remove();}),L.setPixelRatio(Math.min(window.devicePixelRatio||1,p.pixelRatioLimit)),L.domElement.style.cssText="position:absolute;inset:0;width:100%;height:100%;touch-action:none",L.domElement.setAttribute("aria-hidden","true"),I.prepend(L.domElement);let G=new E.Scene,O=getComputedStyle(I),H=a((V,j)=>{let ue=document.createElement("span");ue.style.color=`hsl(${O.getPropertyValue(V).trim()||O.getPropertyValue(j).trim()})`,I.append(ue);let Ie=new E.Color(getComputedStyle(ue).color);return ue.remove(),Ie},"token");G.background=H("--radar-canvas","--background");let q=p.nodes.defaultColor?new E.Color(p.nodes.defaultColor):H("--radar-series-one","--primary"),v=new Map(w.points.map(V=>[V.id,new E.Color(V.color??p.nodes.groupColors[V.group??""]??q)])),z=new Map(w.points.map(V=>[V.id,new E.Vector3(V.x,V.y,V.z)])),J=new E.PerspectiveCamera(p.camera.fieldOfView,1,.01,1e5),_=new y(J,L.domElement);F.push(()=>_.dispose()),_.enableDamping=true,_.dampingFactor=.1,_.rotateSpeed=p.camera.rotateSpeed,_.enablePan=p.camera.enablePan,_.enableZoom=p.camera.enableZoom;let ae=window.matchMedia?.("(prefers-reduced-motion: reduce)"),te=a(()=>{_.autoRotate=p.camera.autoRotate&&!ae?.matches,ce();},"motionChange");_.autoRotate=p.camera.autoRotate&&!ae?.matches,_.autoRotateSpeed=p.camera.autoRotateSpeed,ae?.addEventListener("change",te),F.push(()=>ae?.removeEventListener("change",te));let Z=64,ge=new Uint8Array(Z*Z*4);for(let V=0;V<Z;V++)for(let j=0;j<Z;j++){let ue=Math.hypot(j+.5-Z/2,V+.5-Z/2)/(Z/2),Ie=p.nodes.glow?ue<.1?1:Math.exp(-ue*7.5):ue<.45?1:0;ge.set([255,255,255,Math.round(Ie*255)],(V*Z+j)*4);}let ve=new E.DataTexture(ge,Z,Z,E.RGBAFormat);ve.minFilter=ve.magFilter=E.LinearFilter,ve.needsUpdate=true,F.push(()=>ve.dispose());let ie=w.points.map(V=>{let j=new E.SpriteMaterial({map:ve,color:v.get(V.id),transparent:true,depthWrite:false,blending:p.nodes.glow?E.AdditiveBlending:E.NormalBlending});F.push(()=>j.dispose());let ue=new E.Sprite(j);return ue.position.copy(z.get(V.id)),G.add(ue),ue}),Se=new E.BufferGeometry;F.push(()=>Se.dispose()),Se.setAttribute("position",new E.Float32BufferAttribute(w.links.flatMap(V=>[...z.get(V.sourceId).toArray(),...z.get(V.targetId).toArray()]),3));let Le=new Float32Array(w.links.length*6);Se.setAttribute("color",new E.BufferAttribute(Le,3));let de=new E.LineBasicMaterial({vertexColors:true,transparent:true,opacity:p.edges.opacity,depthWrite:false});F.push(()=>de.dispose()),G.add(new E.LineSegments(Se,de));let U=new E.Box3().setFromPoints([...z.values()]),k=U.getCenter(new E.Vector3),S=U.getSize(new E.Vector3),Y=Math.max(S.length()/2,1),X=0,K=0,re=false,be=0,xe,De,Ne,Ke=false,ye=new E.Vector3,ft=[...w.points].sort((V,j)=>(w.neighbors.get(j.id)?.size??0)-(w.neighbors.get(V.id)?.size??0)),Je=a(()=>{let V=E.MathUtils.degToRad(J.fov/2),j=Y*p.camera.fitPadding/Math.sin(Math.atan(Math.tan(V)*Math.min(J.aspect,1)));_.target.copy(k),J.position.copy(k).add(new E.Vector3(0,0,j)),J.near=Math.max(j/1e4,.01),J.far=Math.max(j*100,1e3),_.minDistance=Math.max(Y*.15,.1),_.maxDistance=j*8,J.updateProjectionMatrix(),_.update(),ce();},"fit");function ce(){!b&&!be&&(be=requestAnimationFrame(st));}a(ce,"invalidate");function st(){if(be=0,b||!X||!K||document.hidden)return;_.update(),J.updateMatrixWorld();let V=C.current.selectedNodeId,j=xe??V,ue=j?w.neighbors.get(j):void 0;(!Ke||Ne!==j)&&(Ne=j,Ke=true,w.links.forEach((me,$e)=>{let u=!j||me.sourceId===j||me.targetId===j,P=new E.Color(me.color??p.edges.defaultColor??v.get(me.targetId)).multiplyScalar(u?1:p.edges.dimOpacity);Le.set([...P.toArray(),...P.toArray()],$e*6);}),Se.attributes.color.needsUpdate=true),ie.forEach((me,$e)=>{let u=w.points[$e],P=j===u.id;me.scale.setScalar((u.size&&Number.isFinite(u.size)?Math.min(10,Math.max(.05,u.size)):p.nodes.size)*(P?1.5:1)),me.material.opacity=p.nodes.opacity*(!j||P||ue?.has(u.id)?1:.3);});let Ie=new Map,ze=j?[...ft.filter(me=>me.id===j),...ft.filter(me=>me.id!==j)]:ft,Oe=0;for(let me of ze){let $e=d.current.get(me.id);if(!$e)continue;ye.copy(z.get(me.id)).project(J);let u=(ye.x+1)*X/2,P=(-ye.y+1)*K/2+8,A=Math.min(180,Math.max(p.labels.fontSize*me.label.length*.7,p.labels.fontSize*2)),oe=p.labels.fontSize+8,se={x:u-A/2,y:P,w:A,h:oe},Me=[];for(let Ge=Math.floor(se.x/64);Ge<=Math.floor((se.x+A+p.labels.collisionPadding)/64);Ge++)for(let Pe=Math.floor(P/32);Pe<=Math.floor((P+oe+p.labels.collisionPadding)/32);Pe++)Me.push(`${Ge},${Pe}`);let we=Me.some(Ge=>Ie.get(Ge)?.some(Pe=>se.x<Pe.x+Pe.w+p.labels.collisionPadding&&se.x+A+p.labels.collisionPadding>Pe.x&&P<Pe.y+Pe.h+p.labels.collisionPadding&&P+oe+p.labels.collisionPadding>Pe.y)),je=p.labels.visible&&Oe<p.labels.maxVisible&&ye.z>-1&&ye.z<1&&se.x>0&&se.x+A<X&&P>0&&P+oe<K&&(!we||me.id===j);if($e.style.display=je?"block":"none",$e.tabIndex=je&&p.interaction.enabled?0:-1,je){$e.style.transform=`translate(${u}px,${P}px) translate(-50%,0)`,$e.style.color=p.labels.color??"#"+v.get(me.id).getHexString(),$e.style.opacity=!j||me.id===j||ue?.has(me.id)?"1":"0.4";for(let Ge of Me){let Pe=Ie.get(Ge)??[];Pe.push(se),Ie.set(Ge,Pe);}Oe++;}}L.render(G,J),_.autoRotate&&ce();}a(st,"draw"),_.addEventListener("change",ce),F.push(()=>{_.removeEventListener("change",ce),cancelAnimationFrame(be);}),i.current={reset:Je,zoomIn:a(()=>{J.position.sub(_.target).multiplyScalar(.8).add(_.target),_.update(),ce();},"zoomIn"),zoomOut:a(()=>{J.position.sub(_.target).multiplyScalar(1.25).add(_.target),_.update(),ce();},"zoomOut"),invalidate:ce},F.push(()=>{i.current={reset:a(()=>{},"reset"),zoomIn:a(()=>{},"zoomIn"),zoomOut:a(()=>{},"zoomOut"),invalidate:a(()=>{},"invalidate")};});let ht=new ResizeObserver(()=>{let V=I.getBoundingClientRect();X=V.width,K=V.height,!(!X||!K)&&(J.aspect=X/K,J.updateProjectionMatrix(),L.setSize(X,K,false),re?ce():(re=true,Je()));});ht.observe(I),F.push(()=>ht.disconnect());let ot=a(V=>{let j=L.domElement.getBoundingClientRect(),ue,Ie=p.interaction.hitRadius;for(let ze of w.points){if(ye.copy(z.get(ze.id)).project(J),ye.z<-1||ye.z>1)continue;let Oe=Math.hypot((ye.x+1)*X/2-(V.clientX-j.left),(-ye.y+1)*K/2-(V.clientY-j.top));Oe<Ie&&(ue=ze,Ie=Oe);}return ue?C.current.nodes.find(ze=>ze.id===ue.id):void 0},"hit"),Ct=a(V=>{De={x:V.clientX,y:V.clientY,pointerId:V.pointerId};},"onDown"),Mt=a(V=>{xe=ot(V)?.id,L.domElement.style.cursor=xe&&p.interaction.enabled?"pointer":"grab",ce();},"onMove"),qe=a(()=>{xe=void 0,De=void 0,ce();},"onLeave"),Ze=a(V=>{let j=De?.pointerId===V.pointerId&&Math.hypot(V.clientX-De.x,V.clientY-De.y)<5;if(De=void 0,j&&p.interaction.enabled&&p.interaction.openOn==="click"){let ue=ot(V);ue&&C.current.onNodeSelect?.(ue);}},"onUp"),Ae=a(V=>{if(p.interaction.enabled&&p.interaction.openOn==="double-click"){let j=ot(V);j&&C.current.onNodeSelect?.(j);}},"onDouble"),Fe=a(V=>{V.preventDefault(),W();},"contextLost"),_e=a(()=>{document.hidden||ce();},"visibility"),lt={pointerdown:Ct,pointermove:Mt,pointerup:Ze,pointerleave:qe,pointercancel:qe,dblclick:Ae,webglcontextlost:Fe};for(let[V,j]of Object.entries(lt))L.domElement.addEventListener(V,j);document.addEventListener("visibilitychange",_e),F.push(()=>{for(let[V,j]of Object.entries(lt))L.domElement.removeEventListener(V,j);document.removeEventListener("visibilitychange",_e);});}).catch(W),()=>{b=true,$();}},[w,p,R]);let N=p.controls.placement;return jsxRuntime.jsxs("div",{ref:M,role:"group","aria-label":o,className:c,"data-monkeys-component":"relationship-graph-3d","data-renderer-status":g?"unavailable":"webgl",style:{position:"relative",width:"100%",height:"100%",minHeight:p.minHeight,overflow:"hidden",background:"hsl(var(--radar-canvas, var(--background)))"},children:[e.map(I=>jsxRuntime.jsx("button",{ref:b=>{b?d.current.set(I.id,b):d.current.delete(I.id);},type:"button",disabled:!p.interaction.enabled,tabIndex:g&&p.interaction.enabled?0:-1,"aria-pressed":n===I.id,title:I.meta,onClick:()=>{p.interaction.enabled&&(g||p.interaction.openOn==="click")&&C.current.onNodeSelect?.(I);},onDoubleClick:()=>{p.interaction.enabled&&p.interaction.openOn==="double-click"&&C.current.onNodeSelect?.(I);},onKeyDown:b=>{p.interaction.enabled&&p.interaction.openOn==="double-click"&&(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),C.current.onNodeSelect?.(I));},className:"font-sans focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary",style:{display:g?"inline-block":"none",position:g?"relative":"absolute",transform:g?"none":void 0,opacity:g?1:void 0,color:g?"hsl(var(--foreground))":void 0,left:0,top:0,border:0,background:"transparent",padding:2,maxWidth:180,fontSize:p.labels.fontSize,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",cursor:p.interaction.enabled?"pointer":"default"},children:I.label},I.id)),!e.length&&jsxRuntime.jsx("div",{role:"status",className:"grid size-full place-items-center text-sm text-muted-foreground",children:h}),g&&jsxRuntime.jsx("div",{role:"alert",className:"relative p-3 text-foreground",children:f.workbench.collection.loadError}),!g&&p.controls.visible&&jsxRuntime.jsxs("div",{className:"absolute z-10 flex items-center gap-1 rounded-lg border border-border bg-background/90 p-1 text-foreground",style:{[N.startsWith("top")?"top":"bottom"]:12,[N.endsWith("left")?"left":"right"]:12},children:[p.camera.enableZoom&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",className:"rounded p-1.5 hover:bg-muted","aria-label":p.controls.zoomOutLabel??"Zoom out",title:p.controls.zoomOutLabel??"Zoom out",onClick:()=>i.current.zoomOut(),children:jsxRuntime.jsx(lucideReact.Minus,{size:14})}),jsxRuntime.jsx("button",{type:"button",className:"rounded p-1.5 hover:bg-muted","aria-label":p.controls.zoomInLabel??"Zoom in",title:p.controls.zoomInLabel??"Zoom in",onClick:()=>i.current.zoomIn(),children:jsxRuntime.jsx(lucideReact.Plus,{size:14})})]}),jsxRuntime.jsxs("button",{type:"button",className:"flex items-center gap-1 rounded p-1.5 text-xs hover:bg-muted","aria-label":p.controls.resetLabel??"Reset view",onClick:()=>i.current.reset(),children:[jsxRuntime.jsx(lucideReact.LocateFixed,{size:14}),p.controls.resetLabel??"Reset view"]})]})]})}a(Ba,"RelationshipGraph3D");function Ho(e,{size:t=128,inner:o="rgba(255,255,255,1)",middle:r="rgba(255,255,255,.42)"}={}){let n=document.createElement("canvas");n.width=t,n.height=t;let s=n.getContext("2d");if(!s)throw new Error("Unable to initialize the glow texture canvas.");let l=t/2,c=s.createRadialGradient(l,l,0,l,l,l);c.addColorStop(0,o),c.addColorStop(.16,r),c.addColorStop(.48,"rgba(255,255,255,.12)"),c.addColorStop(1,"rgba(255,255,255,0)"),s.fillStyle=c,s.fillRect(0,0,t,t);let h=new e.CanvasTexture(n);return h.colorSpace=e.SRGBColorSpace,h}a(Ho,"createRadialTexture");var Gr=`
|
|
46
46
|
attribute float aSize;
|
|
47
47
|
attribute float aAlpha;
|
|
48
48
|
attribute float aPhase;
|