const PV_W=308,PV_H=250,PV_PAD_L=36,PV_PAD_R=10,PV_PAD_T=12,PV_PAD_B=24;function pvLoopCorners(o){const{EDV:e,ESV:n,pv:s}=o,f=o.murmur&&o.murmur.kind,V=.12*(e-n);return{A:[e,s.edP],B:[f==="MR"?e-V:e,s.peakP],C:[n,s.endSysP],D:[f==="AR"?n+V:n,s.minP]}}function pvPointAt(o,e){const n=pvLoopCorners(e),s=getPhaseIndex(o),f=getPhaseLocal(o),V=(l,g,u)=>[l[0]+(g[0]-l[0])*u,l[1]+(g[1]-l[1])*u],A=l=>.5-.5*Math.cos(Math.PI*l);return s===1?V(n.A,n.B,A(f)):s===2?V(n.B,[n.C[0]+(n.B[0]-n.C[0])*.3,n.B[1]*.95],A(f)):s===3?V([n.C[0]+(n.B[0]-n.C[0])*.3,n.B[1]*.95],n.C,A(f)):s===4?V(n.C,n.D,A(f)):s===5?V(n.D,[n.D[0]+(n.A[0]-n.D[0])*.65,n.D[1]+(n.A[1]-n.D[1])*.5],A(f)):s===6?V([n.D[0]+(n.A[0]-n.D[0])*.65,n.D[1]+(n.A[1]-n.D[1])*.5],[n.A[0]-1,n.A[1]-2],A(f)):V([n.A[0]-1,n.A[1]-2],n.A,A(f))}function drawPVLoop(o,e,n,s,f="zh"){const V=308*e,A=250*e;o.clearRect(0,0,V,A);const l=36*e,g=298*e,u=12*e,a=226*e,h=g-l,S=a-u,m=220,T=0,C=200,B=0,P=D=>l+(D-T)/(m-T)*h,r=D=>a-(D-B)/(C-B)*S;o.strokeStyle="rgba(34,49,63,0.08)",o.lineWidth=1*e,o.beginPath();for(let D=50;D<=200;D+=50)o.moveTo(P(D),u),o.lineTo(P(D),a);for(let D=50;D<=200;D+=50)o.moveTo(l,r(D)),o.lineTo(g,r(D));o.stroke(),o.strokeStyle="rgba(34,49,63,0.4)",o.lineWidth=1.2*e,o.beginPath(),o.moveTo(l,u),o.lineTo(l,a),o.lineTo(g,a),o.stroke(),o.fillStyle="rgba(34,49,63,0.6)",o.font=`${9*e}px "JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace`,o.textAlign="right",o.fillText("mmHg",l-4*e,r(150)+3*e),o.fillText("200",l-4*e,r(200)+3*e),o.fillText("100",l-4*e,r(100)+3*e),o.fillText("0",l-4*e,r(0)+3*e),o.textAlign="center",o.fillText("mL",P(150),a+11*e),o.fillText("100",P(100),a+11*e),o.fillText("200",P(200),a+11*e);const i=pvLoopCorners(n);o.strokeStyle="#1E3A5F",o.lineWidth=2*e,o.shadowColor="rgba(30,58,95,0.25)",o.shadowBlur=4*e,o.beginPath(),o.moveTo(P(i.D[0]),r(i.D[1])),o.bezierCurveTo(P(i.D[0]+(i.A[0]-i.D[0])*.4),r(i.D[1]-2),P(i.D[0]+(i.A[0]-i.D[0])*.85),r(i.A[1]-5),P(i.A[0]),r(i.A[1])),o.lineTo(P(i.B[0]),r(i.B[1])),o.bezierCurveTo(P(i.B[0]-(i.B[0]-i.C[0])*.2),r(i.B[1]+3),P(i.B[0]-(i.B[0]-i.C[0])*.7),r(i.C[1]+8),P(i.C[0]),r(i.C[1])),o.lineTo(P(i.D[0]),r(i.D[1])),o.stroke(),o.shadowBlur=0;const _=pvPointAt(s,n);o.fillStyle="#16293F",o.shadowColor="#16293F",o.shadowBlur=8*e,o.beginPath(),o.arc(P(_[0]),r(_[1]),4.5*e,0,Math.PI*2),o.fill(),o.shadowBlur=0,o.font=`${10*e}px "JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace`,o.textAlign="left",o.fillStyle="rgba(22,41,63,0.92)",o.fillText(f==="en"?`SV ${n.SV} mL \xB7 EF ${n.EF}%`:`\u6BCF\u640F\u91CF ${n.SV} mL \xB7 \u5C04\u8840\u5206\u6570 ${n.EF}%`,l+6*e,u+12*e),o.fillStyle="rgba(34,49,63,0.8)",o.fillText(f==="en"?`EDV ${n.EDV} \xB7 ESV ${n.ESV}`:`\u8212\u5F20\u672B ${n.EDV} \xB7 \u6536\u7F29\u672B ${n.ESV} mL`,l+6*e,u+24*e),n.regurgFrac>0&&(o.fillStyle="#A23B36",o.fillText(f==="en"?`\u21A9 regurgitant ${n.regurgSV} \xB7 forward ${n.forwardSV} mL`:`\u21A9 \u53CD\u6D41 ${n.regurgSV} \xB7 \u524D\u5411 ${n.forwardSV} mL`,l+6*e,u+36*e))}Object.assign(window,{PV_W:308,PV_H:250,drawPVLoop,pvLoopCorners});
