1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2863],{92863:(e,r,t)=>{t.r(r),t.d(r,{default:()=>y});var s=t(95155),a=t(12115),l=t(18955),i=t(937),n=t(18720),o=t(15748),u=t(82466),c=t(86063),m=t(28764),d=t(38829);let b="triggerOrderToastId";var g=t(66424),x=t(48521),p=t(14620),h=t(4951),N=t(29963),f=t(52761);let v=[1,2,5,20,30],j=[.5,1,2,4,5],y=e=>{let{option:r,size:t,liqPrice:y,entryPx:w}=e,S=(0,l.c)("trade.order-form"),P=(0,l.c)("common"),k=(0,o.Zh)(e=>{var r;return null==(r=e.userAssetData)?void 0:r.markPx}),A=(0,o.Zh)(e=>{var r;return null==(r=e.asset)?void 0:r.universe.szDecimals}),C="tp"===r,F=Number(t)>0,z=F?C:!C,{processing:M,addTriggerOrder:E}=(()=>{let e=(0,l.c)("trade.order-form"),r=(0,l.c)("error"),{approveBuilderFee:t,builder:s}=(0,m.m)(),{enableTrading:g}=(0,d.U)({toastId:b}),[x,p]=(0,a.useState)(!1);return{processing:x,addTriggerOrder:async a=>{try{p(!0);let r=o.Zh.getState().asset,l=Number(a.size)>0;if(!r)throw Error("Asset is not selected");await t();let i=await g();n.o.loading(e("Adding trigger order"),{id:b});let u=(0,c.NF)({triggerPx:a.triggerPx,isLong:l,szDecimals:r.universe.szDecimals,size:"0",assetId:r.assetId,type:a.isTakeProfit?"tp":"sl"});await i.order({orders:[u],grouping:"na",builder:s}),n.o.success(e("Trigger order added successfully"),{id:b})}catch(t){var l;let e=r("Something went wrong");(t.name===i.jF.UserRejectedRequestError||(null==(l=t.cause)?void 0:l.name)===i.jF.UserRejectedRequestError)&&(e=r("User rejected transaction signature")),"ApiRequestError"===t.name&&(e=t.message),(0,u.A)(t),n.o.error(e,{id:b})}finally{p(!1)}}}})(),[T,q]=(0,a.useState)(()=>{let e=(e=>{let r,{existingLiquidationPrice:t,isLong:s,isStopLoss:a,markPx:l}=e;if(a){let e=Number(t),a=s?.95*l:1.05*l;if(e>0){let t=s?1.1*e:.9*e;r=(s?a<t:a>t)?String((l+e)/2):String(a)}else r=String(a)}else r=l.toString();return r})({existingLiquidationPrice:null!=y?y:"0",isLong:F,isStopLoss:!C,markPx:Number(null!=k?k:0)});return(0,p.OG)(Number(e),Number(A))}),D=Number(T),Z=((e,r)=>{let t=String(e),s=String(r);return 0===parseFloat(t)?0:100*((parseFloat(s)-parseFloat(t))/parseFloat(t))})(Number(null!=k?k:0),null!=D?D:0),I=(0,a.useMemo)(()=>D?Math.abs((0,c.vX)({entryPrice:Number(w),triggerPrice:D,size:Math.abs(Number(t))}))*(C?1:-1):0,[w,D,t,C]),R=(0,a.useMemo)(()=>{let e=Z>0;if(F){if(C&&!e||!C&&e)return!0}else if(C&&e||!C&&!e)return!0;return!1},[Z,F,C]),L=(0,a.useMemo)(()=>!!y&&!C&&(F?D<=Number(y):D>=Number(y)),[C,D,y,F]),O=R||L||!Number(T||0),U=(0,a.useMemo)(()=>{let e=Z>0,r=Z.toFixed(2);return"".concat(e?"+":"").concat(r,"%")},[Z]);return(0,s.jsxs)("div",{className:"w-full pt-2 md:pt-0",children:[(0,s.jsxs)("div",{className:"w-full mb-3",children:[(0,s.jsx)("p",{className:"capitalize text-white text-sm font-semibold",children:C?"Take Profit":"Stop Loss"}),(0,s.jsxs)("p",{className:"text-sm text-neutral-gray-400 font-semibold space-x-1",children:[(0,s.jsx)("span",{children:S("Current Price")}),(0,s.jsx)("span",{children:(0,x.ZV)(Number(null!=k?k:0),{style:"currency",maximumFractionDigits:8})})]})]}),(0,s.jsx)(h.A,{hideAvailableAmount:!0,value:T,max:Number(k),className:"pb-4 h-fit",inputClassName:"text-4xl md:text-5xl",tokenInfoClassName:"size-9",tokenInfo:i.t7,formatPercentage:e=>(F?C:!C)?"+".concat(e,"%"):"-".concat(e,"%"),percentages:C?v:j,percentageClassName:"text-xs md:text-sm",onPercentageChange:e=>{let r=(e=>{let{entryPrice:r,percentage:t,isTakeProfit:s,isLong:a}=e,l=t/100;return(a?s:!s)?r*(1+l):r*(1-l)})({entryPrice:Number(w),percentage:e,isTakeProfit:C,isLong:F}),t=(0,p.OG)(r,Number(A));return q(t),t},onValueChange:e=>{q(e)}}),(0,s.jsx)("div",{className:"w-full mt-2 mb-4",children:(0,s.jsx)("p",{className:"text-sm text-neutral-gray-400 font-medium space-x-1",children:(0,s.jsx)(f.b,{visible:!R,fallback:(0,s.jsx)("span",{children:L?S("Must be above or below liq price",{shouldBeAbove:String(F),liqPrice:(0,x.ZV)(Number(y),{style:"currency"})}):S("Must be above or below current price",{shouldBeAbove:String(z)})}),children:S.rich("Trigger price above or below current price",{pnl:U,shouldBeAbove:String(z),span:e=>(0,s.jsx)("span",{className:(0,g.cn)("text-buy font-semibold",{"text-sell":Z<0}),children:e})})})})}),(0,s.jsxs)("div",{className:"w-full bg-neutral-gray-600 p-2.5 rounded-2xl outline-0",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm font-mono mb-3 mt-1",children:[(0,s.jsx)("div",{className:"text-neutral-gray-400",children:S("Estimated Profit or Loss",{isTakeProfit:String(C)})}),(0,s.jsx)("div",{className:(0,g.cn)("font-semibold",{"text-buy":!O&&I>=0,"text-sell":!O&&I<0,"text-white":O}),children:O?"--":(0,x.ZV)(I,{style:"currency",signDisplay:"always"})})]}),(0,s.jsx)(N.$,{label:P("Add"),variant:"primary",disabled:O||M,loading:M,className:"w-full h-11 rounded-lg",onClick:()=>{E({isTakeProfit:C,size:t,triggerPx:T})}})]})]})}}}]);
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.