PageSourceSearch

https://crispro.ai/_next/static/chunks/2943-a958dab209a25458.js

js crispro.ai collected 2026-10-05 15:31:32 UTC 12,883 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2943],{45216:function(e,t,a){var i=a(3827),s=a(64090),r=a(17646);t.Z=function(e){let{data:t,isLoading:a=!1,error:n=null,loadingComponent:l,errorComponent:c,emptyComponent:o,minimumLoadingTime:d=500,animate:u=!0,className:x="",children:h}=e,[m,f]=s.useState(!a||!d);s.useEffect(()=>{if(a&&d>0){f(!1);let e=setTimeout(()=>{f(!0)},d);return()=>clearTimeout(e)}f(!0)},[a,d]);let p=()=>a||!m?l||(0,i.jsx)("div",{className:"flex items-center justify-center h-full w-full",children:(0,i.jsxs)("div",{className:"flex flex-col items-center",children:[(0,i.jsx)("div",{className:"w-12 h-12 border-4 border-blue-400 border-t-transparent rounded-full animate-spin"}),(0,i.jsx)("p",{className:"mt-4 text-blue-300 font-medium",children:"Loading visualization..."})]})}):n?c||(0,i.jsx)("div",{className:"flex items-center justify-center h-full w-full",children:(0,i.jsxs)("div",{className:"bg-red-500/10 text-red-400 p-4 rounded-lg max-w-md text-center",children:[(0,i.jsx)("h3",{className:"font-bold text-lg mb-2",children:"Visualization Error"}),(0,i.jsx)("p",{children:n.message||"An error occurred while preparing the visualization"})]})}):!t||Array.isArray(t)&&0===t.length||"object"==typeof t&&0===Object.keys(t).length?o||(0,i.jsx)("div",{className:"flex items-center justify-center h-full w-full",children:(0,i.jsxs)("div",{className:"bg-slate-700/50 text-slate-300 p-6 rounded-lg max-w-md text-center",children:[(0,i.jsx)("h3",{className:"font-semibold text-lg mb-2",children:"No Data Available"}),(0,i.jsx)("p",{children:"There is no data available to visualize at this time."})]})}):"function"==typeof h?h(t):h;return u?(0,i.jsx)(r.E.div,{className:"data-visualizer relative w-full h-full ".concat(x),initial:{opacity:0}
1,animate:{opacity:1},exit:{opacity:0},transition:{duration:.3},children:p()}):(0,i.jsx)("div",{className:"data-visualizer relative w-full h-full ".concat(x),children:p()})}},62943:function(e,t,a){var i=a(3827),s=a(64090),r=a(45216);let n=s.forwardRef((e,t)=>{let{nodes:a,edges:n,enableDragging:l=!0,enableZoom:c=!0,showLabels:o=!0,showEdgeLabels:d=!1,usePhysics:u=!0,simulationRunning:x=!1,physicsConfig:h,nodeSpacing:m=70,onNodeClick:f,onEdgeClick:p,typeFilters:y,highlightConnections:v=!0,className:g="",width:b=800,height:j=600,therapeuticContext:N,enableAIWeighting:w=!1,enableLLMInsights:M=!1,highlightKeyPathways:k=!1,diseaseContext:S,patientProfile:E,customNodeColors:R}=e,I=(0,s.useRef)(null),[z,O]=(0,s.useState)(null),[A,L]=(0,s.useState)(null),[C,P]=(0,s.useState)(1),[W,q]=(0,s.useState)({x:0,y:0}),[F,T]=(0,s.useState)({}),[D,H]=(0,s.useState)(!1),[V,Y]=(0,s.useState)(null),[_,X]=(0,s.useState)({x:0,y:0}),[Z,B]=(0,s.useState)(!x),[G,K]=(0,s.useState)(b),[U,J]=(0,s.useState)(j),Q={repulsion:6e3,springLength:280,damping:.85,maxVelocity:35,...h||{}};s.useImperativeHandle(t,()=>({fitView:()=>{if(!I.current||!a.length||0===Object.keys(F).length)return;let e=1/0,t=1/0,i=-1/0,s=-1/0;if(a.forEach(a=>{let r=F[a.id];r&&(e=Math.min(e,r.x),t=Math.min(t,r.y),i=Math.max(i,r.x),s=Math.max(s,r.y))}),e===1/0)return;let r=i-e,n=s-t,l=I.current.offsetWidth,c=I.current.offsetHeight,o=Math.min(l/(r+100),c/(n+100),1.5),d=l/2-(e+i)/2*o,u=c/2-(t+s)/2*o;P(o),q({x:d,y:u})}})),(0,s.useEffect)(()=>{let e=I.current;if(!e)return;K(e.offsetWidth),J(e.offsetHeight);let t=new ResizeObserver(e=>{for(let t of e)K(t.contentRect.width),J(t.contentRect.height)});return t.observe(e),()=>t.unobserve(e)},[]),(0,s.useEffect)(()=>{if(0===a.length||0===G||0===U)return;let e={},t=G/2,i=U/2,s=.4*Math.min(G,U),r={};a.forEach(e=>{r[e.type]||(r[e.type]=[]),r[e.type].push(e)});let n=0,l=Object.keys(r).length;Object.entries(r).forEach(a=>{let[r,c]=a,o=n/l*2*Math.PI,d=2*Math.PI/l;c.forEach((a,r)=>{let n=o+r/c.length*(.8*d),l=1;switch(a.type){case"gene":l=.85;break;case"variant":l=1.1;break;case"outcome":l=1.2;break;case"therapy":l=.9;break;case"publication":l=.8}let u=s*l*(2+.8*Math.random());e[a.id]={x:t+u*Math.cos(n)+(Math.random()-.5)*s*.5,y:i+u*Math.sin(n)+(Math.random()-.5)*s*.5}}),n++}),T(e),B(!x)},[a,G,U,x]),(0,s.useEffect)(()=>{if(!u||!x||0===a.length||0===Object.keys(F).length){x||B(!0);return}B(!1);let e={};a.forEach(t=>{e[t.id]={vx:0,vy:0}});let{repulsion:t,springLength:i,damping:s,maxVelocity:r}=Q,l=3.5*m,c=0,o=!0,d=()=>{if(!o)return;let u=0,x={...F};if(a.forEach(i=>{a.forEach(a=>{if(i.id===a.id)return;let s=x[i.id],r=x[a.id];if(!s||!r)return;let n=s.x-r.x,c=s.y-r.y,o=Math.sqrt(n*n+c*c);0===o&&(o=.1);let d=(ei(i)+ei(a))/2+l,u=t/(o*o);o<d&&(u*=d/o*5),o<2*l&&(u*=2),e[i.id].vx+=n/o*u,e[i.id].vy+=c/o*u})}),n.forEach(t=>{let a=x[t.source],s=x[t.target];if(!a||!s)return;let r=s.x-a.x,n=s.y-a.y,l=Math.sqrt(r*r+n*n);0===l&&(l=.1);let c=void 0!==t.weight?Math.max(.1,.4*t.weight):.25;if(l>2*i){let a=5e-4*c*(l-i)*.7;e[t.source].vx+=r/l*a,e[t.source].vy+=n/l*a,e[t.target].vx-=r/l*a,e[t.target].vy-=n/l*a}}),a.forEach(t=>{if(t.id===V)return;e[t.id].vx*=s,e[t.id].vy*=s;let a=Math.sqrt(e[t.id].vx**2+e[t.id].vy**2);a>r&&(e[t.id].vx=e[t.id].vx/a*r,e[t.id].vy=e[t.id].vy/a*r),x[t.id].x+=e[t.id].vx,x[t.id].y+=e[t.id].vy,u+=Math.abs(e[t.id].vx)+Math.abs(e[t.id].vy)}),a.forEach(e=>{a.forEach(t=>{if(e.id===t.id)return;let a=x[e.id],i=x[t.id];if(!a||!i)return;let s=a.x-i.x,r=a.y-i.y,n=Math.sqrt(s*s+r*r),c=(ei(e)+ei(t))/2+l;if(n<c&&n>0){let a=(c-n)/2,i=s/n,l=r/n;x[e.id].x+=i*a,x[e.id].y+=l*a,x[t.id].x-=i*a,x[t.id].y-=l*a}})}),Object.keys(x).forEach(e=>{let t=x[e],i=ei(a.find(t=>t.id===e))+20;x[e]={x:Math.max(i,Math.min(G-i,t.x)),y:Math.max(i,Math.min(U-i,t.y))}}),T(x),u<.05*a.length){if(++c>15){o=!1,B(!0);return}}else c=0;o&&requestAnimationFrame(d)};return requestAnimationFrame(d),()=>{o=!1}},[a,n,F,V,u,x,Q,m,G,U]);let $=(e,t)=>{l&&(Y(e),H(!0),X({x:t.clientX/C-W.x,y:t.clientY/C-W.y}))},ee=()=>{D&&(H(!1),Y(null))},et=e=>{if(e.color)return e.color;if(R&&R[e.type])return R[e.type];switch(e.type){case"gene":return"#2563eb";case"variant":return"#dc2626";case"outcome":return"#16a34a";case"therapy":return"#9333ea";case"publication":return"#d97706";default:return"#64748b"}},ea=e=>{if(e.color)return e.color;if(k&&e.inTherapeuticPath)return"#ffcc00";switch(e.type){case"causes":return"#f87171";case"treats":return"#34d399";case"associates":return"#60a5fa";case"reports":return"#fbbf24";case"includes":return"#a78bfa";default:return"#94a3b8"}},ei=e=>{if(e.size)return e.size;let t=15;switch(w&&e.aiRelevanceScore?t=10+20*e.aiRelevanceScore:e.weight&&(t=10+15*e.weight),e.type){case"gene":return 1.2*t;case"variant":default:return t;case"outcome":return 1.3*t;case"therapy":return 1.4*t;case"publication":return 1.1*t}},es=e=>{f&&f(e)};return(0,i.jsx)(r.Z,{data:a,isLoading:0===a.length&&a.length>0,emptyComponent:(0,i.jsx)("p",{className:"text-slate-400",children:"No relevant data for the current context or filters."}),className:"knowledge-graph select-none ".concat(g),children:(0,i.jsxs)("div",{ref:I,className:"relative bg-slate-900 rounded-lg overflow-hidden w-full h-full ".concat(g),onMouseMove:e=>{if(!D||!V)return;let t={x:e.clientX/C-W.x,y:e.clientY/C-W.y},a=t.x-_.x,i=t.y-_.y;T(e=>({...e,[V]:{x:e[V].x+a,y:e[V].y+i}}))},onMouseUp:ee,onMouseLeave:ee,onWheel:e=>{if(!c||!I.current)return;e.preventDefault();let t=I.current.getBoundingClientRect(),a=e.clientX-t.left,i=e.clientY-t.top,s=Math.max(.1,Math.min(C*(1-.001*e.deltaY),5)),r=a-(a-W.x)*(s/C),n=i-(i-W.y)*(s/C);P(s),q({x:r,y:n})},children:[(0,i.jsx)("div",{className:"absolute top-2 right-2 bg-slate-800/80 text-xs text-white px-2 py-1 rounded-md shadow",children:u?"Physics: ".concat(x?"Active":Z?"Stabilized":"Initializing"):"Physics: Disabled"}),N&&(0,i.jsxs)("div",{className:"absolute top-2 left-2 bg-sky-700/80 text-white text-xs px-2 py-1 rounded-md shadow",children:["Context: ",N]}),(0,i.jsx)("svg",{width:"100%",height:"100%",className:"overflow-visible",children:(0,i.jsxs)("g",{transform:"translate(".concat(W.x,", ").concat(W.y,") scale(").concat(C,")"),children:[n.map(e=>{let t=a.find(t=>
1t.id===e.source),s=a.find(t=>t.id===e.target);if(!t||!s)return null;let r=F[e.source],n=F[e.target];if(!r||!n)return null;let l=ea(e),c=k&&e.inTherapeuticPath,o=w&&e.confidenceScore?.4+.6*e.confidenceScore:c?1:.6,d=c?2.5:w&&e.weight?.5+2*e.weight:1.5;return(0,i.jsx)("line",{x1:r.x,y1:r.y,x2:n.x,y2:n.y,stroke:l,strokeWidth:d,opacity:o,strokeDasharray:"associates"===e.type?"4,4":void 0,onMouseEnter:()=>L(e.id),onMouseLeave:()=>L(null),onClick:()=>p&&p(e),className:"transition-opacity duration-150 ".concat(A===e.id?"opacity-100":"")},e.id)}),a.map(e=>{let t=F[e.id];if(!t)return null;let a=et(e),s=ei(e),r=z===e.id,n=w&&void 0!==e.aiRelevanceScore?.5+.5*e.aiRelevanceScore:.9;return(0,i.jsxs)("g",{transform:"translate(".concat(t.x,", ").concat(t.y,")"),onMouseDown:t=>$(e.id,t),onMouseEnter:()=>O(e.id),onMouseLeave:()=>O(null),onClick:()=>es(e),style:{cursor:l?D?"grabbing":"grab":"pointer"},className:"transition-transform duration-100 ease-out",children:[w&&void 0!==e.aiRelevanceScore&&(0,i.jsx)("circle",{r:s+4,fill:a,opacity:.3*e.aiRelevanceScore,className:"pointer-events-none"}),(0,i.jsx)("circle",{r:s,fill:a,opacity:n,stroke:r?"white":"rgba(255,255,255,0.2)",strokeWidth:r?2.5:1,className:"transition-all duration-150"}),o&&(r||C>.8)&&(0,i.jsx)("text",{textAnchor:"middle",y:s+14,fontSize:Math.max(10,Math.min(12/C,12)),fill:"white",paintOrder:"stroke",stroke:"rgba(15, 23, 42, 0.7)",strokeWidth:2/C,strokeLinecap:"round",strokeLinejoin:"round",className:"pointer-events-none font-medium",children:e.label})]},e.id)})]})}),z&&(()=>{if(!z||!F[z])return null;let e=a.find(e=>e.id===z);if(!e)return null;let t=F[z],s={position:"absolute",left:"".concat(t.x*C+W.x+20,"px"),top:"".concat(t.y*C+W.y,"px"),zIndex:100,pointerEvents:"none"};return(0,i.jsxs)("div",{style:s,className:"bg-slate-800 text-white p-3 rounded-md shadow-xl text-sm max-w-sm opacity-95",children:[(0,i.jsx)("div",{className:"font-bold text-base mb-1",children:e.label}),(0,i.jsx)("div",{className:"text-xs text-slate-300 uppercase mb-2",children:e.type}),e.description&&(0,i.jsx)("div",{className:"text-xs mt-1 mb-2",children:e.description}),void 0!==e.weight&&(0,i.jsxs)("div",{className:"text-xs mt-1",children:[(0,i.jsx)("strong",{children:"Base Evidence:"})," ",e.weight.toFixed(2)]}),w&&void 0!==e.aiRelevanceScore&&(0,i.jsxs)("div",{className:"text-xs mt-1 flex items-center",children:[(0,i.jsx)("strong",{className:"mr-1",children:"AI Relevance:"}),(0,i.jsx)("div",{className:"w-full bg-slate-700 h-2 rounded-full overflow-hidden",children:(0,i.jsx)("div",{className:"bg-sky-500 h-2",style:{width:"".concat(100*e.aiRelevanceScore,"%")}})}),(0,i.jsxs)("span",{className:"ml-1 text-slate-400",children:["(",(100*e.aiRelevanceScore).toFixed(0),"%)"]})]}),w&&void 0!==e.evidenceStrength&&(0,i.jsxs)("div",{className:"text-xs mt-1",children:[(0,i.jsx)("strong",{children:"AI Evidence Strength:"})," ",e.evidenceStrength.toFixed(2)]}),M&&e.insightSummary&&(0,i.jsxs)("div",{className:"text-xs mt-2 pt-2 border-t border-slate-700",children:[(0,i.jsx)("div",{className:"font-semibold mb-1 text-sky-400",children:"CrisPRO.ai Insight:"}),(0,i.jsx)("p",{className:"italic",children:e.insightSummary})]}),"variant"===e.type&&void 0!==e.predictedImpact&&(0,i.jsxs)("div",{className:"text-xs mt-2 pt-2 border-t border-slate-700",children:[(0,i.jsx)("div",{className:"font-semibold mb-1",children:"Predicted Impact (AI):"}),(0,i.jsxs)("span",{className:"font-bold ".concat(e.predictedImpact>.7?"text-red-400":e.predictedImpact>.4?"text-yellow-400":"text-green-400"),children:[e.predictedImpact>.7?"High":e.predictedImpact>.4?"Medium":"Low",(0,i.jsxs)("span",{className:"ml-1 text-slate-400",children:["(",(100*e.predictedImpact).toFixed(0),"%)"]})]})]})]})})(),(0,i.jsxs)("div",{className:"absolute bottom-2 left-2 bg-slate-800/70 p-2 rounded-md text-xs text-slate-300",children:[(0,i.jsx)("div",{className:"font-semibold mb-1",children:"Legend:"}),Object.entries({Gene:et({type:"gene"}),Variant:et({type:"variant"}),Outcome:et({type:"outcome"}),Therapy:et({type:"therapy"}),Publication:et({type:"publication"})}).map(e=>
1{let[t,a]=e;return(0,i.jsxs)("div",{className:"flex items-center mb-0.5",children:[(0,i.jsx)("div",{style:{backgroundColor:a},className:"w-2.5 h-2.5 rounded-full mr-1.5"}),t]},t)})]}),(0,i.jsxs)("div",{className:"absolute top-10 right-2 flex flex-col gap-2",children:[u&&(0,i.jsx)("button",{className:"bg-slate-700 hover:bg-slate-600 text-white text-xs px-2 py-1 rounded",onClick:()=>{B(!1)},children:"Reset Local Layout"}),x&&(0,i.jsx)("div",{className:"text-xs bg-sky-600/80 text-white px-2 py-1 rounded animate-pulse",children:"Simulating..."}),w&&(0,i.jsx)("div",{className:"text-xs bg-purple-600/80 text-white px-2 py-1 rounded",children:"AI Weighting ON"}),k&&(0,i.jsx)("div",{className:"text-xs bg-amber-500/80 text-white px-2 py-1 rounded",children:"Key Pathways ON"})]})]})})});n.displayName="KnowledgeGraph",t.Z=n}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.