import{u as B,a3 as G,a4 as H}from"./rpcWorker-CVTx5FIM.js";import{g as J,a as K,b as Q}from"./color-DlNyb7sX.js";function a(n){return Math.random()*2*n-n}function O(n,e,_,c){n.strokeStyle=c,n.beginPath(),n.moveTo(e,0),n.lineTo(e,_),n.stroke()}function k(n,e,_,c){const{chainData:h,colorBy:b,drawInter:L,drawLongRange:R,lineWidthSetting:V,jitterVal:i}=n;if(!h)return;const g=B.getContainingView(n),{assemblyManager:W}=B.getSession(n),{chains:$,stats:I}=h,P=G(h),S=W.get(g.assemblyNames[0]),f=(b==null?void 0:b.type)||"insertSizeAndOrientation";if(!S)return;e.lineWidth=V;function z(o,t,s,r){var l,u,N;const w=o.strand,A=t.strand,D=w===-1,j=A===-1,E=D?o.start:o.end,F=P?j?t.start:t.end:j?t.end:t.start,X=s.getCanonicalRefName(o.refName)||o.refName,Y=s.getCanonicalRefName(t.refName)||t.refName,p=(l=g.bpToPx({refName:X,coord:E}))===null||l===void 0?void 0:l.offsetPx,C=(u=g.bpToPx({refName:Y,coord:F}))===null||u===void 0?void 0:u.offsetPx;if(p!==void 0&&C!==void 0){const T=(C-p)/2,m=Math.abs(T),d=p-g.offsetPx,q=C-g.offsetPx,M=m>1e4;r&&M?(e.moveTo(d,0),e.beginPath()):(e.beginPath(),e.moveTo(d,0)),r&&M?e.strokeStyle="red":P?f==="insertSizeAndOrientation"?e.strokeStyle=J(o,t,I)[0]:f==="orientation"?e.strokeStyle=K(o)[0]:f==="insertSize"?e.strokeStyle=((N=Q(o,t,I))===null||N===void 0?void 0:N[0])||"grey":f==="gradient"&&(e.strokeStyle=`hsl(${Math.log10(m)*10},50%,50%)`):f==="orientation"||f==="insertSizeAndOrientation"?w===-1&&A===1?e.strokeStyle="navy":w===1&&A===-1?e.strokeStyle="green":e.strokeStyle="grey":f==="gradient"&&(e.strokeStyle=`hsl(${Math.log10(m)*10},50%,50%)`);const v=d+T*2,y=Math.min(c+a(i),m);r?m>1e5?(O(e,d+a(i),c,"red"),O(e,q+a(i),c,"red")):M?(e.arc(d+T+a(i),0,m,0,Math.PI),e.stroke()):(e.bezierCurveTo(d+a(i),y,v,y,v+a(i),0),e.stroke()):(e.bezierCurveTo(d+a(i),y,v,y,v+a(i),0),e.stroke())}else p&&L&&O(e,p-g.offsetPx,c,"purple")}for(const o of $)if(o.length===1&&R){const t=o[0];if(P&&!(t.flags&8)){const s={refName:t.next_ref||"",start:t.next_pos||0,end:t.next_pos||0,strand:t.strand};z(t,s,S,!0)}else{const s=[t,...H(t.SA,t.id,t.strand,t.name)].sort((r,l)=>r.clipPos-l.clipPos);for(let r=0;r<s.length-1;r++){const l=s[r],u=s[r+1];z(l,u,S,!0)}}}else{const t=P?o.filter(s=>!(s.flags&2048)&&!(s.flags&8)):o.sort((s,r)=>s.clipPos-r.clipPos).filter(s=>!(s.flags&256));for(let s=0;s<t.length-1;s++)z(t[s],t[s+1],S,!1)}}export{k as drawFeats};
