@cyber-harbour/ui 2.0.32 → 2.0.33

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/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import {a,w,x,u,c,l,z,Pa,mb,ma,Wa}from'./chunk-E2SZRNFN.mjs';export{qb as Alert,A as AlertIcon,za as AndroidIcon,B as ApiIcon,C as ArrowCircleTopRightIcon,D as ArrowRightIcon,ia as BallsMenu,mb as Box,q as BreakpointProvider,E as BugReportIcon,Na as BurgerMenuIcon,sa as BusIcon,z as Button,F as CalendarIcon,ta as CarIcon,Gb as ChatField,ja as CheckIcon,sb as Checkbox,ka as ChevronDownIcon,G as ChevronLeftIcon,H as ChevronRightIcon,la as ChevronUpIcon,Oa as ClockIcon,I as CloseCircleIcon,J as ClosedLockIcon,zb as ContentLoader,db as ContextMenu,eb as ContextMenuDelimiter,qa as CrossIcon,K as DataSetsIcon,L as DeepSearchIcon,M as DisabledVisibleIcon,N as DocsIcon,O as DownloadIcon,vb as Drawer,xb as DrawerBody,wb as DrawerHeader,P as EditUserIcon,ob as EmptyData,Q as EnableVisibleIcon,R as EnterArrowLeftIcon,jb as FileField,xa as FileIcon,S as FiltersIcon,Ia as FlashIcon,kb as FlexContainer,lb as FlexItem,Ba as FolderAlertIcon,Ja as FolderInfoIcon,_a as Header,$a as HeaderDelimeter,ab as HeaderSection,T as HomepageIcon,Qa as ImageIcon,oa as InfoCircleFilledIcon,U as InfoCircleIcon,ib as Input,ya as IosIcon,rb as Label,nb as Line,tb as LinerProgress,Xa as ListMenu,Ya as ListMenuItem,Za as ListMenuSection,V as MapRadarIcon,ra as MaximizeIcon,Aa as MicrosoftIcon,Pa as MinusIcon,Bb as Modal,Db as ModalBody,Eb as ModalFooter,Cb as ModalHeader,W as MoonIcon,X as OpenLockIcon,Y as OrganizationIcon,Ab as Overlay,cb as Pagination,Ea as PassportIcon,Z as PasswordFinderIcon,Ga as PencilIcon,_ as PhonebookIcon,va as PlaneIcon,ma as PlusIcon,Fa as PointIcon,$ as PrintIcon,aa as Profiler2Icon,ba as ProfilerIcon,Hb as ProgressLoader,Ca as RelationIcon,Da as RelationPointsIcon,Ka as RotateLeftIcon,La as RotateRightIcon,hb as RowActionsMenu,ca as SandBoxIcon,da as SearchIcon,gb as Select,wa as ShipIcon,Sa as Sidebar,Ra as SidebarContext,Ua as SidebarDelimeter,Ta as SidebarItem,Va as SidebarSection,ea as StatisticIcon,fa as SunIcon,ub as Switch,bb as Table,pb as Tag,Fb as TailwindExample,s as ThemeProvider,yb as Tooltip,Wa as Typography,pa as UnfoldIcon,ga as UpRightArrowCircleIcon,Ma as UploadImageIcon,Ha as UserInCircleIcon,na as UsersIcon,ha as VectorIcon,ua as WayIcon,f as convertPaletteToRem,w as createComponent,x as createStyledComponent,p as darkTheme,o as darkThemePx,t as destructSpaceProps,u as generatePropertySpaceStyle,k as getBreakpoint,h as getButtonSizeStyles,g as getButtonStyles,i as getInputStyles,v as getResponsiveProps,j as getTypographyStyles,l as hexToRgba,n as lightTheme,m as lightThemePx,e as propToRem,c as pxToRem,d as remToPx,b as resolveThemeColor,r as useBreakpoint,fb as useContextMenuControl,y as useTheme}from'./chunk-E2SZRNFN.mjs';import Ht,{styled,useTheme}from'styled-components';export{ServerStyleSheet,StyleSheetManager}from'styled-components';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import it,{forwardRef,useState,useRef,useMemo,useCallback,useImperativeHandle,useEffect,useLayoutEffect,memo}from'react';import _t from'lodash.clonedeep';import {scaleOrdinal,schemeCategory10,forceSimulation,forceLink,forceManyBody,forceX,forceY,forceCenter,forceCollide}from'd3';import Ot from'react-content-loader';import {renderAsync}from'docx-preview';import {Prism}from'react-syntax-highlighter';import {darcula}from'react-syntax-highlighter/dist/esm/styles/prism';import Tr from'react-markdown';import Lr from'remark-gfm';var ii=a(({children:h,className:u})=>jsx(Tt,{className:u,children:h}),"PageLayout"),Tt=styled.div`
1
+ import {a,w,x,u,c,l,z,Pa,mb,ma,Wa}from'./chunk-MTAZFTXQ.mjs';export{qb as Alert,A as AlertIcon,za as AndroidIcon,B as ApiIcon,C as ArrowCircleTopRightIcon,D as ArrowRightIcon,ia as BallsMenu,mb as Box,q as BreakpointProvider,E as BugReportIcon,Na as BurgerMenuIcon,sa as BusIcon,z as Button,F as CalendarIcon,ta as CarIcon,Gb as ChatField,ja as CheckIcon,sb as Checkbox,ka as ChevronDownIcon,G as ChevronLeftIcon,H as ChevronRightIcon,la as ChevronUpIcon,Oa as ClockIcon,I as CloseCircleIcon,J as ClosedLockIcon,zb as ContentLoader,db as ContextMenu,eb as ContextMenuDelimiter,qa as CrossIcon,K as DataSetsIcon,L as DeepSearchIcon,M as DisabledVisibleIcon,N as DocsIcon,O as DownloadIcon,vb as Drawer,xb as DrawerBody,wb as DrawerHeader,P as EditUserIcon,ob as EmptyData,Q as EnableVisibleIcon,R as EnterArrowLeftIcon,jb as FileField,xa as FileIcon,S as FiltersIcon,Ia as FlashIcon,kb as FlexContainer,lb as FlexItem,Ba as FolderAlertIcon,Ja as FolderInfoIcon,_a as Header,$a as HeaderDelimeter,ab as HeaderSection,T as HomepageIcon,Qa as ImageIcon,oa as InfoCircleFilledIcon,U as InfoCircleIcon,ib as Input,ya as IosIcon,rb as Label,nb as Line,tb as LinerProgress,Xa as ListMenu,Ya as ListMenuItem,Za as ListMenuSection,V as MapRadarIcon,ra as MaximizeIcon,Aa as MicrosoftIcon,Pa as MinusIcon,Bb as Modal,Db as ModalBody,Eb as ModalFooter,Cb as ModalHeader,W as MoonIcon,X as OpenLockIcon,Y as OrganizationIcon,Ab as Overlay,cb as Pagination,Ea as PassportIcon,Z as PasswordFinderIcon,Ga as PencilIcon,_ as PhonebookIcon,va as PlaneIcon,ma as PlusIcon,Fa as PointIcon,$ as PrintIcon,aa as Profiler2Icon,ba as ProfilerIcon,Hb as ProgressLoader,Ca as RelationIcon,Da as RelationPointsIcon,Ka as RotateLeftIcon,La as RotateRightIcon,hb as RowActionsMenu,ca as SandBoxIcon,da as SearchIcon,gb as Select,wa as ShipIcon,Sa as Sidebar,Ra as SidebarContext,Ua as SidebarDelimeter,Ta as SidebarItem,Va as SidebarSection,ea as StatisticIcon,fa as SunIcon,ub as Switch,bb as Table,pb as Tag,Fb as TailwindExample,s as ThemeProvider,yb as Tooltip,Wa as Typography,pa as UnfoldIcon,ga as UpRightArrowCircleIcon,Ma as UploadImageIcon,Ha as UserInCircleIcon,na as UsersIcon,ha as VectorIcon,ua as WayIcon,f as convertPaletteToRem,w as createComponent,x as createStyledComponent,p as darkTheme,o as darkThemePx,t as destructSpaceProps,u as generatePropertySpaceStyle,k as getBreakpoint,h as getButtonSizeStyles,g as getButtonStyles,i as getInputStyles,v as getResponsiveProps,j as getTypographyStyles,l as hexToRgba,n as lightTheme,m as lightThemePx,e as propToRem,c as pxToRem,d as remToPx,b as resolveThemeColor,r as useBreakpoint,fb as useContextMenuControl,y as useTheme}from'./chunk-MTAZFTXQ.mjs';import Ot,{styled,useTheme}from'styled-components';export{ServerStyleSheet,StyleSheetManager}from'styled-components';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import it,{forwardRef,useState,useRef,useMemo,useCallback,useImperativeHandle,useEffect,useLayoutEffect,memo}from'react';import Zt from'lodash.clonedeep';import {scaleOrdinal,schemeCategory10,forceSimulation,forceLink,forceManyBody,forceX,forceY,forceCenter,forceCollide}from'd3';import $t from'react-content-loader';import {renderAsync}from'docx-preview';import {Prism}from'react-syntax-highlighter';import {darcula}from'react-syntax-highlighter/dist/esm/styles/prism';import Tr from'react-markdown';import Lr from'remark-gfm';var ii=a(({children:h,className:u})=>jsx(Ct,{className:u,children:h}),"PageLayout"),Ct=styled.div`
2
2
  display: grid;
3
3
  min-height: 100dvh;
4
4
  position: relative;
@@ -9,11 +9,11 @@ import {a,w,x,u,c,l,z,Pa,mb,ma,Wa}from'./chunk-E2SZRNFN.mjs';export{qb as Alert,
9
9
  & > header {
10
10
  grid-area: header;
11
11
  }
12
- `;var di=a(({children:h,className:u})=>jsx(Rt,{className:u,children:h}),"PageContent"),Rt=styled.main`
12
+ `;var di=a(({children:h,className:u})=>jsx(It,{className:u,children:h}),"PageContent"),It=styled.main`
13
13
  grid-area: content;
14
14
  min-width: 0;
15
15
  background: ${({theme:h})=>h.colors.backgroundBase};
16
- `;var gi=a(({children:h,className:u,top:m=0})=>jsx(zt,{className:u,$top:m,onClick:M=>M.stopPropagation(),children:h}),"SubNav"),zt=styled.div(({theme:h,$top:u})=>`
16
+ `;var gi=a(({children:h,className:u,top:m=0})=>jsx(jt,{className:u,$top:m,onClick:M=>M.stopPropagation(),children:h}),"SubNav"),jt=styled.div(({theme:h,$top:u})=>`
17
17
  display: flex;
18
18
  flex-direction: column;
19
19
  justify-content: space-between;
@@ -33,25 +33,25 @@ import {a,w,x,u,c,l,z,Pa,mb,ma,Wa}from'./chunk-E2SZRNFN.mjs';export{qb as Alert,
33
33
  position: sticky;
34
34
  border-right: 1px solid ${h.colors.stroke.light};
35
35
  }
36
- `);var Di=w(({maxWidth:h,...u})=>jsx(At,{...u,$maxWidth:h})),At=x(styled.div(({theme:h,$maxWidth:u$1,px:m=20})=>`
36
+ `);var Di=w(({maxWidth:h,...u})=>jsx(Bt,{...u,$maxWidth:h})),Bt=x(styled.div(({theme:h,$maxWidth:u$1,px:m=20})=>`
37
37
  ${u(h,"padding-inline",m)}
38
38
  width: 100%;
39
39
  min-width: 0;
40
40
  max-width: ${typeof u$1=="number"?c(u$1,h.baseSize):u$1||"100%"};
41
- `),{ignoreStyles:["padding-inline"]});var Wt=Ht.div`
41
+ `),{ignoreStyles:["padding-inline"]});var Xt=Ot.div`
42
42
  width: 100%;
43
43
  height: 100%;
44
44
  display: flex;
45
45
  align-items: center;
46
46
  justify-content: center;
47
- `,Yt=a(({width:h=280,height:u=280})=>{let m=useTheme();return jsx(Wt,{children:jsxs(Ot,{foregroundColor:m.contentLoader.foreground,backgroundColor:m.contentLoader.background,width:h,height:u,viewBox:"0 0 280 280",children:[jsx("path",{d:"m55 38-0.97266 0.22852 7.0801 30.092-18.355-20.979-0.75195 0.6582 19.596 22.395 0.43164 1.834 0.97266-0.22852 0.75195-0.6582-0.37695-0.42969 9.625-27.912-0.94531-0.32617-9.4375 27.371-0.10547-0.12109zm8 34-0.78516 0.61914 0.0957 0.12305-12.311 13.258 0.73242 0.67969 12.205-13.145 14.277 18.084 0.78516-0.61914-14.373-18.207 0.10547-0.11328zm15 19-0.48438 0.875 46.992 25.996 8e-3 4e-3 20.506 11.592-28.182 4.5449 0.15998 0.98819 29.418-4.7441 0.25 0.14062-12.555 24.143 0.88672 0.46094 13-25 15 25 26 30v18l-11 18 0.85352 0.52148 9.8008-16.039-4.6543 33.518 0.99023 0.13867 4.7793-34.408 7.2305 16.27 0.91406-0.40625-7.9141-17.807v-17.104l18 12.316 0.56445-0.82617-18.896-12.928-25.855-29.836-14.633-24.387 0.01562-0.02344h23.805v-1h-23.152l13.848-21.234 55.201-28.791-0.45898-0.88476 0.77734 0.62305 11.402-14.25 16.668-11.842-0.58008-0.81641-16.785 11.928-11.486 14.355-55.434 28.912-14.277 21.893-7.7617-27.166-0.96094 0.27344 7.7227 27.031-1.1191 0.17969-21.604-12.211zm140.43-12.912-6.957-17.338-0.92773 0.37305 6.957 17.338zm-6.957-17.338 0.72266 0.69336 16.232-16.896-0.7207-0.69336zm-3.4766 137.25 5 15 0.94922-0.31641-5-15zm-91-63-0.48047-0.87695-31 17 0.48047 0.87695zm-31 17 5 18 0.96289-0.26758-5-18zm0 0-0.70703-0.70703-12.898 12.898-17.881 9.9336 0.48633 0.875 18-10zm5 18-0.64062-0.76758-18 15 0.64062 0.76758z"}),jsx("circle",{cx:"229.92",cy:"63.7318",r:"5",transform:"rotate(173.661 229.92 63.7318)"}),jsx("circle",{cx:"227.711",cy:"43.8541",r:"5",transform:"rotate(173.661 227.711 43.8541)"}),jsx("circle",{cx:"211.478",cy:"60.7499",r:"5",transform:"rotate(173.661 211.478 60.7499)"}),jsx("circle",{cx:"218.434",cy:"78.0877",r:"5",transform:"rotate(173.661 218.434 78.0877)"}),jsx("circle",{cx:"246.705",cy:"51.8054",r:"5",transform:"rotate(173.661 246.705 51.8054)"}),jsx("circle",{cx:"42",cy:"48",r:"5"}),jsx("circle",{cx:"55",cy:"38",r:"5"}),jsx("circle",{cx:"73",cy:"43",r:"5"}),jsx("circle",{cx:"63",cy:"72",r:"5"}),jsx("circle",{cx:"50",cy:"86",r:"5"}),jsx("circle",{cx:"78",cy:"91",r:"5"}),jsx("circle",{cx:"73",cy:"165",r:"5"}),jsx("circle",{cx:"73",cy:"185",r:"5"}),jsx("circle",{cx:"91",cy:"170",r:"5"}),jsx("circle",{cx:"86",cy:"152",r:"5"}),jsx("circle",{cx:"148",cy:"130",r:"5"}),jsx("circle",{cx:"189",cy:"185",r:"5"}),jsx("circle",{cx:"163",cy:"107",r:"5"}),jsx("circle",{cx:"140",cy:"102",r:"5"}),jsx("circle",{cx:"117",cy:"135",r:"5"}),jsx("circle",{cx:"125",cy:"117",r:"5"}),jsx("circle",{cx:"208",cy:"198",r:"5"}),jsx("circle",{cx:"189",cy:"203",r:"5"}),jsx("circle",{cx:"198",cy:"221",r:"5"}),jsx("circle",{cx:"178",cy:"221",r:"5"}),jsx("circle",{cx:"184",cy:"239",r:"5"}),jsx("circle",{cx:"213",cy:"213",r:"5"}),jsx("circle",{cx:"173",cy:"130",r:"5"}),jsx("circle",{cx:"163",cy:"155",r:"5"}),jsx("circle",{cx:"135",cy:"155",r:"5"}),jsx("circle",{cx:"55",cy:"175",r:"5"})]})})},"GraphLoader"),tt=Yt;var me=typeof window<"u"&&window.devicePixelRatio||1;function sr(h){return !h||h.length===0?[]:h.map(u=>{let m=new Image;m.src=u.img;let M=new Image;return M.src=u.hoverImg,{...u,normalImg:m,hoverImg:M}})}a(sr,"prepareButtonImages");var L={fontSize:3,nodeSizeBase:30,nodeAreaFactor:2,textPaddingFactor:.9,gridSpacing:20,dotSize:1,maxZoom:4},cr=forwardRef(({loading:h,width:u,height:m,graphData:M,buttons:D=[],onNodeClick:k,onBackgroundClick:w,onNodeHover:O,onLinkHover:$,onLinkClick:B},H)=>{let P=useTheme(),[Y,Re]=useState(true),t=useRef({transform:{x:0,y:0,k:1},isPanning:false,hoveredNode:null,hoveredLink:null,draggedNode:null,selectedNode:null,hoveredButtonIndex:null,highlightNodes:new Set,highlightLinks:new Set,lastMousePos:{x:0,y:0},mustBeStoppedPropagation:false,mouseStartPos:null,isDragging:false,width:u*me,height:m*me,animation:{id:null,buttonIndex:null},spinnerAngle:0}),{nodes:U,links:ee}=useMemo(()=>_t(M),[M]),[X,xt]=useState([]),E=useRef(null),S=useRef(null),ie=useRef(null),kt=scaleOrdinal(schemeCategory10),St=useCallback(()=>{if(!E.current)return false;try{let e=E.current.getContext("2d");return e?(ie.current=e,!0):(console.error("Failed to get 2D context"),!1)}catch(e){return console.error("Error initializing Canvas 2D context:",e),false}},[]),q=useCallback(()=>S.current?S.current.nodes():null,[]),ae=useCallback(()=>{if(!S.current)return null;let e=S.current.force("link");return e?e.links():null},[]),Ee=useCallback(e=>{e.save(),e.setTransform(1,0,0,1,0,0);let{width:n,height:r}=t.current,o=L.gridSpacing,i=L.dotSize;e.fillStyle=P.graph2D.grid.dotColor;for(let c=o/2;c<=n;c+=o)for(let a=o/2;a<=r;a+=o)e.beginPath(),e.arc(c,a,i,0,2*Math.PI),e.fill();e.restore();},[P.graph2D.grid.dotColor,L.gridSpacing,L.dotSize]),Pt=useCallback((e,n,r)=>{if(!e)return "";if(r.measureText(e).width<=n)return e;let i=e,c="...";for(;r.measureText(i+c).width>n&&i.length>0;)i=i.slice(0,-1);return i+c},[]),ve=a(e=>{let r=Math.min(e,L.maxZoom)/L.maxZoom;return Math.max(L.fontSize*r,L.fontSize)},"calculateFontSize"),je=useCallback(e=>{let n=ae(),r=q();!n||n.length===0||!r||r.length===0||(e.lineWidth=.5,e.globalAlpha=1,n.forEach(o=>{let i=typeof o.source=="object"?o.source:r.find(V=>V.id===o.source),c=typeof o.target=="object"?o.target:r.find(V=>V.id===o.target);if(!i||!c)return;let a={x:i.x||0,y:i.y||0},s={x:c.x||0,y:c.y||0},d=s.x-a.x,f=s.y-a.y,p=Math.sqrt(d*d+f*f),N=d/p,b=f/p,j=L.nodeSizeBase/2,T=L.nodeSizeBase/2,I=4,l={x:a.x+N*j,y:a.y+b*j},v={x:s.x-N*(T+I),y:s.y-b*(T+I)},g={x:s.x-N*(T+1),y:s.y-b*(T+1)},z=t.current.highlightLinks.has(o),R=z?P.graph2D.link.highlighted:P.graph2D.link.normal,F=z?1.5:.5,W=a.x+(s.x-a.x)/2,_=a.y+(s.y-a.y)/2,J=Math.atan2(f,d);if(o.label){let V=t.current.transform.k,K=ve(V);e.font=`${K}px Sans-Serif`;let Ye=e.measureText(o.label).width,Ge=10;e.beginPath(),e.moveTo(l.x,l.y);let qe=p/2-(Ye+Ge)/2,Ue={x:a.x+N*qe,y:a.y+b*qe};e.lineTo(Ue.x,Ue.y),e.strokeStyle=R,e.lineWidth=F,e.stroke(),e.beginPath();let Ve=p/2+(Ye+Ge)/2,Ze={x:a.x+N*Ve,y:a.y+b*Ve};e.moveTo(Ze.x,Ze.y),e.lineTo(v.x,v.y),e.strokeStyle=R,e.lineWidth=F,e.stroke();}else e.beginPath(),e.moveTo(l.x,l.y),e.lineTo(v.x,v.y),e.strokeStyle=R,e.lineWidth=F,e.stroke();let ne=2;if(e.save(),e.translate(g.x,g.y),e.rotate(J),e.beginPath(),e.moveTo(0,0),e.lineTo(-4,ne),e.lineTo(-4,0),e.lineTo(-4,-2),e.closePath(),e.fillStyle=R,e.fill(),e.restore(),o.label){let V=t.current.transform.k,K=ve(V);e.font=`${K}px Sans-Serif`,e.textAlign="center",e.textBaseline="middle",e.save(),e.translate(W,_),Math.abs(J)>Math.PI/2?e.rotate(J+Math.PI):e.rotate(J),e.fillStyle=z?P.graph2D.link.highlightedTextColor:P.graph2D.link.textColor,e.fillText(o.label,0,0),e.restore();}}));},[L,P.graph2D.link]),ze=a((e,n,r,o,i,c,a)=>{try{if(c!=null){let s=i*.8;e.font=`${s}px sans-serif`,e.textBaseline="middle",e.textAlign="left";let d=new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1,minimumFractionDigits:0,compactDisplay:"short"}).format(c),f=e.measureText(d).width,p=i*.3,b=(i+p+f)/2;e.drawImage(n,r-b,o-i/2,i,i),e.fillStyle=a||"#99989C",e.fillText(d,r-b+i+p,o);}else e.drawImage(n,r-i/2,o-i/2,i,i);}catch(s){console.warn("Error rendering icon:",s);}},"drawIconWithOptionalCounter"),Fe=useCallback((e,n)=>{if(!X||X.length===0||!e||!e.x||!e.y)return;let{x:r,y:o}=e,i=L.nodeSizeBase*L.nodeAreaFactor/2;n.save();let c=Math.min(X.length,8),a=Math.min(Math.PI*2/c,Math.PI);for(let s=0;s<c;s++){let d=s*a,f=(s+1)*a,p=t.current.hoveredButtonIndex===s;n.beginPath(),n.arc(r,o,i,d,f,false),n.lineTo(r,o),n.closePath(),n.lineWidth=1,n.strokeStyle=P.graph2D?.button?.stroke||"#FFFFFF",n.stroke(),n.fillStyle=p?P.graph2D?.button?.hoverFill||"rgba(255, 255, 255, 0.3)":P.graph2D?.button?.normalFill||"rgba(255, 255, 255, 0.1)",n.fill();let N=i*.2,b=(d+f)/2,j=i-L.nodeSizeBase/2+N,T=r+Math.cos(b)*j,I=o+Math.sin(b)*j,l$1=X[s];if(l$1.loading){let v=N/2,g=N/12;n.save(),n.translate(T,I),n.rotate(t.current.spinnerAngle);for(let z=0;z<12;z++){let R=Math.PI*2*z/12,F=z/12,W=Math.cos(R)*v,_=Math.sin(R)*v;n.beginPath(),n.fillStyle=l(P.graph2D?.button?.spinnerColor,F),n.arc(W,_,g,0,Math.PI*2),n.fill();}n.restore(),t.current.spinnerAngle+=.1,t.current.spinnerAngle>Math.PI*2&&(t.current.spinnerAngle-=Math.PI*2),t.current.animation.id!==null&&(cancelAnimationFrame(t.current.animation.id),t.current.animation.id=null,t.current.animation.buttonIndex=null),t.current.animation.id=requestAnimationFrame(A),t.current.animation.buttonIndex=s;}else {t.current.animation.id&&t.current.animation.buttonIndex===s&&(cancelAnimationFrame(t.current.animation.id),t.current.animation.id=null,t.current.animation.buttonIndex=null);let v=p?l$1.hoverImg:l$1.normalImg,g=l$1.getCount?l$1.getCount(e):null;v.complete?ze(n,v,T,I,N,g,P.graph2D?.button?.textColor):v.onload=()=>{ie.current&&ze(n,v,T,I,N,g,P.graph2D?.button?.textColor);};}}n.restore();},[X,P.graph2D?.button]),Be=useCallback(e=>{let n=q();!n||n.length===0||(e.globalAlpha=1,n.forEach(r=>{let{x:o,y:i,color:c,fontColor:a,label:s}=r,d=t.current.highlightNodes.has(r)||r===t.current.hoveredNode||r===t.current.draggedNode,f=r===t.current.selectedNode,p=L.nodeSizeBase,N=L.nodeSizeBase/2;if(d&&!f){let b=L.nodeSizeBase*L.nodeAreaFactor*.75/2;e.beginPath(),e.arc(o,i,b,0,2*Math.PI,false),e.fillStyle=P.graph2D.ring.highlightFill,e.fill();}if(f)if(D&&D.length>0)Fe(r,e);else {let b=L.nodeSizeBase*L.nodeAreaFactor/2;e.beginPath(),e.arc(o,i,b,0,2*Math.PI,false),e.fillStyle=P.graph2D.ring.selectionFill||P.graph2D.ring.highlightFill,e.fill();}if(e.beginPath(),e.arc(o,i,N,0,2*Math.PI),e.fillStyle=c||kt(r.group||"0"),e.fill(),s){e.save(),e.translate(o,i);let b=t.current.transform.k,j=ve(b),T=p*L.textPaddingFactor;e.font=`${j}px Sans-Serif`,e.textAlign="center",e.textBaseline="middle",e.fillStyle=a||"#000";let I=Pt(s,T,e);e.fillText(I,0,0),e.restore();}}));},[P.graph2D.ring,D,Fe]),A=useCallback(()=>{let e=ie.current;e&&(e.clearRect(0,0,t.current.width,t.current.height),Ee(e),e.save(),e.setTransform(t.current.transform.k,0,0,t.current.transform.k,t.current.transform.x,t.current.transform.y),je(e),Be(e),e.restore());},[je,Be,Ee]),Ae=useCallback((e,n=[],r)=>{let o=ae()||[],i=q()||[];if(!S.current||!e.length)return;let{width:c,height:a}=t.current,s=r?.smoothAppearance??false,d=r?.transitionDuration??1e3,f=new Set(i.map(l=>l.id)),p=e.filter(l=>!f.has(l.id)),N=new Set(o.map(l=>`${typeof l.source=="object"?l.source.id:l.source}-${typeof l.target=="object"?l.target.id:l.target}`)),b=n.filter(l=>{let v=`${typeof l.source=="object"?l.source.id:l.source}-${typeof l.target=="object"?l.target.id:l.target}`;return !N.has(v)});if(p.length===0&&b.length===0)return;let j=[...i,...p],T=[...o,...b];s&&(p.forEach(l=>{let v=b.filter(g=>{let z=typeof g.source=="object"?g.source.id:g.source,R=typeof g.target=="object"?g.target.id:g.target;return z===l.id&&f.has(R)||R===l.id&&f.has(z)});if(v.length>0){let g=v[0],z=typeof g.source=="object"?g.source.id===l.id?g.target:g.source.id:g.source===l.id?g.target:g.source,R=j.find(F=>F.id===z);if(R&&R.x!==void 0&&R.y!==void 0){let F=30+Math.random()*20,W=Math.random()*Math.PI*2;l.x=R.x+Math.cos(W)*F,l.y=R.y+Math.sin(W)*F,l.vx=0,l.vy=0;}}else {let g=c/2,z=a/2,R=Math.min(c,a)/4,F=Math.random()*Math.PI*2;l.x=g+Math.cos(F)*(R*Math.random()),l.y=z+Math.sin(F)*(R*Math.random()),l.vx=0,l.vy=0;}}),i.forEach(l=>{l.fx=l.x,l.fy=l.y;})),S.current.nodes(j);let I=S.current.force("link");I&&I.links(T),b.forEach(l=>{let v=typeof l.source=="object"?l.source:j.find(z=>z.id===l.source),g=typeof l.target=="object"?l.target:j.find(z=>z.id===l.target);!v||!g||(!v.neighbors&&(v.neighbors=[]),!g.neighbors&&(g.neighbors=[]),v.neighbors.push(g),g.neighbors.push(v),!v.links&&(v.links=[]),!g.links&&(g.links=[]),v.links.push(l),g.links.push(l));}),s?(S.current.alphaTarget(.3),S.current.alpha(.3),S.current.velocityDecay(.7),S.current.restart(),setTimeout(()=>{i.forEach(l=>{l.fx=void 0,l.fy=void 0;}),S.current?.alphaTarget(0),S.current?.alpha(.1),S.current?.velocityDecay(.6);},d)):S.current.alpha(.1).restart(),A();},[U,A]),$e=useCallback(e=>{let n=q(),r=ae();if(!S.current||!e.length||!n||n.length===0||!r||r.length===0)return;let o=new Set(e);if(t.current.selectedNode&&t.current.selectedNode.id!==void 0&&o.has(t.current.selectedNode.id)&&(t.current.selectedNode=null),t.current.hoveredNode&&t.current.hoveredNode.id!==void 0&&o.has(t.current.hoveredNode.id)&&(t.current.hoveredNode=null,t.current.highlightNodes=new Set,t.current.highlightLinks=new Set),t.current.hoveredLink){let s=typeof t.current.hoveredLink.source=="object"?t.current.hoveredLink.source.id:t.current.hoveredLink.source,d=typeof t.current.hoveredLink.target=="object"?t.current.hoveredLink.target.id:t.current.hoveredLink.target;(s!==void 0&&o.has(s)||d!==void 0&&o.has(d))&&(t.current.hoveredLink=null,t.current.highlightNodes=new Set,t.current.highlightLinks=new Set);}t.current.draggedNode&&t.current.draggedNode.id!==void 0&&o.has(t.current.draggedNode.id)&&(t.current.draggedNode=null);let i=n.filter(s=>s.id!==void 0&&!o.has(s.id)),c=r.filter(s=>{let d=typeof s.source=="object"?s.source.id:s.source,f=typeof s.target=="object"?s.target.id:s.target;return d!==void 0&&!o.has(d)&&f!==void 0&&!o.has(f)});i.forEach(s=>{s.neighbors=[],s.links=[];}),c.forEach(s=>{let d=typeof s.source=="object"?s.source:i.find(p=>p.id===s.source),f=typeof s.target=="object"?s.target:i.find(p=>p.id===s.target);!d||!f||(d.neighbors=d.neighbors||[],f.neighbors=f.neighbors||[],d.neighbors.push(f),f.neighbors.push(d),d.links=d.links||[],f.links=f.links||[],d.links.push(s),f.links.push(s));}),S.current.nodes(i);let a=S.current.force("link");a&&a.links(c),A();},[A]),se=useCallback((e=0,n=20)=>{let r=q();if(!ie.current||!E.current||!r||!r.length)return;let i=1/0,c=1/0,a$1=-1/0,s=-1/0;if(r.forEach(d=>{if(d.x===void 0||d.y===void 0)return;let f=d.x,p=d.y;i=Math.min(i,f),c=Math.min(c,p),a$1=Math.max(a$1,f),s=Math.max(s,p);}),isFinite(i)&&isFinite(a$1)&&isFinite(c)&&isFinite(s)){let{width:d,height:f}=t.current;i-=n,c-=n,a$1+=n,s+=n;let p=a$1-i,N=s-c,b=p>0?d/p:1,j=N>0?f/N:1,T=Math.min(b,j,10),I=i+p/2,l=c+N/2,v={k:T,x:d/2-I*T,y:f/2-l*T};if(e>0){let g={...t.current.transform},z=Date.now(),R=a(()=>{let F=Math.min(1,(Date.now()-z)/e),W=F===1?1:1-Math.pow(1-F,3),_={k:g.k+(v.k-g.k)*W,x:g.x+(v.x-g.x)*W,y:g.y+(v.y-g.y)*W};t.current.transform=_,A(),F<1&&requestAnimationFrame(R);},"animateZoom");requestAnimationFrame(R);}else t.current.transform=v,A();}},[]),ce=useCallback((e,n)=>{let r=q();if(!r||r.length===0)return null;let o=L.nodeSizeBase/2,i=typeof window<"u"&&window.devicePixelRatio||1,c=(e*i-t.current.transform.x)/t.current.transform.k,a=(n*i-t.current.transform.y)/t.current.transform.k;return r.find(s=>{let d=(s.x||0)-c,f=(s.y||0)-a;return Math.sqrt(d*d+f*f)<=o})||null},[]),le=useCallback((e,n)=>{let r=ae(),o=q();if(!r||r.length===0||!o||o.length===0)return null;let i=typeof window<"u"&&window.devicePixelRatio||1,c=(e*i-t.current.transform.x)/t.current.transform.k,a=(n*i-t.current.transform.y)/t.current.transform.k,s=5;return r.find(d=>{let f=typeof d.source=="object"?d.source:o.find(K=>K.id===d.source),p=typeof d.target=="object"?d.target:o.find(K=>K.id===d.target);if(!f||!p)return false;let N=f.x||0,b=f.y||0,j=p.x||0,T=p.y||0,I=c-N,l=a-b,v=j-N,g=T-b,z=I*v+l*g,R=v*v+g*g;if(R===0)return false;let F=z/R;F=Math.max(0,Math.min(1,F));let W=N+F*v,_=b+F*g,J=c-W,ne=a-_;return Math.sqrt(J*J+ne*ne)<=s})||null},[]),Oe=useCallback((e,n,r,o,i,c,a)=>{let s=e-r,d=n-o,f=Math.sqrt(s*s+d*d),p=Math.atan2(d,s);p<0&&(p+=2*Math.PI);let j=f>=i*.5&&f<=i*1,T=false;return c===Math.PI&&a===Math.PI*2?T=p>=Math.PI&&p<=Math.PI*2:c===0&&a===Math.PI?T=p>=0&&p<=Math.PI:T=c<=a&&p>=c&&p<=a||c>a&&(p>=c||p<=a),j&&T},[]),we=useCallback(e=>{if(e===t.current.hoveredNode)return;let n=new Set,r=new Set;e&&(n.add(e),e.neighbors&&e.neighbors.forEach(o=>n.add(o)),e.links&&e.links.forEach(o=>r.add(o))),t.current.hoveredNode=e,O&&O(e),t.current.highlightNodes=n,t.current.highlightLinks=r;},[O]),be=useCallback(e=>{if(e===t.current.hoveredLink)return;let n=new Set,r=new Set;if(e){r.add(e);let o=q();if(o){let i=typeof e.source=="object"?e.source:o.find(a=>a.id===e.source),c=typeof e.target=="object"?e.target:o.find(a=>a.id===e.target);i&&n.add(i),c&&n.add(c);}}t.current.hoveredLink=e,$&&$(e),t.current.highlightNodes=n,t.current.highlightLinks=r;},[$,q]),He=useCallback(e=>{B&&B(e);},[B]),Xe=useCallback(e=>{t.current.selectedNode=e,k&&k(e);},[k]),We=useCallback(()=>{t.current.selectedNode=null,w&&w();},[w]),xe=useCallback(e=>{if(!E.current||!S.current)return;let n=E.current.getBoundingClientRect(),r=e.clientX-n.left,o=e.clientY-n.top;t.current.mouseStartPos={x:r,y:o},t.current.isDragging=false;let i=ce(r,o);i?(t.current.draggedNode=i,i.fx=i.x,i.fy=i.y):(t.current.isPanning=true,t.current.lastMousePos={x:r,y:o});},[ce]),de=useCallback((e,n)=>{let r=null;if(E.current&&t.current&&X.length>0){let o=L.nodeSizeBase*L.nodeAreaFactor/2,i=E.current.getBoundingClientRect(),c=E.current.width/i.width,a=E.current.height/i.height,s=e*c,d=n*a,f=(s-t.current.transform.x)/t.current.transform.k,p=(d-t.current.transform.y)/t.current.transform.k,N=t.current.selectedNode?.x||0,b=t.current.selectedNode?.y||0,j=Math.min(X.length,8),T=Math.min(Math.PI*2/j,Math.PI);for(let I=0;I<j;I++){let l=I*T,v=(I+1)*T;if(Oe(f,p,N,b,o,l,v)){r=I;break}}}return r},[X]),ke=useCallback(e=>{if(!E.current)return;let n=E.current.getBoundingClientRect(),r=e.clientX-n.left,o=e.clientY-n.top;if(t.current.draggedNode&&t.current.mouseStartPos&&S.current){let a=t.current.mouseStartPos.x,s=t.current.mouseStartPos.y,d=r-a,f=o-s;Math.sqrt(d*d+f*f)>3&&(t.current.isDragging=true,S.current.alphaTarget()===0&&S.current.alphaTarget(0).restart());let b=typeof window<"u"&&window.devicePixelRatio||1,j=(r*b-t.current.transform.x)/t.current.transform.k,T=(o*b-t.current.transform.y)/t.current.transform.k;t.current.draggedNode.fx=j,t.current.draggedNode.fy=T;return}if(t.current.isPanning&&t.current.mouseStartPos){let a=r-t.current.lastMousePos.x,s=o-t.current.lastMousePos.y,d=t.current.mouseStartPos.x,f=t.current.mouseStartPos.y;Math.sqrt(Math.pow(r-d,2)+Math.pow(o-f,2))>3&&(t.current.isDragging=true),t.current.transform={...t.current.transform,x:t.current.transform.x+a,y:t.current.transform.y+s},t.current.lastMousePos={x:r,y:o},A();return}let i,c;if(t.current.selectedNode&&E.current&&X.length>0){let a=de(r,o);a!==null&&(c=t.current.selectedNode),a!==t.current.hoveredButtonIndex&&(i=true),t.current.hoveredButtonIndex=a;}else t.current.hoveredButtonIndex!==null&&(t.current.hoveredButtonIndex=null);if(!c&&(c=ce(r,o),!c)){let a=le(r,o),s=a!==t.current.hoveredLink;if(a&&t.current.hoveredNode&&we(null),be(a),E.current&&(E.current.style.cursor=a?"pointer":"default"),s){A();return}}c&&t.current.hoveredLink&&be(null),c!==t.current.hoveredNode&&(i=true),we(c),E.current&&(E.current.style.cursor=c?"pointer":"default"),i&&A();},[X,ce,le,we,be,A,Oe,de]),Mt=useCallback(e=>{t.current.mustBeStoppedPropagation&&(e.stopPropagation(),e.preventDefault()),t.current.mustBeStoppedPropagation=false;},[]),ue=useCallback(e=>{let n=t.current.isDragging;if(n&&(t.current.mustBeStoppedPropagation=true),!n&&t.current.mouseStartPos){let r=E.current?.getBoundingClientRect();if(r){let o=e.clientX-r.left,i=e.clientY-r.top;X.length>0&&t.current.hoveredButtonIndex===null&&(t.current.hoveredButtonIndex=de(o,i));let c=false;if(t.current.selectedNode&&t.current.hoveredButtonIndex!==null&&D[t.current.hoveredButtonIndex]){let a=D[t.current.hoveredButtonIndex];a&&a.onClick&&(a.onClick(t.current.selectedNode),c=true,t.current.hoveredButtonIndex=null);}if(!c&&t.current.draggedNode)Xe(t.current.draggedNode);else if(!c&&!t.current.draggedNode){let a=le(o,i);a?He(a):We();}}}if(t.current.draggedNode&&S.current){if(n){S.current.alphaTarget(0);let r=.05,o=.04,i=.6;S.current.alpha(r).alphaDecay(o),S.current.velocityDecay(i);}else S.current.alphaTarget(0);t.current.draggedNode.fx=void 0,t.current.draggedNode.fy=void 0,t.current.draggedNode=null;}t.current.isDragging=false,t.current.mouseStartPos=null,t.current.isPanning&&(t.current.isPanning=false),A();},[D,A,Xe,We,le,He,de,X]),Se=useCallback(e=>{if(e.stopPropagation(),e.preventDefault(),!E.current)return;let n=E.current.getBoundingClientRect(),r=e.clientX-n.left,o=e.clientY-n.top,c=-e.deltaY>0?1.1:1/1.1,a=t.current.transform,s=a.k*c;if(s<.01||s>10)return;let d=a.k*c,f=r-(r-a.x)*c,p=o-(o-a.y)*c;t.current.transform={k:d,x:f,y:p},A();},[A]),Pe=a((e,n)=>{let r=e.touches[0];if(r){let o={clientX:r.clientX,clientY:r.clientY};n(o);}},"convertTouchToMouseEvent"),Dt=useCallback(e=>{Pe(e,xe);},[xe]),Me=useCallback(e=>{t.current.mustBeStoppedPropagation&&(e.preventDefault(),e.stopPropagation()),t.current.mustBeStoppedPropagation=false,Pe(e,ue);},[ue]),Nt=useCallback(e=>{Pe(e,ke);},[ke]);return useImperativeHandle(H,()=>({zoomToFit:se,addNodes:Ae,removeNodes:$e}),[se,Ae,$e]),useEffect(()=>{let e=E.current,{width:n,height:r}=t.current;if(!e)return;St(),Re(true);let o=n/2,i=r/2,c=L.nodeSizeBase,a=c/2,s=c*2.5;S.current&&S.current.stop();let d=S.current=forceSimulation(U).force("link",forceLink(ee).id(f=>f.id).distance(s).strength(.9)).force("charge",forceManyBody().strength(-c/10*200).theta(.5).distanceMin(c*2)).force("x",forceX().strength(.03)).force("y",forceY().strength(.03)).force("center",forceCenter(o,i).strength(.05)).force("collide",forceCollide().radius(a*2).iterations(2).strength(1)).velocityDecay(.6);return ()=>{d.stop();}},[U,ee]),useLayoutEffect(()=>{let e=E.current;e&&(t.current.width=u*me,t.current.height=m*me,e.width=t.current.width,e.height=t.current.height);},[u,m]),useEffect(()=>{if(S.current){let e=S.current;e.on("tick",()=>{A();}),e.on("end",()=>{Y&&(se(0,20),setTimeout(()=>{Re(false);},200));});}Y||A();},[U,ee,Y,A,se]),useEffect(()=>{!U||!ee||ee.forEach(e=>{let n=typeof e.source=="object"?e.source:U.find(o=>o.id===e.source),r=typeof e.target=="object"?e.target:U.find(o=>o.id===e.target);!n||!r||(!n.neighbors&&(n.neighbors=[]),!r.neighbors&&(r.neighbors=[]),n.neighbors.push(r),r.neighbors.push(n),!n.links&&(n.links=[]),!r.links&&(r.links=[]),n.links.push(e),r.links.push(e));});},[U,ee]),useEffect(()=>{D&&D.length>0&&xt(sr(D));},[D]),useEffect(()=>{let e=E.current;if(!(!e||typeof window>"u"))return e.addEventListener("wheel",Se,{passive:false}),e.addEventListener("touchend",Me,{passive:false}),()=>{e.removeEventListener("wheel",Se),e.removeEventListener("touchend",Me);}},[Se,Me]),jsxs(lr,{children:[(h||Y)&&jsx(tt,{width:u,height:m}),jsx(dr,{ref:E,style:{width:u,height:m,display:h||Y?"none":"block"},onMouseDown:xe,onMouseMove:ke,onMouseUp:ue,onMouseLeave:ue,onClick:Mt,onTouchStart:Dt,onTouchMove:Nt})]})}),lr=styled.div`
47
+ `,Wt=a(({width:h=280,height:u=280})=>{let m=useTheme();return jsx(Xt,{children:jsxs($t,{foregroundColor:m.contentLoader.foreground,backgroundColor:m.contentLoader.background,width:h,height:u,viewBox:"0 0 280 280",children:[jsx("path",{d:"m55 38-0.97266 0.22852 7.0801 30.092-18.355-20.979-0.75195 0.6582 19.596 22.395 0.43164 1.834 0.97266-0.22852 0.75195-0.6582-0.37695-0.42969 9.625-27.912-0.94531-0.32617-9.4375 27.371-0.10547-0.12109zm8 34-0.78516 0.61914 0.0957 0.12305-12.311 13.258 0.73242 0.67969 12.205-13.145 14.277 18.084 0.78516-0.61914-14.373-18.207 0.10547-0.11328zm15 19-0.48438 0.875 46.992 25.996 8e-3 4e-3 20.506 11.592-28.182 4.5449 0.15998 0.98819 29.418-4.7441 0.25 0.14062-12.555 24.143 0.88672 0.46094 13-25 15 25 26 30v18l-11 18 0.85352 0.52148 9.8008-16.039-4.6543 33.518 0.99023 0.13867 4.7793-34.408 7.2305 16.27 0.91406-0.40625-7.9141-17.807v-17.104l18 12.316 0.56445-0.82617-18.896-12.928-25.855-29.836-14.633-24.387 0.01562-0.02344h23.805v-1h-23.152l13.848-21.234 55.201-28.791-0.45898-0.88476 0.77734 0.62305 11.402-14.25 16.668-11.842-0.58008-0.81641-16.785 11.928-11.486 14.355-55.434 28.912-14.277 21.893-7.7617-27.166-0.96094 0.27344 7.7227 27.031-1.1191 0.17969-21.604-12.211zm140.43-12.912-6.957-17.338-0.92773 0.37305 6.957 17.338zm-6.957-17.338 0.72266 0.69336 16.232-16.896-0.7207-0.69336zm-3.4766 137.25 5 15 0.94922-0.31641-5-15zm-91-63-0.48047-0.87695-31 17 0.48047 0.87695zm-31 17 5 18 0.96289-0.26758-5-18zm0 0-0.70703-0.70703-12.898 12.898-17.881 9.9336 0.48633 0.875 18-10zm5 18-0.64062-0.76758-18 15 0.64062 0.76758z"}),jsx("circle",{cx:"229.92",cy:"63.7318",r:"5",transform:"rotate(173.661 229.92 63.7318)"}),jsx("circle",{cx:"227.711",cy:"43.8541",r:"5",transform:"rotate(173.661 227.711 43.8541)"}),jsx("circle",{cx:"211.478",cy:"60.7499",r:"5",transform:"rotate(173.661 211.478 60.7499)"}),jsx("circle",{cx:"218.434",cy:"78.0877",r:"5",transform:"rotate(173.661 218.434 78.0877)"}),jsx("circle",{cx:"246.705",cy:"51.8054",r:"5",transform:"rotate(173.661 246.705 51.8054)"}),jsx("circle",{cx:"42",cy:"48",r:"5"}),jsx("circle",{cx:"55",cy:"38",r:"5"}),jsx("circle",{cx:"73",cy:"43",r:"5"}),jsx("circle",{cx:"63",cy:"72",r:"5"}),jsx("circle",{cx:"50",cy:"86",r:"5"}),jsx("circle",{cx:"78",cy:"91",r:"5"}),jsx("circle",{cx:"73",cy:"165",r:"5"}),jsx("circle",{cx:"73",cy:"185",r:"5"}),jsx("circle",{cx:"91",cy:"170",r:"5"}),jsx("circle",{cx:"86",cy:"152",r:"5"}),jsx("circle",{cx:"148",cy:"130",r:"5"}),jsx("circle",{cx:"189",cy:"185",r:"5"}),jsx("circle",{cx:"163",cy:"107",r:"5"}),jsx("circle",{cx:"140",cy:"102",r:"5"}),jsx("circle",{cx:"117",cy:"135",r:"5"}),jsx("circle",{cx:"125",cy:"117",r:"5"}),jsx("circle",{cx:"208",cy:"198",r:"5"}),jsx("circle",{cx:"189",cy:"203",r:"5"}),jsx("circle",{cx:"198",cy:"221",r:"5"}),jsx("circle",{cx:"178",cy:"221",r:"5"}),jsx("circle",{cx:"184",cy:"239",r:"5"}),jsx("circle",{cx:"213",cy:"213",r:"5"}),jsx("circle",{cx:"173",cy:"130",r:"5"}),jsx("circle",{cx:"163",cy:"155",r:"5"}),jsx("circle",{cx:"135",cy:"155",r:"5"}),jsx("circle",{cx:"55",cy:"175",r:"5"})]})})},"GraphLoader"),tt=Wt;var me=typeof window<"u"&&window.devicePixelRatio||1;function ar(h){return !h||h.length===0?[]:h.map(u=>{let m=new Image;m.src=u.img;let M=new Image;return M.src=u.hoverImg,{...u,normalImg:m,hoverImg:M}})}a(ar,"prepareButtonImages");var L={fontSize:3,nodeSizeBase:30,nodeAreaFactor:2,textPaddingFactor:.9,gridSpacing:20,dotSize:1,maxZoom:4},sr=forwardRef(({loading:h,width:u,height:m,graphData:M,buttons:D=[],onNodeClick:k,onBackgroundClick:w,onNodeHover:O,onLinkHover:$,onLinkClick:B},H)=>{let P=useTheme(),[Y,Re]=useState(true),t=useRef({transform:{x:0,y:0,k:1},isPanning:false,hoveredNode:null,hoveredLink:null,draggedNode:null,selectedNode:null,hoveredButtonIndex:null,highlightNodes:new Set,highlightLinks:new Set,lastMousePos:{x:0,y:0},mustBeStoppedPropagation:false,mouseStartPos:null,isDragging:false,width:u*me,height:m*me,animation:{id:null,buttonIndex:null},spinnerAngle:0}),{nodes:U,links:ee}=useMemo(()=>Zt(M),[M]),[X,bt]=useState([]),E=useRef(null),S=useRef(null),ie=useRef(null),xt=scaleOrdinal(schemeCategory10),kt=useCallback(()=>{if(!E.current)return false;try{let e=E.current.getContext("2d");return e?(ie.current=e,!0):(console.error("Failed to get 2D context"),!1)}catch(e){return console.error("Error initializing Canvas 2D context:",e),false}},[]),q=useCallback(()=>S.current?S.current.nodes():null,[]),ae=useCallback(()=>{if(!S.current)return null;let e=S.current.force("link");return e?e.links():null},[]),Ee=useCallback(e=>{e.save(),e.setTransform(1,0,0,1,0,0);let{width:n,height:r}=t.current,o=L.gridSpacing,i=L.dotSize;e.fillStyle=P.graph2D.grid.dotColor;for(let c=o/2;c<=n;c+=o)for(let a=o/2;a<=r;a+=o)e.beginPath(),e.arc(c,a,i,0,2*Math.PI),e.fill();e.restore();},[P.graph2D.grid.dotColor,L.gridSpacing,L.dotSize]),St=useCallback((e,n,r)=>{if(!e)return "";if(r.measureText(e).width<=n)return e;let i=e,c="...";for(;r.measureText(i+c).width>n&&i.length>0;)i=i.slice(0,-1);return i+c},[]),ve=a(e=>{let r=Math.min(e,L.maxZoom)/L.maxZoom;return Math.max(L.fontSize*r,L.fontSize)},"calculateFontSize"),je=useCallback(e=>{let n=ae(),r=q();!n||n.length===0||!r||r.length===0||(e.lineWidth=.5,e.globalAlpha=1,n.forEach(o=>{let i=typeof o.source=="object"?o.source:r.find(V=>V.id===o.source),c=typeof o.target=="object"?o.target:r.find(V=>V.id===o.target);if(!i||!c)return;let a={x:i.x||0,y:i.y||0},s={x:c.x||0,y:c.y||0},d=s.x-a.x,f=s.y-a.y,p=Math.sqrt(d*d+f*f),N=d/p,b=f/p,j=L.nodeSizeBase/2,T=L.nodeSizeBase/2,I=4,l={x:a.x+N*j,y:a.y+b*j},v={x:s.x-N*(T+I),y:s.y-b*(T+I)},g={x:s.x-N*(T+1),y:s.y-b*(T+1)},z=t.current.highlightLinks.has(o),R=z?P.graph2D.link.highlighted:P.graph2D.link.normal,F=z?1.5:.5,W=a.x+(s.x-a.x)/2,_=a.y+(s.y-a.y)/2,J=Math.atan2(f,d);if(o.label){let V=t.current.transform.k,K=ve(V);e.font=`${K}px Sans-Serif`;let Ye=e.measureText(o.label).width,Ge=10;e.beginPath(),e.moveTo(l.x,l.y);let qe=p/2-(Ye+Ge)/2,Ue={x:a.x+N*qe,y:a.y+b*qe};e.lineTo(Ue.x,Ue.y),e.strokeStyle=R,e.lineWidth=F,e.stroke(),e.beginPath();let Ve=p/2+(Ye+Ge)/2,Ze={x:a.x+N*Ve,y:a.y+b*Ve};e.moveTo(Ze.x,Ze.y),e.lineTo(v.x,v.y),e.strokeStyle=R,e.lineWidth=F,e.stroke();}else e.beginPath(),e.moveTo(l.x,l.y),e.lineTo(v.x,v.y),e.strokeStyle=R,e.lineWidth=F,e.stroke();let ne=2;if(e.save(),e.translate(g.x,g.y),e.rotate(J),e.beginPath(),e.moveTo(0,0),e.lineTo(-4,ne),e.lineTo(-4,0),e.lineTo(-4,-2),e.closePath(),e.fillStyle=R,e.fill(),e.restore(),o.label){let V=t.current.transform.k,K=ve(V);e.font=`${K}px Sans-Serif`,e.textAlign="center",e.textBaseline="middle",e.save(),e.translate(W,_),Math.abs(J)>Math.PI/2?e.rotate(J+Math.PI):e.rotate(J),e.fillStyle=z?P.graph2D.link.highlightedTextColor:P.graph2D.link.textColor,e.fillText(o.label,0,0),e.restore();}}));},[L,P.graph2D.link]),ze=a((e,n,r,o,i,c,a)=>{try{if(c!=null){let s=i*.8;e.font=`${s}px sans-serif`,e.textBaseline="middle",e.textAlign="left";let d=new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1,minimumFractionDigits:0,compactDisplay:"short"}).format(c),f=e.measureText(d).width,p=i*.3,b=(i+p+f)/2;e.drawImage(n,r-b,o-i/2,i,i),e.fillStyle=a||"#99989C",e.fillText(d,r-b+i+p,o);}else e.drawImage(n,r-i/2,o-i/2,i,i);}catch(s){console.warn("Error rendering icon:",s);}},"drawIconWithOptionalCounter"),Fe=useCallback((e,n)=>{if(!X||X.length===0||!e||!e.x||!e.y)return;let{x:r,y:o}=e,i=L.nodeSizeBase*L.nodeAreaFactor/2;n.save();let c=Math.min(X.length,8),a=Math.min(Math.PI*2/c,Math.PI);for(let s=0;s<c;s++){let d=s*a,f=(s+1)*a,p=t.current.hoveredButtonIndex===s;n.beginPath(),n.arc(r,o,i,d,f,false),n.lineTo(r,o),n.closePath(),n.lineWidth=1,n.strokeStyle=P.graph2D?.button?.stroke||"#FFFFFF",n.stroke(),n.fillStyle=p?P.graph2D?.button?.hoverFill||"rgba(255, 255, 255, 0.3)":P.graph2D?.button?.normalFill||"rgba(255, 255, 255, 0.1)",n.fill();let N=i*.2,b=(d+f)/2,j=i-L.nodeSizeBase/2+N,T=r+Math.cos(b)*j,I=o+Math.sin(b)*j,l$1=X[s];if(l$1.loading){let v=N/2,g=N/12;n.save(),n.translate(T,I),n.rotate(t.current.spinnerAngle);for(let z=0;z<12;z++){let R=Math.PI*2*z/12,F=z/12,W=Math.cos(R)*v,_=Math.sin(R)*v;n.beginPath(),n.fillStyle=l(P.graph2D?.button?.spinnerColor,F),n.arc(W,_,g,0,Math.PI*2),n.fill();}n.restore(),t.current.spinnerAngle+=.1,t.current.spinnerAngle>Math.PI*2&&(t.current.spinnerAngle-=Math.PI*2),t.current.animation.id!==null&&(cancelAnimationFrame(t.current.animation.id),t.current.animation.id=null,t.current.animation.buttonIndex=null),t.current.animation.id=requestAnimationFrame(A),t.current.animation.buttonIndex=s;}else {t.current.animation.id&&t.current.animation.buttonIndex===s&&(cancelAnimationFrame(t.current.animation.id),t.current.animation.id=null,t.current.animation.buttonIndex=null);let v=p?l$1.hoverImg:l$1.normalImg,g=l$1.getCount?l$1.getCount(e):null;v.complete?ze(n,v,T,I,N,g,P.graph2D?.button?.textColor):v.onload=()=>{ie.current&&ze(n,v,T,I,N,g,P.graph2D?.button?.textColor);};}}n.restore();},[X,P.graph2D?.button]),Be=useCallback(e=>{let n=q();!n||n.length===0||(e.globalAlpha=1,n.forEach(r=>{let{x:o,y:i,color:c,fontColor:a,label:s}=r,d=t.current.highlightNodes.has(r)||r===t.current.hoveredNode||r===t.current.draggedNode,f=r===t.current.selectedNode,p=L.nodeSizeBase,N=L.nodeSizeBase/2;if(d&&!f){let b=L.nodeSizeBase*L.nodeAreaFactor*.75/2;e.beginPath(),e.arc(o,i,b,0,2*Math.PI,false),e.fillStyle=P.graph2D.ring.highlightFill,e.fill();}if(f)if(D&&D.length>0)Fe(r,e);else {let b=L.nodeSizeBase*L.nodeAreaFactor/2;e.beginPath(),e.arc(o,i,b,0,2*Math.PI,false),e.fillStyle=P.graph2D.ring.selectionFill||P.graph2D.ring.highlightFill,e.fill();}if(e.beginPath(),e.arc(o,i,N,0,2*Math.PI),e.fillStyle=c||xt(r.group||"0"),e.fill(),s){e.save(),e.translate(o,i);let b=t.current.transform.k,j=ve(b),T=p*L.textPaddingFactor;e.font=`${j}px Sans-Serif`,e.textAlign="center",e.textBaseline="middle",e.fillStyle=a||"#000";let I=St(s,T,e);e.fillText(I,0,0),e.restore();}}));},[P.graph2D.ring,D,Fe]),A=useCallback(()=>{let e=ie.current;e&&(e.clearRect(0,0,t.current.width,t.current.height),Ee(e),e.save(),e.setTransform(t.current.transform.k,0,0,t.current.transform.k,t.current.transform.x,t.current.transform.y),je(e),Be(e),e.restore());},[je,Be,Ee]),Ae=useCallback((e,n=[],r)=>{let o=ae()||[],i=q()||[];if(!S.current||!e.length)return;let{width:c,height:a}=t.current,s=r?.smoothAppearance??false,d=r?.transitionDuration??1e3,f=new Set(i.map(l=>l.id)),p=e.filter(l=>!f.has(l.id)),N=new Set(o.map(l=>`${typeof l.source=="object"?l.source.id:l.source}-${typeof l.target=="object"?l.target.id:l.target}`)),b=n.filter(l=>{let v=`${typeof l.source=="object"?l.source.id:l.source}-${typeof l.target=="object"?l.target.id:l.target}`;return !N.has(v)});if(p.length===0&&b.length===0)return;let j=[...i,...p],T=[...o,...b];s&&(p.forEach(l=>{let v=b.filter(g=>{let z=typeof g.source=="object"?g.source.id:g.source,R=typeof g.target=="object"?g.target.id:g.target;return z===l.id&&f.has(R)||R===l.id&&f.has(z)});if(v.length>0){let g=v[0],z=typeof g.source=="object"?g.source.id===l.id?g.target:g.source.id:g.source===l.id?g.target:g.source,R=j.find(F=>F.id===z);if(R&&R.x!==void 0&&R.y!==void 0){let F=30+Math.random()*20,W=Math.random()*Math.PI*2;l.x=R.x+Math.cos(W)*F,l.y=R.y+Math.sin(W)*F,l.vx=0,l.vy=0;}}else {let g=c/2,z=a/2,R=Math.min(c,a)/4,F=Math.random()*Math.PI*2;l.x=g+Math.cos(F)*(R*Math.random()),l.y=z+Math.sin(F)*(R*Math.random()),l.vx=0,l.vy=0;}}),i.forEach(l=>{l.fx=l.x,l.fy=l.y;})),S.current.nodes(j);let I=S.current.force("link");I&&I.links(T),b.forEach(l=>{let v=typeof l.source=="object"?l.source:j.find(z=>z.id===l.source),g=typeof l.target=="object"?l.target:j.find(z=>z.id===l.target);!v||!g||(!v.neighbors&&(v.neighbors=[]),!g.neighbors&&(g.neighbors=[]),v.neighbors.push(g),g.neighbors.push(v),!v.links&&(v.links=[]),!g.links&&(g.links=[]),v.links.push(l),g.links.push(l));}),s?(S.current.alphaTarget(.3),S.current.alpha(.3),S.current.velocityDecay(.7),S.current.restart(),setTimeout(()=>{i.forEach(l=>{l.fx=void 0,l.fy=void 0;}),S.current?.alphaTarget(0),S.current?.alpha(.1),S.current?.velocityDecay(.6);},d)):S.current.alpha(.1).restart(),A();},[U,A]),$e=useCallback(e=>{let n=q(),r=ae();if(!S.current||!e.length||!n||n.length===0||!r||r.length===0)return;let o=new Set(e);if(t.current.selectedNode&&t.current.selectedNode.id!==void 0&&o.has(t.current.selectedNode.id)&&(t.current.selectedNode=null),t.current.hoveredNode&&t.current.hoveredNode.id!==void 0&&o.has(t.current.hoveredNode.id)&&(t.current.hoveredNode=null,t.current.highlightNodes=new Set,t.current.highlightLinks=new Set),t.current.hoveredLink){let s=typeof t.current.hoveredLink.source=="object"?t.current.hoveredLink.source.id:t.current.hoveredLink.source,d=typeof t.current.hoveredLink.target=="object"?t.current.hoveredLink.target.id:t.current.hoveredLink.target;(s!==void 0&&o.has(s)||d!==void 0&&o.has(d))&&(t.current.hoveredLink=null,t.current.highlightNodes=new Set,t.current.highlightLinks=new Set);}t.current.draggedNode&&t.current.draggedNode.id!==void 0&&o.has(t.current.draggedNode.id)&&(t.current.draggedNode=null);let i=n.filter(s=>s.id!==void 0&&!o.has(s.id)),c=r.filter(s=>{let d=typeof s.source=="object"?s.source.id:s.source,f=typeof s.target=="object"?s.target.id:s.target;return d!==void 0&&!o.has(d)&&f!==void 0&&!o.has(f)});i.forEach(s=>{s.neighbors=[],s.links=[];}),c.forEach(s=>{let d=typeof s.source=="object"?s.source:i.find(p=>p.id===s.source),f=typeof s.target=="object"?s.target:i.find(p=>p.id===s.target);!d||!f||(d.neighbors=d.neighbors||[],f.neighbors=f.neighbors||[],d.neighbors.push(f),f.neighbors.push(d),d.links=d.links||[],f.links=f.links||[],d.links.push(s),f.links.push(s));}),S.current.nodes(i);let a=S.current.force("link");a&&a.links(c),A();},[A]),se=useCallback((e=0,n=20)=>{let r=q();if(!ie.current||!E.current||!r||!r.length)return;let i=1/0,c=1/0,a$1=-1/0,s=-1/0;if(r.forEach(d=>{if(d.x===void 0||d.y===void 0)return;let f=d.x,p=d.y;i=Math.min(i,f),c=Math.min(c,p),a$1=Math.max(a$1,f),s=Math.max(s,p);}),isFinite(i)&&isFinite(a$1)&&isFinite(c)&&isFinite(s)){let{width:d,height:f}=t.current;i-=n,c-=n,a$1+=n,s+=n;let p=a$1-i,N=s-c,b=p>0?d/p:1,j=N>0?f/N:1,T=Math.min(b,j,10),I=i+p/2,l=c+N/2,v={k:T,x:d/2-I*T,y:f/2-l*T};if(e>0){let g={...t.current.transform},z=Date.now(),R=a(()=>{let F=Math.min(1,(Date.now()-z)/e),W=F===1?1:1-Math.pow(1-F,3),_={k:g.k+(v.k-g.k)*W,x:g.x+(v.x-g.x)*W,y:g.y+(v.y-g.y)*W};t.current.transform=_,A(),F<1&&requestAnimationFrame(R);},"animateZoom");requestAnimationFrame(R);}else t.current.transform=v,A();}},[]),ce=useCallback((e,n)=>{let r=q();if(!r||r.length===0)return null;let o=L.nodeSizeBase/2,i=typeof window<"u"&&window.devicePixelRatio||1,c=(e*i-t.current.transform.x)/t.current.transform.k,a=(n*i-t.current.transform.y)/t.current.transform.k;return r.find(s=>{let d=(s.x||0)-c,f=(s.y||0)-a;return Math.sqrt(d*d+f*f)<=o})||null},[]),le=useCallback((e,n)=>{let r=ae(),o=q();if(!r||r.length===0||!o||o.length===0)return null;let i=typeof window<"u"&&window.devicePixelRatio||1,c=(e*i-t.current.transform.x)/t.current.transform.k,a=(n*i-t.current.transform.y)/t.current.transform.k,s=5;return r.find(d=>{let f=typeof d.source=="object"?d.source:o.find(K=>K.id===d.source),p=typeof d.target=="object"?d.target:o.find(K=>K.id===d.target);if(!f||!p)return false;let N=f.x||0,b=f.y||0,j=p.x||0,T=p.y||0,I=c-N,l=a-b,v=j-N,g=T-b,z=I*v+l*g,R=v*v+g*g;if(R===0)return false;let F=z/R;F=Math.max(0,Math.min(1,F));let W=N+F*v,_=b+F*g,J=c-W,ne=a-_;return Math.sqrt(J*J+ne*ne)<=s})||null},[]),Oe=useCallback((e,n,r,o,i,c,a)=>{let s=e-r,d=n-o,f=Math.sqrt(s*s+d*d),p=Math.atan2(d,s);p<0&&(p+=2*Math.PI);let j=f>=i*.5&&f<=i*1,T=false;return c===Math.PI&&a===Math.PI*2?T=p>=Math.PI&&p<=Math.PI*2:c===0&&a===Math.PI?T=p>=0&&p<=Math.PI:T=c<=a&&p>=c&&p<=a||c>a&&(p>=c||p<=a),j&&T},[]),we=useCallback(e=>{if(e===t.current.hoveredNode)return;let n=new Set,r=new Set;e&&(n.add(e),e.neighbors&&e.neighbors.forEach(o=>n.add(o)),e.links&&e.links.forEach(o=>r.add(o))),t.current.hoveredNode=e,O&&O(e),t.current.highlightNodes=n,t.current.highlightLinks=r;},[O]),be=useCallback(e=>{if(e===t.current.hoveredLink)return;let n=new Set,r=new Set;if(e){r.add(e);let o=q();if(o){let i=typeof e.source=="object"?e.source:o.find(a=>a.id===e.source),c=typeof e.target=="object"?e.target:o.find(a=>a.id===e.target);i&&n.add(i),c&&n.add(c);}}t.current.hoveredLink=e,$&&$(e),t.current.highlightNodes=n,t.current.highlightLinks=r;},[$,q]),He=useCallback(e=>{B&&B(e);},[B]),Xe=useCallback(e=>{t.current.selectedNode=e,k&&k(e);},[k]),We=useCallback(()=>{t.current.selectedNode=null,w&&w();},[w]),xe=useCallback(e=>{if(!E.current||!S.current)return;let n=E.current.getBoundingClientRect(),r=e.clientX-n.left,o=e.clientY-n.top;t.current.mouseStartPos={x:r,y:o},t.current.isDragging=false;let i=ce(r,o);i?(t.current.draggedNode=i,i.fx=i.x,i.fy=i.y):(t.current.isPanning=true,t.current.lastMousePos={x:r,y:o});},[ce]),de=useCallback((e,n)=>{let r=null;if(E.current&&t.current&&X.length>0){let o=L.nodeSizeBase*L.nodeAreaFactor/2,i=E.current.getBoundingClientRect(),c=E.current.width/i.width,a=E.current.height/i.height,s=e*c,d=n*a,f=(s-t.current.transform.x)/t.current.transform.k,p=(d-t.current.transform.y)/t.current.transform.k,N=t.current.selectedNode?.x||0,b=t.current.selectedNode?.y||0,j=Math.min(X.length,8),T=Math.min(Math.PI*2/j,Math.PI);for(let I=0;I<j;I++){let l=I*T,v=(I+1)*T;if(Oe(f,p,N,b,o,l,v)){r=I;break}}}return r},[X]),ke=useCallback(e=>{if(!E.current)return;let n=E.current.getBoundingClientRect(),r=e.clientX-n.left,o=e.clientY-n.top;if(t.current.draggedNode&&t.current.mouseStartPos&&S.current){let a=t.current.mouseStartPos.x,s=t.current.mouseStartPos.y,d=r-a,f=o-s;Math.sqrt(d*d+f*f)>3&&(t.current.isDragging=true,S.current.alphaTarget()===0&&S.current.alphaTarget(0).restart());let b=typeof window<"u"&&window.devicePixelRatio||1,j=(r*b-t.current.transform.x)/t.current.transform.k,T=(o*b-t.current.transform.y)/t.current.transform.k;t.current.draggedNode.fx=j,t.current.draggedNode.fy=T;return}if(t.current.isPanning&&t.current.mouseStartPos){let a=r-t.current.lastMousePos.x,s=o-t.current.lastMousePos.y,d=t.current.mouseStartPos.x,f=t.current.mouseStartPos.y;Math.sqrt(Math.pow(r-d,2)+Math.pow(o-f,2))>3&&(t.current.isDragging=true),t.current.transform={...t.current.transform,x:t.current.transform.x+a,y:t.current.transform.y+s},t.current.lastMousePos={x:r,y:o},A();return}let i,c;if(t.current.selectedNode&&E.current&&X.length>0){let a=de(r,o);a!==null&&(c=t.current.selectedNode),a!==t.current.hoveredButtonIndex&&(i=true),t.current.hoveredButtonIndex=a;}else t.current.hoveredButtonIndex!==null&&(t.current.hoveredButtonIndex=null);if(!c&&(c=ce(r,o),!c)){let a=le(r,o),s=a!==t.current.hoveredLink;if(a&&t.current.hoveredNode&&we(null),be(a),E.current&&(E.current.style.cursor=a?"pointer":"default"),s){A();return}}c&&t.current.hoveredLink&&be(null),c!==t.current.hoveredNode&&(i=true),we(c),E.current&&(E.current.style.cursor=c?"pointer":"default"),i&&A();},[X,ce,le,we,be,A,Oe,de]),Pt=useCallback(e=>{t.current.mustBeStoppedPropagation&&(e.stopPropagation(),e.preventDefault()),t.current.mustBeStoppedPropagation=false;},[]),ue=useCallback(e=>{let n=t.current.isDragging;if(n&&(t.current.mustBeStoppedPropagation=true),!n&&t.current.mouseStartPos){let r=E.current?.getBoundingClientRect();if(r){let o=e.clientX-r.left,i=e.clientY-r.top;X.length>0&&t.current.hoveredButtonIndex===null&&(t.current.hoveredButtonIndex=de(o,i));let c=false;if(t.current.selectedNode&&t.current.hoveredButtonIndex!==null&&D[t.current.hoveredButtonIndex]){let a=D[t.current.hoveredButtonIndex];a&&a.onClick&&(a.onClick(t.current.selectedNode),c=true,t.current.hoveredButtonIndex=null);}if(!c&&t.current.draggedNode)Xe(t.current.draggedNode);else if(!c&&!t.current.draggedNode){let a=le(o,i);a?He(a):We();}}}if(t.current.draggedNode&&S.current){if(n){S.current.alphaTarget(0);let r=.05,o=.04,i=.6;S.current.alpha(r).alphaDecay(o),S.current.velocityDecay(i);}else S.current.alphaTarget(0);t.current.draggedNode.fx=void 0,t.current.draggedNode.fy=void 0,t.current.draggedNode=null;}t.current.isDragging=false,t.current.mouseStartPos=null,t.current.isPanning&&(t.current.isPanning=false),A();},[D,A,Xe,We,le,He,de,X]),Se=useCallback(e=>{if(e.stopPropagation(),e.preventDefault(),!E.current)return;let n=E.current.getBoundingClientRect(),r=e.clientX-n.left,o=e.clientY-n.top,c=-e.deltaY>0?1.1:1/1.1,a=t.current.transform,s=a.k*c;if(s<.01||s>10)return;let d=a.k*c,f=r-(r-a.x)*c,p=o-(o-a.y)*c;t.current.transform={k:d,x:f,y:p},A();},[A]),Pe=a((e,n)=>{let r=e.touches[0];if(r){let o={clientX:r.clientX,clientY:r.clientY};n(o);}},"convertTouchToMouseEvent"),Mt=useCallback(e=>{Pe(e,xe);},[xe]),Me=useCallback(e=>{t.current.mustBeStoppedPropagation&&(e.preventDefault(),e.stopPropagation()),t.current.mustBeStoppedPropagation=false,Pe(e,ue);},[ue]),Dt=useCallback(e=>{Pe(e,ke);},[ke]);return useImperativeHandle(H,()=>({zoomToFit:se,addNodes:Ae,removeNodes:$e}),[se,Ae,$e]),useEffect(()=>{let e=E.current,{width:n,height:r}=t.current;if(!e)return;kt(),Re(true);let o=n/2,i=r/2,c=L.nodeSizeBase,a=c/2,s=c*2.5;S.current&&S.current.stop();let d=S.current=forceSimulation(U).force("link",forceLink(ee).id(f=>f.id).distance(s).strength(.9)).force("charge",forceManyBody().strength(-c/10*200).theta(.5).distanceMin(c*2)).force("x",forceX().strength(.03)).force("y",forceY().strength(.03)).force("center",forceCenter(o,i).strength(.05)).force("collide",forceCollide().radius(a*2).iterations(2).strength(1)).velocityDecay(.6);return ()=>{d.stop();}},[U,ee]),useLayoutEffect(()=>{let e=E.current;e&&(t.current.width=u*me,t.current.height=m*me,e.width=t.current.width,e.height=t.current.height);},[u,m]),useEffect(()=>{if(S.current){let e=S.current;e.on("tick",()=>{A();}),e.on("end",()=>{Y&&(se(0,20),setTimeout(()=>{Re(false);},200));});}Y||A();},[U,ee,Y,A,se]),useEffect(()=>{!U||!ee||ee.forEach(e=>{let n=typeof e.source=="object"?e.source:U.find(o=>o.id===e.source),r=typeof e.target=="object"?e.target:U.find(o=>o.id===e.target);!n||!r||(!n.neighbors&&(n.neighbors=[]),!r.neighbors&&(r.neighbors=[]),n.neighbors.push(r),r.neighbors.push(n),!n.links&&(n.links=[]),!r.links&&(r.links=[]),n.links.push(e),r.links.push(e));});},[U,ee]),useEffect(()=>{D&&D.length>0&&bt(ar(D));},[D]),useEffect(()=>{let e=E.current;if(!(!e||typeof window>"u"))return e.addEventListener("wheel",Se,{passive:false}),e.addEventListener("touchend",Me,{passive:false}),()=>{e.removeEventListener("wheel",Se),e.removeEventListener("touchend",Me);}},[Se,Me]),jsxs(cr,{children:[(h||Y)&&jsx(tt,{width:u,height:m}),jsx(lr,{ref:E,style:{width:u,height:m,display:h||Y?"none":"block"},onMouseDown:xe,onMouseMove:ke,onMouseUp:ue,onMouseLeave:ue,onClick:Pt,onTouchStart:Mt,onTouchMove:Dt})]})}),cr=styled.div`
48
48
  display: flex;
49
49
  align-items: center;
50
50
  justify-content: center;
51
51
  width: 100%;
52
52
  min-width: 0;
53
53
  position: relative;
54
- `,dr=styled.canvas``;cr.displayName="Graph2D";var ta=w(({isActive:h,position:u,top:m=0,left:M=0,right:D,bottom:k,...w})=>jsx(fr,{$isActive:h,$position:u,$top:m,$left:M,$right:D,$bottom:k,...w})),fr=Ht.div(({$isActive:h,$top:u,$left:m,$right:M,$bottom:D,$position:k,theme:w})=>`
54
+ `,lr=styled.canvas``;sr.displayName="Graph2D";var ta=w(({isActive:h,position:u,top:m=0,left:M=0,right:D,bottom:k,...w})=>jsx(hr,{$isActive:h,$position:u,$top:m,$left:M,$right:D,$bottom:k,...w})),hr=Ot.div(({$isActive:h,$top:u,$left:m,$right:M,$bottom:D,$position:k,theme:w})=>`
55
55
  ${h?`
56
56
  position: ${k};
57
57
  z-index: 1000;
@@ -63,5 +63,5 @@ ${h?`
63
63
  `:""}
64
64
 
65
65
  min-width: 0;
66
- `);var st=a(({url:h})=>{let[u,m]=useState(1),[M,D]=useState(),k=it.useRef(null),w=it.useRef(null),O=a(()=>{m(B=>Math.min(B+.25,4));},"handleZoomIn");return jsxs("div",{ref:w,className:"h-full w-full flex flex-col",children:[jsxs("div",{className:"flex justify-center items-stretch p-5.5 gap-1 border-b border-gray-200 relative ",children:[jsx(z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsx(Pa,{style:{width:20,height:20}}),onClick:a(()=>{m(B=>Math.max(B-.25,.25));},"handleZoomOut"),disabled:u<=.25,p:5}),jsxs(mb,{py:5,px:8,children:[u*100,"%"]}),jsx(z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsx(ma,{style:{width:14,height:14}}),onClick:O,disabled:u>=4,p:8})]}),jsx("div",{className:"h-full w-full overflow-auto flex items-center justify-center",children:jsx("img",{src:h,ref:k,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"height 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...M==="width"&&{width:`calc(${u*100}% - 20px)`},...M==="height"&&{height:`calc(${u*100}% - 20px)`}},onLoad:()=>{if(k.current&&w.current){let B=k.current.width,H=k.current.height,P=B<H?"height":"width";D(P);}}})})]})},"ImageDriver");var lt=a(({url:h})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full p-5.5",children:jsx("audio",{controls:true,src:h,className:"w-full"})}),"AudioDriver");var Ce=a(({url:h})=>{let[u,m]=useState(null),[M,D]=useState(false),[k,w]=useState(true),[O,$]=useState(null);return useEffect(()=>{D(true);},[]),useEffect(()=>{if(!M)return;a(async()=>{try{let H=await import('./PdfDriver-KPSPVZ55.mjs');m(()=>H.PdfDriver),w(!1);}catch(H){console.error("Failed to load PDF driver:",H),$("Failed to load PDF viewer"),w(false);}},"loadPdfDriver")();},[M]),M?k?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})}):O||!u?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-red-500 text-center",children:jsx("p",{children:O||"PDF viewer unavailable"})})}):jsx(u,{url:h}):jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})})},"PdfDriverWrapper");var ut=a(({url:h,extension:u})=>jsxs("a",{href:h,download:`file.${u}`,className:"text-blue-500 underline",children:["Download ",u.toUpperCase()," file"]}),"DownloadDriver");var ft=50,wr=1e4,pt=a(({url:h,blob:u})=>{let m=useRef(null),[M,D]=useState(null),[k,w]=useState(true);return useEffect(()=>{a(async()=>{if(m.current)try{if(w(!0),D(null),!u&&h&&(u=await(await fetch(h)).blob()),!u){D("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(u.size/(1024*1024)>ft){D(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${ft} \u041C\u0411)`);return}m.current.innerHTML="";let B=renderAsync(u,m.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),H=new Promise((P,Y)=>setTimeout(()=>Y(new Error("\u0420\u0435\u043D\u0434\u0435\u0440\u0438\u043D\u0433 DOCX \u0437\u0430\u0439\u043D\u044F\u0432 \u043D\u0430\u0434\u0442\u043E \u0431\u0430\u0433\u0430\u0442\u043E \u0447\u0430\u0441\u0443")),wr));await Promise.race([B,H]),w(!1);}catch($){D($?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),w(false);}},"renderDocument")();},[h,u]),jsxs(Fragment,{children:[!!M&&!k&&jsx("div",{className:"text-red-500 p-5",children:M}),k&&jsx("div",{className:"flex items-center justify-center p-5",children:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F..."}),jsx("div",{ref:m,className:"w-full h-full overflow-auto"})]})},"DocxDriver");var Mr=a(h=>({js:"javascript",jsx:"jsx",ts:"typescript",tsx:"tsx",json:"json",html:"html",css:"css",scss:"scss",py:"python",java:"java",cpp:"cpp",c:"c",cs:"csharp",php:"php",rb:"ruby",go:"go",rs:"rust",swift:"swift",kt:"kotlin",xml:"xml",yaml:"yaml",yml:"yaml",md:"markdown",sql:"sql",sh:"bash",bash:"bash",txt:"text"})[h]||"text","getLanguageFromExtension"),gt=a(({url:h,extension:u})=>{let[m,M]=useState(""),[D,k]=useState(true),[w,O]=useState(null);if(useEffect(()=>{a(async()=>{try{k(!0),O(null);let P=await fetch(h);if(!P.ok)throw new Error(`Failed to load file: ${P.statusText}`);let Y=await P.text();M(Y);}catch(P){O(P instanceof Error?P.message:"Failed to load text content");}finally{k(false);}},"loadTextContent")();},[h]),D)return jsx("div",{className:"flex items-center justify-center p-8",children:jsx("div",{className:"text-gray-500",children:"Loading text content..."})});if(w)return jsx("div",{className:"flex items-center justify-center p-8",children:jsxs("div",{className:"text-red-500",children:["Error: ",w]})});let $=Mr(u);return jsx("div",{className:"h-full w-full overflow-auto",children:$!=="text"?jsx(Prism,{className:"min-h-full! m-0! py-0!",language:$,style:darcula,showLineNumbers:true,wrapLines:true,children:m}):jsx("pre",{className:"whitespace-pre-wrap p-4 text-sm font-mono bg-gray-50 min-h-full",children:m})})},"TextDriver");var yt=a(({url:h})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsx("video",{controls:true,src:h,className:"w-full max-h-full"})}),"VideoDriver");var vt=memo(a(function({extension:u,blob:m,path:M,buffer:D}){console.log("Driver props:",{extension:u,blob:m,path:M,buffer:D});let k=u.toLocaleLowerCase().trim(),w;if(M?w=M:m&&(w=URL.createObjectURL(m)),w){if(["jpeg","jpg","png","gif","bmp","webp"].includes(k))return jsx(st,{url:w});if(["mp3","wav","ogg","flac"].includes(k))return jsx(lt,{url:w});if(["mp4","webm"].includes(k))return jsx(yt,{url:w});if(u==="pdf")return jsx(Ce,{url:w});if(["xlsx","pptx"].includes(k))return jsx(ut,{url:w,extension:k});if(["txt","js","jsx","ts","tsx","json","html","css","scss","py","java","cpp","c","cs","php","rb","go","rs","swift","kt","xml","yaml","yml","md","sql","sh","bash"].includes(k))return jsx(gt,{url:w,extension:k})}return k==="docx"?jsx(pt,{url:w,blob:m}):jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsx(mb,{children:jsx(Wa,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:"Sorry, this file type isn\u2019t supported yet."})})})},"Driver"));var Ka=a(h=>jsx("div",{className:"h-full w-full",children:jsx(vt,{...h})}),"FileViewer");var ds=a(({text:h,speed:u=50,onDone:m,markdown:M=false,markdownComponents:D={},className:k,...w})=>{let[O,$]=useState("");return useEffect(()=>{let B;if(u>0){let H=0;B=setInterval(()=>{let P=h.charAt(H);$(Y=>Y+P),H++,H>=h.length&&(clearInterval(B),m?.());},u);}else $(h),m?.();return ()=>{B&&clearInterval(B);}},[h,u,m]),useEffect(()=>{$("");},[h]),M?jsx("div",{className:k,children:jsx(Tr,{remarkPlugins:[Lr],components:D,...w,children:O})}):jsx(Wa,{className:k,...w,children:O})},"Typewriter");export{Di as Container,Ka as FileViewer,ta as FullscreenCard,cr as Graph2D,di as PageContent,ii as PageLayout,zt as Styled,Tt as StyledContainer,Rt as StyledMain,gi as SubNav,ds as Typewriter};//# sourceMappingURL=index.mjs.map
66
+ `);var st=a(({url:h})=>{let[u,m]=useState(1),[M,D]=useState(),k=it.useRef(null),w=it.useRef(null),O=a(()=>{m(B=>Math.min(B+.25,4));},"handleZoomIn");return jsxs("div",{ref:w,className:"h-full w-full flex flex-col",children:[jsxs("div",{className:"flex justify-center items-stretch p-5.5 gap-1 border-b border-gray-200 relative ",children:[jsx(z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsx(Pa,{style:{width:20,height:20}}),onClick:a(()=>{m(B=>Math.max(B-.25,.25));},"handleZoomOut"),disabled:u<=.25,p:5}),jsxs(mb,{py:5,px:8,children:[u*100,"%"]}),jsx(z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsx(ma,{style:{width:14,height:14}}),onClick:O,disabled:u>=4,p:8})]}),jsx("div",{className:"h-full w-full overflow-auto flex items-center justify-center",children:jsx("img",{src:h,ref:k,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"height 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...M==="width"&&{width:`calc(${u*100}% - 20px)`},...M==="height"&&{height:`calc(${u*100}% - 20px)`}},onLoad:()=>{if(k.current&&w.current){let B=k.current.width,H=k.current.height,P=B<H?"height":"width";D(P);}}})})]})},"ImageDriver");var lt=a(({url:h})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full p-5.5",children:jsx("audio",{controls:true,src:h,className:"w-full"})}),"AudioDriver");var Ce=a(({url:h})=>{let[u,m]=useState(null),[M,D]=useState(false),[k,w]=useState(true),[O,$]=useState(null);return useEffect(()=>{D(true);},[]),useEffect(()=>{if(!M)return;a(async()=>{try{let H=await import('./PdfDriver-K3H4CWAS.mjs');m(()=>H.PdfDriver),w(!1);}catch(H){console.error("Failed to load PDF driver:",H),$("Failed to load PDF viewer"),w(false);}},"loadPdfDriver")();},[M]),M?k?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})}):O||!u?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-red-500 text-center",children:jsx("p",{children:O||"PDF viewer unavailable"})})}):jsx(u,{url:h}):jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})})},"PdfDriverWrapper");var ut=a(({url:h,extension:u})=>jsxs("a",{href:h,download:`file.${u}`,className:"text-blue-500 underline",children:["Download ",u.toUpperCase()," file"]}),"DownloadDriver");var ft=50,vr=1e4,pt=a(({url:h,blob:u})=>{let m=useRef(null),[M,D]=useState(null),[k,w]=useState(true);return useEffect(()=>{a(async()=>{if(m.current)try{if(w(!0),D(null),!u&&h&&(u=await(await fetch(h)).blob()),!u){D("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(u.size/(1024*1024)>ft){D(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${ft} \u041C\u0411)`);return}m.current.innerHTML="";let B=renderAsync(u,m.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),H=new Promise((P,Y)=>setTimeout(()=>Y(new Error("\u0420\u0435\u043D\u0434\u0435\u0440\u0438\u043D\u0433 DOCX \u0437\u0430\u0439\u043D\u044F\u0432 \u043D\u0430\u0434\u0442\u043E \u0431\u0430\u0433\u0430\u0442\u043E \u0447\u0430\u0441\u0443")),vr));await Promise.race([B,H]),w(!1);}catch($){D($?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),w(false);}},"renderDocument")();},[h,u]),jsxs(Fragment,{children:[!!M&&!k&&jsx("div",{className:"text-red-500 p-5",children:M}),k&&jsx("div",{className:"flex items-center justify-center p-5",children:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F..."}),jsx("div",{ref:m,className:"w-full h-full overflow-auto"})]})},"DocxDriver");var Pr=a(h=>({js:"javascript",jsx:"jsx",ts:"typescript",tsx:"tsx",json:"json",html:"html",css:"css",scss:"scss",py:"python",java:"java",cpp:"cpp",c:"c",cs:"csharp",php:"php",rb:"ruby",go:"go",rs:"rust",swift:"swift",kt:"kotlin",xml:"xml",yaml:"yaml",yml:"yaml",md:"markdown",sql:"sql",sh:"bash",bash:"bash",txt:"text"})[h]||"text","getLanguageFromExtension"),gt=a(({url:h,extension:u})=>{let[m,M]=useState(""),[D,k]=useState(true),[w,O]=useState(null);if(useEffect(()=>{a(async()=>{try{k(!0),O(null);let P=await fetch(h);if(!P.ok)throw new Error(`Failed to load file: ${P.statusText}`);let Y=await P.text();M(Y);}catch(P){O(P instanceof Error?P.message:"Failed to load text content");}finally{k(false);}},"loadTextContent")();},[h]),D)return jsx("div",{className:"flex items-center justify-center p-8",children:jsx("div",{className:"text-gray-500",children:"Loading text content..."})});if(w)return jsx("div",{className:"flex items-center justify-center p-8",children:jsxs("div",{className:"text-red-500",children:["Error: ",w]})});let $=Pr(u);return jsx("div",{className:"h-full w-full overflow-auto",children:$!=="text"?jsx(Prism,{className:"min-h-full! m-0! py-0!",language:$,style:darcula,showLineNumbers:true,wrapLines:true,children:m}):jsx("pre",{className:"whitespace-pre-wrap p-4 text-sm font-mono bg-gray-50 min-h-full",children:m})})},"TextDriver");var yt=a(({url:h})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsx("video",{controls:true,src:h,className:"w-full max-h-full"})}),"VideoDriver");var vt=memo(a(function({extension:u,blob:m,path:M,buffer:D}){console.log("Driver props:",{extension:u,blob:m,path:M,buffer:D});let k=u.toLocaleLowerCase().trim(),w;if(M?w=M:m&&(w=URL.createObjectURL(m)),w){if(["jpeg","jpg","png","gif","bmp","webp"].includes(k))return jsx(st,{url:w});if(["mp3","wav","ogg","flac"].includes(k))return jsx(lt,{url:w});if(["mp4","webm"].includes(k))return jsx(yt,{url:w});if(u==="pdf")return jsx(Ce,{url:w});if(["xlsx","pptx"].includes(k))return jsx(ut,{url:w,extension:k});if(["txt","js","jsx","ts","tsx","json","html","css","scss","py","java","cpp","c","cs","php","rb","go","rs","swift","kt","xml","yaml","yml","md","sql","sh","bash"].includes(k))return jsx(gt,{url:w,extension:k})}return k==="docx"?jsx(pt,{url:w,blob:m}):jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsx(mb,{children:jsx(Wa,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:"Sorry, this file type isn\u2019t supported yet."})})})},"Driver"));var Ka=a(h=>jsx("div",{className:"h-full w-full",children:jsx(vt,{...h})}),"FileViewer");var ds=a(({text:h,speed:u=50,onDone:m,markdown:M=false,markdownComponents:D={},className:k,...w})=>{let[O,$]=useState("");return useEffect(()=>{let B;if(u>0){$("");let H=0;B=setInterval(()=>{let P=h.charAt(H);$(Y=>Y+P),H++,H>=h.length&&(clearInterval(B),m?.());},u);}else $(h),m?.();return ()=>{B&&clearInterval(B);}},[h,u,m]),M?jsx("div",{className:k,children:jsx(Tr,{remarkPlugins:[Lr],components:D,...w,children:O})}):jsx(Wa,{className:k,...w,children:O})},"Typewriter");export{Di as Container,Ka as FileViewer,ta as FullscreenCard,sr as Graph2D,di as PageContent,ii as PageLayout,jt as Styled,Ct as StyledContainer,It as StyledMain,gi as SubNav,ds as Typewriter};//# sourceMappingURL=index.mjs.map
67
67
  //# sourceMappingURL=index.mjs.map