@orderly.network/ui-positions 2.0.7 → 2.1.0
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.js +17 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -10
package/dist/index.js
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var ui$1 = require('@orderly.network/ui');
|
|
4
|
-
var types = require('@orderly.network/types');
|
|
5
4
|
var react = require('react');
|
|
5
|
+
var types = require('@orderly.network/types');
|
|
6
6
|
var hooks = require('@orderly.network/hooks');
|
|
7
|
+
var i18n = require('@orderly.network/i18n');
|
|
7
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
9
|
var utils = require('@orderly.network/utils');
|
|
10
|
+
var reactApp = require('@orderly.network/react-app');
|
|
9
11
|
var uiShare = require('@orderly.network/ui-share');
|
|
10
12
|
var uiTpsl = require('@orderly.network/ui-tpsl');
|
|
11
13
|
var uiConnector = require('@orderly.network/ui-connector');
|
|
12
|
-
var reactApp = require('@orderly.network/react-app');
|
|
13
14
|
var dateFns = require('date-fns');
|
|
14
15
|
|
|
15
|
-
var Ye=react.createContext({}),M=()=>react.useContext(Ye),Jt=t=>{let[e,o]=react.useState(Math.abs(t.position.position_qty).toString());react.useEffect(()=>{o(Math.abs(t.position.position_qty).toString());},[t.position.position_qty]);let[n,i]=react.useState(""),r=t.position.position_qty>0?types.OrderSide.SELL:types.OrderSide.BUY,[a,s]=react.useState(void 0),[l,u]=react.useState(types.OrderType.MARKET),p=hooks.useSymbolsInfo(),g=t.position.symbol,C=p?.[g],c=C("quote_dp"),m=C("base_dp"),P=C("base_tick"),{helper:y,onSubmit:F,submitting:f}=hooks.useOrderEntry_deprecated(t.position?.symbol,r,true),h=(I,k)=>{if(u(I),I===types.OrderType.LIMIT){if(!k)throw new Error("price is required");i(k);}else i("");},R=react.useMemo(()=>{let{position:I}=t;if(!I)return null;let k={order_quantity:e,symbol:t.position.symbol,order_type:l,side:r,reduce_only:true};return l===types.OrderType.LIMIT&&(k.order_price=n),k},[t.position,n,l,e]),Y=I=>{let k=y.calculate({},"order_quantity",I);o(k.order_quantity);},ht=I=>{let k=y.calculate({},"order_price",I);i(k.order_price);};react.useEffect(()=>{let I=R;y.validator(I).then(k=>{s(k);});},[R]);let _t=()=>F(R).catch(I=>(typeof I=="string"?ui$1.toast.error(I):ui$1.toast.error(I.message),Promise.resolve()));return jsxRuntime.jsx(Ye.Provider,{value:{quantity:e,price:n,type:l,side:r,position:t.position,updatePriceChange:ht,updateQuantity:Y,updateOrderType:h,tpslOrder:t.position.algo_order,onSubmit:_t,submitting:f,closeOrderData:R,quoteDp:c,baseDp:m,baseTick:P,errors:a},children:t.children})};var Xe=react.createContext({}),N=()=>react.useContext(Xe),pt=t=>{let e=hooks.useSymbolsInfo()[t.symbol];return jsxRuntime.jsx(Xe.Provider,{value:{base_dp:e("base_dp"),quote_dp:e("quote_dp"),base_tick:e("base_tick"),quote_tick:e("quote_tick"),base:e("base"),quote:e("quote"),symbol:t.symbol,origin:e(),quote_max:e("quote_max"),quote_min:e("quote_min")},children:t.children})};var oo=()=>{let[t,e]=react.useState(false),{onSubmit:o,price:n,quantity:i,closeOrderData:r,type:a,submitting:s,quoteDp:l,errors:u}=M(),{base:p,quote:g}=N(),[C]=hooks.useLocalStorage("orderly_order_confirm",true),c=()=>o().then(y=>{e(false);},y=>{typeof y=="string"?ui$1.toast.error(y):ui$1.toast.error(y.message);}).catch(y=>{typeof y=="string"?ui$1.toast.error(y):ui$1.toast.error(y.message);}),m=()=>{e(false);},P=react.useMemo(()=>a===types.OrderType.MARKET?!i:!n||!i,[n,i,a]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui$1.Button,{variant:"outlined",size:"sm",color:"secondary",disabled:P||s,loading:s,onClick:y=>{y.stopPropagation();let F=u?.order_quantity?.message,f=u?.order_price?.message;if(F||f){ui$1.toast.error(F??f);return}if(!C){o();return}e(true);},children:"Close"}),jsxRuntime.jsx(ui$1.SimpleDialog,{open:t,onOpenChange:e,size:"sm",children:a===types.OrderType.MARKET?jsxRuntime.jsx(wt,{base:p,quantity:i,onClose:m,onConfirm:c,submitting:s,classNames:{root:"oui-items-start"},hideCloseIcon:true}):jsxRuntime.jsx(jt,{base:p,quantity:i,price:n,onClose:m,onConfirm:c,submitting:s,quoteDp:l,order:r,hideCloseIcon:true})})]})},io=t=>{let{hideCloseIcon:e=false}=t;return jsxRuntime.jsxs("div",{className:"oui-pb-3 oui-border-b oui-border-line-4 oui-relative oui-w-full",children:[jsxRuntime.jsx(ui$1.Text,{size:"base",children:t.title}),!e&&jsxRuntime.jsx("button",{onClick:t.onClose,className:"oui-absolute oui-right-0 oui-top-0 oui-text-base-contrast-54 hover:oui-text-base-contrast-80 oui-p-2",children:jsxRuntime.jsx(ui$1.CloseIcon,{size:18,color:"white"})})]})},no=({onCancel:t,onConfirm:e,submitting:o})=>jsxRuntime.jsxs(ui$1.Flex,{id:"oui-positions-confirm-footer",gap:2,width:"100%",className:"oui-mt-3 oui-pb-1",children:[jsxRuntime.jsx(ui$1.Button,{id:"oui-positions-confirm-footer-cancel-button",color:"secondary",fullWidth:true,onClick:t,size:"md",children:"Cancel"}),jsxRuntime.jsx(ui$1.ThrottledButton,{id:"oui-positions-confirm-footer-confirm-button",onClick:e,fullWidth:true,loading:o,size:"md",children:"Confirm"})]}),$i=t=>{let{quantity:e,price:o,quoteDp:n,side:i}=t,r=react.useMemo(()=>o&&e?new utils.Decimal(o).mul(e).toFixed(n,utils.Decimal.ROUND_DOWN):"--",[o,e]);return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:1,width:"100%",className:"oui-text-sm oui-text-base-contrast-54",py:5,children:[jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui$1.Text,{children:"Qty."}),jsxRuntime.jsx(ui$1.Text,{color:i===types.OrderSide.BUY?"success":"danger",children:e})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui$1.Text,{children:"Price"}),jsxRuntime.jsx(ui$1.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"USDC"}),children:o})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui$1.Text,{children:"Notional"}),jsxRuntime.jsx(ui$1.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"USDC"}),children:r})]})]})},wt=t=>{let e=()=>{(t?.onClose??t.close)?.();};return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",className:t.classNames?.root,children:[jsxRuntime.jsx(io,{onClose:e,title:"Market Close",hideCloseIcon:t.hideCloseIcon}),jsxRuntime.jsx(ui$1.Text,{intensity:54,size:"sm",className:"oui-my-5",children:`You agree closing ${utils.commifyOptional(t.quantity)} ${t.base} position at market price.`}),jsxRuntime.jsx(no,{onCancel:e,onConfirm:async()=>{await t.onConfirm?.(),e();},submitting:t.submitting})]})},jt=t=>{let{order:e,quoteDp:o,quantity:n,price:i,submitting:r}=t,{side:a}=e,s=()=>{t.onClose?.();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(io,{onClose:s,title:"Limit Close",hideCloseIcon:t.hideCloseIcon}),jsxRuntime.jsx(ui$1.Text,{intensity:54,size:"sm",className:"oui-mt-5",children:`You agree closing ${utils.commify(t.quantity)} ${t.base} position at limit price.`}),jsxRuntime.jsxs(ui$1.Flex,{gap:2,mb:4,mt:5,justify:"between",children:[jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-type",size:"base",showIcon:true,children:e.symbol}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Badge,{color:"neutral",size:"xs",children:"Limit"}),jsxRuntime.jsx(ui$1.Badge,{color:a===types.OrderSide.BUY?"success":"danger",size:"xs",children:a===types.OrderSide.BUY?"Buy":"Sell"})]})]}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsx($i,{className:"oui-text-sm",price:i,quantity:n,side:e.side,quoteDp:o??2}),jsxRuntime.jsx(no,{onCancel:s,onConfirm:t.onConfirm,submitting:t.submitting})]})};var ao=()=>{let{type:t,quoteDp:e,price:o,updatePriceChange:n,updateOrderType:i,position:r}=M(),[a,s]=react.useState(false);return jsxRuntime.jsxs(ui$1.DropdownMenuRoot,{children:[jsxRuntime.jsx(ui$1.Input,{size:"sm",value:t===types.OrderType.LIMIT?o:"Market",onValueChange:l=>n(l),formatters:[ui$1.inputFormatter.numberFormatter,...e?[ui$1.inputFormatter.dpFormatter(e)]:[]],onFocus:l=>{t===types.OrderType.MARKET&&i(types.OrderType.LIMIT,`${r.mark_price}`),s(true);},onBlur:l=>{setTimeout(()=>{s(false);},100);},suffix:jsxRuntime.jsx(ui$1.DropdownMenuTrigger,{asChild:true,children:jsxRuntime.jsx("button",{className:"oui-px-1 oui-h-full",children:jsxRuntime.jsx(ui$1.CaretDownIcon,{size:12,color:"white"})})}),classNames:{root:ui$1.cn("oui-outline-line-12 focus-within:oui-outline-primary-light")}}),jsxRuntime.jsx(ui$1.DropdownMenuContent,{align:"end",className:"oui-w-[96px] oui-min-w-[96px]",onCloseAutoFocus:l=>l.preventDefault(),children:jsxRuntime.jsx(ui$1.DropdownMenuGroup,{children:jsxRuntime.jsx(ui$1.DropdownMenuItem,{size:"xs",onSelect:l=>{i(types.OrderType.MARKET);},children:jsxRuntime.jsx("span",{children:"Market"})})})})]})};var co=t=>{let[e,o]=react.useState(false),[n,i]=react.useState(100),{baseDp:r,quoteDp:a,updateQuantity:s,quantity:l,type:u,errors:p,baseTick:g}=M();react.useEffect(()=>{let m=P=>{P.target.closest("[data-popover-root]")||o(false);};return document.addEventListener("click",m),()=>{document.removeEventListener("click",m);}},[]);let C=m=>{c(`${t.value*(m/100)}`);},c=m=>{if(g&&g>0){let P=hooks.utils.formatNumber(m,g)??m;s(P);}};return jsxRuntime.jsxs(ui$1.PopoverRoot,{children:[jsxRuntime.jsx(ui$1.PopoverTrigger,{children:jsxRuntime.jsx(ui$1.Input,{size:"sm",onFocus:()=>{o(true);},classNames:{root:"oui-outline-line-12 "},formatters:[ui$1.inputFormatter.numberFormatter,...r?[ui$1.inputFormatter.dpFormatter(r)]:[]],value:l,onBlur:m=>c(m.target.value),onValueChange:m=>{if(s(m),m=="0"||m==""){i(0);return}let P=new utils.Decimal(m).div(t.value).mul(100).abs().toFixed(0,utils.Decimal.ROUND_DOWN);i(Math.min(100,Number(P)));}})}),jsxRuntime.jsx(ui$1.PopoverContent,{className:"oui-w-[360px] oui-rounded-xl",align:"start",side:"bottom",onOpenAutoFocus:m=>{m.preventDefault();},children:jsxRuntime.jsxs(ui$1.Flex,{p:1,gap:2,width:"100%",itemAlign:"start",children:[jsxRuntime.jsx(ui$1.Text,{size:"xs",intensity:98,className:"oui-min-w-[30px]",children:`${n}%`}),jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Slider,{markCount:4,value:[n],onValueChange:m=>{let P=Array.from(m.values());i(P[0]),C(P[0]);}}),jsxRuntime.jsx(dn,{onClick:m=>{i(m*100),C(m*100);}})]})]})})]})},dn=t=>jsxRuntime.jsx(ui$1.Flex,{gap:2,width:"100%",children:[{label:"0%",value:0},{label:"25%",value:.25},{label:"50%",value:.5},{label:"75%",value:.75},{label:"Max",value:1}].map((o,n)=>jsxRuntime.jsx(ui$1.Button,{variant:"outlined",color:"secondary",size:"xs",onClick:i=>{i.stopPropagation(),t.onClick(o.value);},className:"oui-w-1/5",children:o.label},n))});var po=(t,e)=>{let o=N();return jsxRuntime.jsx(ui$1.Text.numeral,{dp:o.base_dp,rm:utils.Decimal.ROUND_DOWN,padding:false,coloring:true,children:t})},fo=(t,e)=>jsxRuntime.jsx(co,{value:e.position_qty}),yo=t=>jsxRuntime.jsx(ao,{});var ne=t=>{if(t.sharePnLConfig==null)return jsxRuntime.jsx(jsxRuntime.Fragment,{});let{position:e}=t,o=()=>{let n=t.isPositionHistory?{side:e.side,pnl:e.netPnL,openPrice:Math.abs(e.avg_open_price),closePrice:Math.abs(e.avg_close_price),openTime:e.open_timestamp,closeTime:e.close_timestamp,quantity:e.closed_position_qty}:{side:e.position_qty>0?"LONG":"SHORT",pnl:e.unrealized_pnl,roi:new utils.Decimal(e.unrealized_pnl_ROI*100).toFixed(2,utils.Decimal.ROUND_DOWN),openPrice:Math.abs(e.average_open_price),markPrice:e.mark_price,openTime:e.timestamp,quantity:e.position_qty};ui$1.modal.show(t.modalId,{pnl:{entity:{symbol:e.symbol,...n},refCode:t.refCode,...t.sharePnLConfig,leverage:t.isPositionHistory?void 0:t.leverage}});};return jsxRuntime.jsx("button",{type:"button",onClick:n=>{n.stopPropagation(),o();},children:jsxRuntime.jsx(ui$1.ShareIcon,{color:"white",opacity:.54,size:t.iconSize??16})})};var xo=t=>{let{sharePnLConfig:e,position:o,modalId:n,iconSize:i,isPositionHistory:r}=t,{getFirstRefCode:a}=hooks.useReferralInfo(),s=react.useMemo(()=>a()?.code,[a]),l=hooks.useSymbolLeverage(t.position.symbol);return {iconSize:i,position:o,refCode:s,leverage:l,sharePnLConfig:e,modalId:n,isPositionHistory:r}};var X=t=>{let e=xo(t);return jsxRuntime.jsx(ne,{...e})};var bo=()=>{let{position:t,baseDp:e,quoteDp:o,tpslOrder:n}=M();return jsxRuntime.jsx(uiTpsl.PositionTPSLPopover,{position:t,order:n,label:"TP/SL",baseDP:e,quoteDP:o,isEditing:false})},Co=()=>{let{position:t,baseDp:e,quoteDp:o,tpslOrder:n}=M();return jsxRuntime.jsx(uiTpsl.PositionTPSLPopover,{position:t,order:n,baseDP:e,quoteDP:o,isEditing:true,children:jsxRuntime.jsx(ui$1.EditIcon,{opacity:1,className:"oui-text-base-contrast-54 oui-cursor-pointer",size:16})})};var To=t=>{let{stopLossPrice:e,takeProfitPrice:o}=t,{tpslOrder:n,position:i}=M();return jsxRuntime.jsx(Ln,{stopLossPrice:e,takeProfitPrice:o,direction:"column",order:n,position:i,tooltip:true})},ho=t=>{let{qty:e,price:o,entryPrice:n,orderSide:i,orderType:r,symbolInfo:a}=t,s=hooks.utils.priceToPnl({qty:e,price:o,entryPrice:n,orderSide:i,orderType:r},{symbol:a}),l=r===types.AlgoOrderType.TAKE_PROFIT?"TP":"SL";return jsxRuntime.jsxs(ui$1.Flex,{children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,className:"oui-mr-1",children:`${l} PnL:`}),jsxRuntime.jsx(ui$1.Text.formatted,{rule:"price",className:s===0?"oui-text-base-contrast-36":s>0?"oui-text-trade-profit oui-gap-0":"oui-text-trade-loss oui-gap-0",prefix:jsxRuntime.jsx(ui$1.Text,{children:s===0?"":s>0?"+":"-"}),suffix:jsxRuntime.jsx(ui$1.Text,{intensity:36,className:"oui-ml-1",children:"USDC"}),children:`${Math.abs(s)}`})]})},Ln=t=>{let{direction:e="row",order:o,position:n}=t,i=hooks.useSymbolsInfo(),r=react.useMemo(()=>{let u=[];if(!t.tooltip||!o||!n)return;let p=o.quantity;return p===0&&o.child_orders[0].type==="CLOSE_POSITION"&&(p=n.position_qty),t.takeProfitPrice&&u.push(jsxRuntime.jsx(ho,{qty:p,price:t.takeProfitPrice,entryPrice:n.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.TAKE_PROFIT,symbolInfo:i[o.symbol]()},"tp")),t.stopLossPrice&&u.push(jsxRuntime.jsx(ho,{qty:p,price:t.stopLossPrice,entryPrice:n.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.STOP_LOSS,symbolInfo:i[o.symbol]()},"sl")),jsxRuntime.jsx("div",{children:u})},[t.takeProfitPrice,t.stopLossPrice,n?.average_open_price,o?.side,o?.quantity,o?.algo_type]),a=react.useMemo(()=>{let u=[];return o?.symbol?(t.takeProfitPrice&&u.push(jsxRuntime.jsx(ui$1.Text.formatted,{className:ui$1.cn("oui-text-trade-profit oui-gap-0 oui-decoration-white/20"),rule:"price",dp:i[o.symbol]("quote_dp",2),children:t.takeProfitPrice,prefix:!t.stopLossPrice||e==="column"?jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"TP\xA0-\xA0"}):""},"tp")),t.stopLossPrice&&u.push(jsxRuntime.jsx(ui$1.Text.formatted,{className:ui$1.cn("oui-text-trade-loss oui-gap-0 oui-decoration-white/20 "),rule:"price",dp:i[o.symbol]("quote_dp",2),children:t.stopLossPrice,prefix:!t.takeProfitPrice||e==="column"?jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"SL\xA0-\xA0"}):""},"sl")),u.length===0?jsxRuntime.jsx(ui$1.Text,{children:"-"}):(u.length===2&&e==="row"&&u.splice(1,0,jsxRuntime.jsx(ui$1.Text,{children:"/"},"split")),u)):jsxRuntime.jsx("span",{children:"-"})},[t.takeProfitPrice,t.stopLossPrice,o?.symbol]),s=jsxRuntime.jsx("div",{className:ui$1.cn("oui-inline-flex oui-text-base-contrast-36",t.direction==="column"?"oui-flex-col":"oui-flex-row oui-gap-1",t.className),children:a}),l=Array.isArray(a)?!!a.length:!a;return t.tooltip?jsxRuntime.jsxs(ui$1.Flex,{gapX:2,children:[jsxRuntime.jsx(ui$1.Tooltip,{content:r,children:s}),l&&jsxRuntime.jsx(Co,{})]}):s};var Fo=t=>{let[e,o]=hooks.useLocalStorage("unPnlPriceBasis","markPrice");return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-items-start",children:[jsxRuntime.jsx(ui$1.Text,{children:"Current unrealized profit or loss on your open positions across all widgets calculated using Mark Price."}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsx("div",{className:"oui-mb-0",children:"Unrealized PnL Price Basis"}),jsxRuntime.jsx(Nn,{value:e,onValueChange:o})]})},Nn=t=>{let{value:e,onValueChange:o}=t;return jsxRuntime.jsxs(ui$1.Flex,{gap:2,children:[jsxRuntime.jsx(Lo,{sel:e==="markPrice",label:"Mark price",value:"markPrice",onCheckChange:o}),jsxRuntime.jsx(Lo,{sel:e==="lastPrice",label:"Last price",value:"lastPrice",onCheckChange:o})]})},Lo=t=>{let{sel:e,label:o,value:n,onCheckChange:i}=t;return jsxRuntime.jsxs(ui$1.Flex,{onClick:r=>{i(n),r.stopPropagation();},gap:1,className:"oui-cursor-pointer",children:[e?jsxRuntime.jsx(qn,{}):jsxRuntime.jsx(vn,{}),jsxRuntime.jsx(ui$1.Text,{size:"xs",intensity:e?98:54,children:o})]})},qn=()=>jsxRuntime.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"oui-fill-white",children:[jsxRuntime.jsx("path",{d:"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667",fill:"#fff",fillOpacity:".36"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8",r:"3.333"})]}),vn=()=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntime.jsx("path",{d:"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667",fill:"#fff",fillOpacity:".54"})});var At=t=>{let{tick:e="quote_dp",...o}=t,n=N();if(!n)throw new Error("NumeralWithCtx must be used inside SymbolProvider");return jsxRuntime.jsx(ui$1.Text.numeral,{as:"span",...o,dp:n[e]})};var qo=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o}=t;return react.useMemo(()=>[{title:"Symbol",dataIndex:"symbol",fixed:"left",width:140,onSort:(i,r)=>i.symbol.localeCompare(r.symbol),render:(i,r)=>jsxRuntime.jsxs(ui$1.Flex,{gap:2,children:[jsxRuntime.jsx(ui$1.Box,{width:4,height:20,className:ui$1.cn("oui-rounded-[1px]",r.position_qty>0?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsxRuntime.jsx(ui$1.Text.formatted,{formatString:"base-type",className:"oui-cursor-pointer",onClick:a=>{t.onSymbolChange?.({symbol:i}),a.stopPropagation(),a.preventDefault();},children:`${i.split("_")[1]}-PERP`})]})},{title:"Quantity",dataIndex:"position_qty",onSort:(i,r)=>i.position_qty-r.position_qty,width:120,className:"oui-pl-6",render:po},{title:"Avg. open",className:"oui-h-[48px]",width:120,onSort:true,dataIndex:"average_open_price",render:(i,r)=>jsxRuntime.jsx(At,{rm:utils.Decimal.ROUND_DOWN,children:i})},{title:"Mark price",dataIndex:"mark_price",width:120,onSort:true,className:"oui-h-[48px]",render:(i,r)=>jsxRuntime.jsx(At,{rm:utils.Decimal.ROUND_DOWN,children:i})},{title:jsxRuntime.jsx(ui$1.Tooltip,{className:"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-54 oui-p-3 oui-bg-base-8",content:"Estimated price at which your position will be liquidated. Prices are estimated and depend on multiple factors across all positions.",children:jsxRuntime.jsx(ui$1.Text,{children:"Liq. price"})}),width:100,onSort:true,dataIndex:"est_liq_price",render:(i,r)=>Number(i)===0?"--":jsxRuntime.jsx(At,{rm:utils.Decimal.ROUND_DOWN,className:Number(i)>0?"oui-text-warning-light":"",children:i??"--"})},{title:jsxRuntime.jsx(ui$1.HoverCard,{content:jsxRuntime.jsx(Fo,{}),side:"top",align:"center",className:"oui-max-w-[280px] oui-text-2xs",children:jsxRuntime.jsx(ui$1.Text,{children:"Unreal. PnL"})}),dataIndex:"unrealized_pnl",width:180,onSort:true,rule:"price",numeralProps:{coloring:true},render:(i,r)=>jsxRuntime.jsxs(ui$1.Flex,{gap:2,children:[jsxRuntime.jsxs(ui$1.Flex,{children:[jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",children:i}),jsxRuntime.jsx(ui$1.Text.numeral,{rule:"percentages",dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",prefix:"(",suffix:")",children:r.unrealized_pnl_ROI})]}),jsxRuntime.jsx(X,{position:r,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.SharePnLDialogId})]})},{title:"TP/SL",dataIndex:"__",width:150,render:(i,r)=>jsxRuntime.jsx(To,{stopLossPrice:r.sl_trigger_price,takeProfitPrice:r.tp_trigger_price})},{title:"Notional",dataIndex:"notional",className:"oui-h-[48px]",width:100,onSort:true,render:i=>jsxRuntime.jsx(ui$1.Text.numeral,{dp:e,children:i})},{title:jsxRuntime.jsx(ui$1.Tooltip,{className:"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-54 oui-p-3 oui-bg-base-8",content:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-bg-base-8 oui-rounded-sm",children:[jsxRuntime.jsx("span",{children:"The minimum equity to keep your position. "}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsx("span",{children:"Margin = Position size * Mark price * MMR"})]}),children:jsxRuntime.jsx(ui$1.Text,{children:"Margin"})}),dataIndex:"mm",onSort:true,width:100,rule:"price",render:i=>jsxRuntime.jsx(ui$1.Text.numeral,{children:i})},{title:"Qty.",dataIndex:"close_qty",width:100,fixed:"right",render:fo},{title:"Price",dataIndex:"close_price",width:100,fixed:"right",render:yo},{title:"",dataIndex:"close_position",align:"right",width:160,fixed:"right",render:i=>jsxRuntime.jsxs(ui$1.Flex,{gapX:2,justify:"end",children:[jsxRuntime.jsx(oo,{}),jsxRuntime.jsx(bo,{})]})}],[e,o])};var vo=t=>{let{item:e}=t,o=e.position_qty>0;return jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-type",size:"2xs",suffix:jsxRuntime.jsx(ui$1.Badge,{color:o?"success":"danger",size:"xs",children:o?"Buy":"Sell"}),showIcon:true,onClick:()=>{t.onSymbolChange?.({symbol:e.symbol});},children:e.symbol})},Io=t=>{let{item:e}=t;return jsxRuntime.jsxs(ui$1.Flex,{gap:3,children:[jsxRuntime.jsxs(ui$1.Flex,{direction:"column",className:"oui-text-2xs",itemAlign:"end",children:[jsxRuntime.jsxs(ui$1.Text,{intensity:36,children:["Unreal. PnL",jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),jsxRuntime.jsx(ui$1.Text.numeral,{size:"xs",dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:true,className:"orderly-font-semibold",suffix:jsxRuntime.jsx(ui$1.Text.numeral,{rule:"percentages",dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,prefix:"(",suffix:")",className:ui$1.cn("oui-ml-1",e.unrealized_pnl_ROI>0?"oui-text-success-darken":"oui-text-danger-darken"),children:e.unrealized_pnl_ROI}),children:e.unrealized_pnl})]}),jsxRuntime.jsx(X,{position:e,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.SharePnLBottomSheetId,iconSize:12})]})},Mo=t=>{let{item:e}=t;return jsxRuntime.jsx(ui$1.Statistic,{label:"Qty.",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.base_dp,padding:false,coloring:true,children:e.position_qty})})},Oo=t=>{let{item:e}=t;return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsxs(ui$1.Text,{children:["Margin",jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,intensity:80,children:e.mm})})},Bo=t=>{let{item:e}=t;return jsxRuntime.jsx(ui$1.Statistic,{align:"end",label:jsxRuntime.jsxs(ui$1.Text,{children:["Notional",jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,intensity:80,children:e.notional})})},ko=t=>{let{item:e}=t;return jsxRuntime.jsx(ui$1.Statistic,{label:"Avg. open",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,rm:utils.Decimal.ROUND_DOWN,intensity:80,children:e.average_open_price})})},Ao=t=>{let{item:e}=t;return jsxRuntime.jsx(ui$1.Statistic,{label:"Mark price",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,rm:utils.Decimal.ROUND_DOWN,intensity:80,children:e.mark_price})})},Ho=t=>{let{item:e}=t,o=e.est_liq_price&&e.est_liq_price>0?e.est_liq_price:"-";return jsxRuntime.jsx(ui$1.Statistic,{label:"Liq. price",align:"end",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,rm:utils.Decimal.ROUND_DOWN,color:"warning",children:o})})},Ro=t=>{let{item:e}=t;return e.tp_trigger_price==null&&e.sl_trigger_price==null?jsxRuntime.jsx(jsxRuntime.Fragment,{}):jsxRuntime.jsxs(ui$1.Flex,{className:"oui-text-2xs oui-text-base-contrast-36",children:[jsxRuntime.jsx(ui$1.Text,{children:"TP/SL:\xA0"}),jsxRuntime.jsxs(ui$1.Flex,{className:"oui-gap-[2px]",children:[e.tp_trigger_price&&jsxRuntime.jsx(ui$1.Text.numeral,{color:"buy",children:e.tp_trigger_price}),e.sl_trigger_price&&"/",e.sl_trigger_price&&jsxRuntime.jsx(ui$1.Text.numeral,{color:"sell",children:e.sl_trigger_price})]})]})};var ue=t=>{let{item:e,sheetOpen:o,setSheetOpen:n,dialogOpen:i,setDialogOpen:r,updatePriceChange:a,base:s,quantity:l,price:u,onClose:p,onConfirm:g,submitting:C,quote_dp:c,closeOrderData:m,onCloseDialog:P}=t,y=e.position_qty>0,F=f=>{if(t.baseTick&&t.baseTick>0){let h=hooks.utils.formatNumber(f,t.baseTick)??f;t.updateQuantity(h);}};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui$1.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:()=>{a("limit"),n(true);},children:"Limit Close"}),o&&jsxRuntime.jsx(ui$1.SimpleSheet,{title:"Limit close",open:o,onOpenChange:n,children:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:3,width:"100%",itemAlign:"start",className:"oui-text-sm",children:[jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",showIcon:true,children:e.symbol}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Badge,{color:"neutral",size:"xs",children:"Limit"}),y&&jsxRuntime.jsx(ui$1.Badge,{color:"success",size:"xs",children:"Buy"}),!y&&jsxRuntime.jsx(ui$1.Badge,{color:"danger",size:"xs",children:"Sell"})]})]}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Last price"}),jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.item?.symbolInfo?.quote_dp,suffix:jsxRuntime.jsx(ui$1.Text,{intensity:36,children:"USDC"}),children:t.curMarkPrice})]}),jsxRuntime.jsxs(ui$1.Flex,{width:"100%",direction:"column",gap:2,children:[jsxRuntime.jsx(ui$1.Input.tooltip,{prefix:"Price",suffix:t.quote,align:"right",fullWidth:true,autoComplete:"off",formatters:[ui$1.inputFormatter.numberFormatter,ui$1.inputFormatter.dpFormatter(t.quote_dp)],triggerClassName:"oui-w-full",tooltip:t.errors?.order_price?.message,color:t.errors?.order_price?.message?"danger":void 0,value:t.price,onValueChange:f=>t.updatePriceChange(f),classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui$1.cn("oui-outline-line-12 oui-w-full",t.errors?.order_price?.message?"oui-outline-danger":void 0)}}),jsxRuntime.jsx(ui$1.Input,{prefix:"Quantity",suffix:t.base,align:"right",fullWidth:true,autoComplete:"off",formatters:[ui$1.inputFormatter.numberFormatter,ui$1.inputFormatter.dpFormatter(t.base_dp)],value:t.quantity,onBlur:f=>F(f.target.value),onValueChange:f=>{t.updateQuantity(f);let h=new utils.Decimal(f).div(t.item.position_qty).mul(100).toDecimalPlaces(2,utils.Decimal.ROUND_DOWN).toNumber();t.setSliderValue(h);},classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui$1.cn("oui-outline-line-12 oui-w-full")}}),jsxRuntime.jsx(ui$1.Slider,{markCount:4,value:[t.sliderValue],color:"primary",onValueChange:f=>{t.setSliderValue(f[0]);let h=new utils.Decimal(f[0]).div(100).mul(t.item.position_qty).toFixed(t.base_dp,utils.Decimal.ROUND_DOWN);F(h);}}),jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{color:"primary",size:"2xs",children:`${t.sliderValue}%`}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",color:"primary",children:"Max"}),jsxRuntime.jsx(ui$1.Text.numeral,{intensity:54,size:"2xs",children:Math.abs(t.item.position_qty)})]})]})]}),jsxRuntime.jsxs(ui$1.Flex,{width:"100%",gap:3,mt:2,children:[jsxRuntime.jsx(ui$1.Button,{fullWidth:true,color:"secondary",onClick:f=>{p();},children:"Cancel"}),jsxRuntime.jsx(ui$1.ThrottledButton,{fullWidth:true,disabled:C,loading:C,onClick:f=>{f.stopPropagation(),f.preventDefault();let h=t.errors,R=h?.order_quantity?.message,Y=h?.order_price?.message;if(R||Y){ui$1.toast.error(R??Y);return}if(!t.orderConfirm){g();return}r(true);},children:"Confirm"})]})]})}),i&&jsxRuntime.jsx(ui$1.SimpleDialog,{open:i,onOpenChange:r,size:"xs",children:jsxRuntime.jsx(jt,{base:s,quantity:l,price:u,onClose:P,onConfirm:g,submitting:C,quoteDp:c,order:m,hideCloseIcon:true})})]})};var de=t=>{let{state:e}=t,[o,n]=react.useState(false),[i,r]=react.useState(false),{onSubmit:a,price:s,quantity:l,closeOrderData:u,submitting:p,type:g,updatePriceChange:C,updateOrderType:c,updateQuantity:m,errors:P,baseTick:y}=M(),F=react.useRef(false),[f,h]=react.useState(100),[R]=hooks.useLocalStorage("orderly_order_confirm",true),Y=()=>a().then(Mt=>{n(false),r(false);},Mt=>{typeof Mt=="string"?ui$1.toast.error(Mt):ui$1.toast.error(Mt.message);}),ht=()=>{n(false);},_t=()=>{r(false);},I=hooks.useMarkPricesStream(),k=react.useMemo(()=>I?.data?.[e.item.symbol]??"--",[I]),{quote_dp:_i,base_dp:Ti,base:wi,quote:Li}=N();return react.useEffect(()=>{!F.current&&k&&o&&(F.current=true,c(types.OrderType.LIMIT,`${k}`));},[F,k,o]),react.useEffect(()=>{o||(c(types.OrderType.MARKET),F.current=false);},[o]),{...e,sheetOpen:o,setSheetOpen:n,curMarkPrice:k,quote_dp:_i,base_dp:Ti,base:wi,quote:Li,baseTick:y,orderConfirm:R,onClose:ht,onConfirm:Y,price:s,quantity:l,closeOrderData:u,submitting:p,updatePriceChange:C,updateQuantity:m,errors:P,sliderValue:f,setSliderValue:h,dialogOpen:i,setDialogOpen:r,onCloseDialog:_t}};var pe=t=>{let e=de(t);return jsxRuntime.jsx(ue,{...e})};var ye=t=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui$1.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",disabled:t.submitting,loading:t.submitting,onClick:e=>{if(e.stopPropagation(),e.preventDefault(),t.updateOrderType(types.OrderType.MARKET),!t.orderConfirm){t.onConfirm();return}t.setDialogOpen(true);},children:"Market Close"}),jsxRuntime.jsx(ui$1.SimpleDialog,{open:t.dialogOpen,onOpenChange:t.setDialogOpen,size:"xs",children:jsxRuntime.jsx(wt,{base:t.base,quantity:t.quantity,onClose:t.onClose,onConfirm:t.onConfirm,submitting:t.submitting,hideCloseIcon:true})})]});var ge=t=>{let e=N(),[o,n]=react.useState(false),{onSubmit:i,price:r,quantity:a,closeOrderData:s,submitting:l,type:u,updatePriceChange:p,updateOrderType:g,updateQuantity:C}=M(),[c]=hooks.useLocalStorage("orderly_order_confirm",true);return {...t,...e,dialogOpen:o,setDialogOpen:n,orderConfirm:c,onSubmit:i,quantity:a,onClose:()=>{n(false);},onConfirm:()=>i().then(y=>{n(false);},y=>{typeof y=="string"?ui$1.toast.error(y):ui$1.toast.error(y.message);}),submitting:l,updateOrderType:g,updateQuantity:C}};var xe=t=>{let e=ge(t);return jsxRuntime.jsx(ye,{...e})};var Pe=t=>jsxRuntime.jsx(ui$1.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:e=>{e.stopPropagation(),e.preventDefault(),t.openTP_SL();},children:"TP/SL"});var be=t=>{let e=hooks.useSymbolsInfo()[t.state.item.symbol](),{tpslOrder:o}=M();return {openTP_SL:()=>{ui$1.modal.sheet({title:"TP/SL",content:jsxRuntime.jsx(uiTpsl.PositionTPSLSheet,{position:t.state.item,symbolInfo:e,order:o,isEditing:false})});},...t,...e}};var Ce=t=>{let e=be(t);return jsxRuntime.jsx(Pe,{...e})};var Se=t=>{let{className:e,...o}=t;return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,p:2,r:"xl",itemAlign:"start",className:ui$1.cn(e,"oui-bg-base-9"),children:[jsxRuntime.jsx(Cr,{...o}),jsxRuntime.jsx(ui$1.Divider,{intensity:6,className:"oui-w-full"}),jsxRuntime.jsx(Sr,{...o}),jsxRuntime.jsx(Ro,{...o}),jsxRuntime.jsx(hr,{...o})]})},Cr=t=>jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(vo,{...t}),jsxRuntime.jsx(Io,{...t})]}),Sr=t=>jsxRuntime.jsxs(ui$1.Grid,{cols:3,rows:2,gap:2,width:"100%",children:[jsxRuntime.jsx(Mo,{...t}),jsxRuntime.jsx(Oo,{...t}),jsxRuntime.jsx(Bo,{...t}),jsxRuntime.jsx(ko,{...t}),jsxRuntime.jsx(Ao,{...t}),jsxRuntime.jsx(Ho,{...t})]}),hr=t=>jsxRuntime.jsxs(ui$1.Grid,{width:"100%",gap:2,cols:3,rows:1,children:[jsxRuntime.jsx(Ce,{state:t}),jsxRuntime.jsx(pe,{state:t}),jsxRuntime.jsx(xe,{state:t})]});var he=t=>{let e=N();return {...t,...e}};var _e=t=>{let e=he(t);return jsxRuntime.jsx(Se,{...e,className:t.className})};var Yo=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,pagination:n}=t,i=qo({pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:t.onSymbolChange});return jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{loading:t.isLoading,id:"oui-desktop-positions-content",columns:i,bordered:true,dataSource:t.dataSource,generatedRowKey:r=>r.symbol,renderRowContainer:(r,a,s)=>jsxRuntime.jsx(pt,{symbol:r.symbol,children:jsxRuntime.jsx(Jt,{position:r,children:s})}),manualPagination:false,pagination:n,testIds:{body:"oui-testid-dataList-position-tab-body"}})},Xo=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o}=t;return jsxRuntime.jsx(ui$1.ListView,{className:"oui-w-full oui-hide-scrollbar oui-overflow-y-hidden oui-space-y-0",contentClassName:"!oui-space-y-1",dataSource:t.dataSource,renderItem:(n,i)=>jsxRuntime.jsx(pt,{symbol:n.symbol,children:jsxRuntime.jsx(Jt,{position:n,children:jsxRuntime.jsx(_e,{item:n,index:i,pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:t.onSymbolChange})})})})};var Te=t=>{let{symbol:e,calcMode:o,includedPendingOrder:n,pnlNotionalDecimalPrecision:i,sharePnLConfig:r,onSymbolChange:a}=t,{pagination:s,setPage:l}=ui$1.usePagination({pageSize:50}),[u,p,{isLoading:g}]=hooks.usePositionStream(e,{calcMode:o,includedPendingOrder:n});return react.useEffect(()=>{l(1);},[e]),{dataSource:reactApp.useDataTap(u?.rows,{fallbackData:[]})??void 0,isLoading:g,pnlNotionalDecimalPrecision:i,sharePnLConfig:r,symbol:e,onSymbolChange:a,pagination:s}};var qr=t=>{let e=Te(t);return jsxRuntime.jsx(Yo,{...e})},vr=t=>{let e=Te(t);return jsxRuntime.jsx(Xo,{...e})};var ti=t=>{let{onSymbolChange:e,pnlNotionalDecimalPrecision:o}=t;return react.useMemo(()=>[{title:"Symbol",dataIndex:"symbol",fixed:"left",width:200,onSort:(i,r)=>i.symbol.localeCompare(r.symbol),render:(i,r)=>jsxRuntime.jsx(Br,{record:r,onSymbolChange:e})},{title:"Closed / Max closed",dataIndex:"close_maxClose",width:200,render:(i,r)=>jsxRuntime.jsx(kr,{record:r})},{title:"Net PnL",dataIndex:"netPnL",width:140,onSort:(i,r)=>i.netPnL==null||r.netPnL==null?-1:(i.netPnL??0)-(r.netPnL??0),render:(i,r)=>jsxRuntime.jsxs(ui$1.Flex,{gapX:1,children:[jsxRuntime.jsx(Ar,{record:r,pnlNotionalDecimalPrecision:o}),jsxRuntime.jsx(X,{position:r,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.SharePnLDialogId,isPositionHistory:true})]})},{title:"Avg. open",dataIndex:"avg_open",width:140,render:(i,r)=>{let a=r.avg_open_price!=null?Math.abs(r.avg_open_price):"--",{quote_dp:s}=N();return jsxRuntime.jsx(ui$1.Text.numeral,{dp:s,padding:false,children:a})}},{title:"Avg. close",dataIndex:"avg_close",width:175,render:(i,r)=>{let a=r.avg_close_price!=null?Math.abs(r.avg_close_price):"--",{quote_dp:s}=N();return jsxRuntime.jsx(ui$1.Text.numeral,{dp:s,padding:false,children:a})}},{title:"Time opened",dataIndex:"open_timestamp",width:175,onSort:true,render:(i,r)=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:r.open_timestamp})},{title:"Time closed",dataIndex:"close_timestamp",width:175,onSort:true,render:(i,r)=>r.position_status=="closed"&&r.close_timestamp?jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:r.close_timestamp??"--"}):"--"},{title:"Updated time",dataIndex:"last_update_time",width:175,onSort:true,render:(i,r)=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:r.last_update_time})}],[o])},Br=t=>{let{record:e,onSymbolChange:o}=t,n=react.useMemo(()=>{let i=[];return i.push(jsxRuntime.jsx(ui$1.Badge,{color:e.position_status!=="closed"?"primaryLight":"neutral",size:"xs",children:ui$1.capitalizeFirstLetter(e.position_status==="partial_closed"?"Partially closed":e.position_status.replace("_"," "))})),e.type==="adl"?i.push(jsxRuntime.jsx(ui$1.Badge,{color:"danger",size:"xs",children:ui$1.capitalizeFirstLetter(e.type)})):e.type==="liquidated"&&i.push(jsxRuntime.jsx(ui$1.Tooltip,{className:"oui-min-w-[204px] oui-bg-base-5",arrow:{className:"oui-fill-base-5"},content:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",className:"oui-text-2xs",children:[e.liquidation_id!=null&&jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Liquidation id"}),jsxRuntime.jsx(ui$1.Text,{intensity:98,children:e.liquidation_id})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Liquidator fee"}),jsxRuntime.jsxs(ui$1.Text,{color:"lose",children:[e.liquidator_fee>0&&"-",utils.commifyOptional(e.liquidator_fee)]})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Ins. Fund fee"}),jsxRuntime.jsxs(ui$1.Text,{color:"lose",children:[e.insurance_fund_fee>0&&"-",utils.commifyOptional(e.insurance_fund_fee)]})]})]}),children:jsxRuntime.jsx("div",{children:jsxRuntime.jsx(ui$1.Badge,{size:"xs",color:"danger",className:"oui-cursor-pointer",children:jsxRuntime.jsx("span",{className:"oui-underline oui-decoration-dashed oui-decoration-[1px]",children:ui$1.capitalizeFirstLetter(e.type)})})})})),i},[e]);return jsxRuntime.jsxs(ui$1.Flex,{gap:2,height:48,children:[jsxRuntime.jsx(ui$1.Box,{width:4,height:38,className:ui$1.cn("oui-rounded-[1px] oui-shrink-0",e.side==="LONG"?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",children:[jsxRuntime.jsx(ui$1.Text.formatted,{formatString:"base-type",className:"oui-cursor-pointer",onClick:i=>{o?.({symbol:e.symbol}),i.stopPropagation(),i.preventDefault();},children:`${e.symbol.split("_")[1]}-PERP`}),jsxRuntime.jsx(ui$1.Flex,{gap:1,children:n})]})]})},kr=t=>{let{record:e}=t,{base_dp:o}=N();return jsxRuntime.jsxs(ui$1.Flex,{gap:1,direction:"column",itemAlign:"start",className:"oui-overflow-hidden oui-whitespace-nowrap oui-text-ellipsis",children:[jsxRuntime.jsx(ui$1.Text.numeral,{dp:o,padding:false,children:Math.abs(e.closed_position_qty)}),jsxRuntime.jsx(ui$1.Text.numeral,{dp:o,padding:false,className:"oui-truncate",children:Math.abs(e.max_position_qty)})]})},Ar=t=>{let{record:e,pnlNotionalDecimalPrecision:o}=t,n=e.netPnL!=null?e.netPnL:void 0,i=()=>jsxRuntime.jsx(ui$1.Text.numeral,{dp:o,color:e.netPnL!=null?e.netPnL>0?"profit":"lose":void 0,className:n==null?"":"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12",children:n??"--"});return e.netPnL==null?i():jsxRuntime.jsx(ui$1.Tooltip,{delayDuration:200,content:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",className:"oui-text-2xs",children:[jsxRuntime.jsx(ui$1.Text,{intensity:80,children:"Net PnL"}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Realized PnL"}),jsxRuntime.jsx(ui$1.Text,{color:e.realized_pnl>=0?"profit":"lose",className:"oui-cursor-pointer",children:utils.commifyOptional(e.realized_pnl)})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Funding fee"}),jsxRuntime.jsx(ui$1.Text,{color:e.accumulated_funding_fee>0?"lose":"profit",className:"oui-cursor-pointer",children:utils.commifyOptional(-e.accumulated_funding_fee)})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Trading fee"}),jsxRuntime.jsx(ui$1.Text,{color:e.trading_fee>0?"lose":"profit",className:"oui-cursor-pointer",children:utils.commifyOptional(-e.trading_fee)})]})]}),className:"oui-min-w-[204px] oui-bg-base-5",arrow:{className:"oui-fill-base-5"},children:jsxRuntime.jsx("div",{children:i()})})};function O(t){if(t==null)return t;let e=new Date(t);return e.setHours(0,0,0,0),e}function B(t){if(t==null)return t;let e=new Date(t);return e.setHours(23,59,59,999),e}var yt=t=>({from:O(t.from),to:B(t.to??t.from)}),gt=(t,e)=>t.getTime()===e.getTime();var Ut=t=>{let{onSymbolChange:e,symbol:o,pnlNotionalDecimalPrecision:n}=t,{state:i}=hooks.useAccount(),{data:r,isLoading:a}=hooks.usePrivateQuery(o?`/v1/position_history?symbol=${o}&limit=1000`:"/v1/position_history?limit=1000",{formatter(f){return (f.rows??null)?.map(h=>{if(h.realized_pnl!=null&&h.accumulated_funding_fee!=null&&h.trading_fee!=null){let R=h.realized_pnl-h.accumulated_funding_fee-h.trading_fee;return {...h,netPnL:R}}return h})},revalidateOnFocus:true}),{pagination:s,setPage:l}=ui$1.usePagination({pageSize:10}),{status:u,side:p,dateRange:g,filterDays:C,updateFilterDays:c,filterItems:m,onFilter:P}=$r();react.useEffect(()=>{l(1);},[u,p,g,C,o]);let y=react.useMemo(()=>r==null?r:r.filter(f=>{let h=p==="all"?true:f.side.toLowerCase()===p.toLowerCase(),R=u==="all"?true:f.position_status.toLowerCase()===u.toLowerCase(),Y=f?.last_update_time??f.open_timestamp,ht=g.from&&g.to?Y>=g.from.getTime()&&Y<=g.to.getTime():true,_t=o?f.symbol==o:true;return h&&R&&ht&&_t}),[u,p,g,r,o]);return {dataSource:reactApp.useDataTap(y,{accountStatus:i.status===types.AccountStatusEnum.EnableTradingWithoutConnected?types.AccountStatusEnum.EnableTradingWithoutConnected:types.AccountStatusEnum.EnableTrading,fallbackData:[]}),isLoading:a,onSymbolChange:e,pagination:s,filterItems:m,onFilter:P,symbol:o,filterDays:C,updateFilterDays:c,pnlNotionalDecimalPrecision:n}},$r=()=>{let[t,e]=react.useState("all"),[o,n]=react.useState("all"),i=yt({to:B(new Date),from:O(dateFns.subDays(new Date,89))}),[r,a]=react.useState(90),[s,l]=react.useState(i),u=c=>{a(c),l({from:O(dateFns.subDays(new Date,c-1)),to:B(new Date)});},p=c=>{if(c.name==="side"&&n(c.value),c.name==="status"&&e(c.value),c.name==="dateRange"){let m=yt(c.value);if(l(m),m.from&&m.to){let P=Math.abs(dateFns.differenceInDays(m.from,m.to))+1,F={1:{from:O(new Date),to:B(new Date)},7:{from:O(dateFns.subDays(new Date,6)),to:B(new Date)},30:{from:O(dateFns.subDays(new Date,29)),to:B(new Date)},90:{from:O(dateFns.subDays(new Date,89)),to:B(new Date)}}[P];F&>(F.from,m.from)&>(F.to,m.to)?a(P):a(null);}}},{isMobile:g}=ui$1.useScreen();return {filterItems:react.useMemo(()=>{let c={type:"select",name:"side",options:[{label:"All sides",value:"all"},{label:"Buy",value:"LONG"},{label:"Sell",value:"SHORT"}],value:o},m={type:"range",name:"dateRange",value:s,fromDate:O(dateFns.subDays(new Date,89)),toDate:B(new Date)},P={type:"select",name:"status",options:[{label:"All status",value:"all"},{label:"Closed",value:"closed"},{label:"Partially Closed",value:"partial_closed"}],value:t};return g?[c,P]:[c,P,m]},[o,t,s]),onFilter:p,side:o,dateRange:s,status:t,filterDays:r,updateFilterDays:u}};var ii=t=>{let{side:e,symbol:o}=t.item,n=e==="LONG";return jsxRuntime.jsx(ui$1.Text.formatted,{intensity:80,rule:"symbol",formatString:"base-type",size:"sm",prefix:jsxRuntime.jsx(ui$1.Badge,{color:n?"success":"danger",size:"xs",children:n?"Buy":"Sell"}),onClick:()=>{t.onSymbolChange?.({symbol:o});},children:o})};var ni=t=>{let{item:e}=t,o=()=>{ui$1.modal.alert({title:"Liquidation",message:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,className:"oui-text-2xs oui-text-base-contrast-54",children:[e.liquidation_id!=null&&jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(ui$1.Text,{children:"Liquidation id"}),jsxRuntime.jsx(ui$1.Text,{intensity:98,children:e.liquidation_id})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(ui$1.Text,{children:"Liquidator fee"}),jsxRuntime.jsxs(ui$1.Text,{color:"lose",children:[e.liquidator_fee>0&&"-",utils.commifyOptional(e.liquidator_fee)]})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(ui$1.Text,{children:"Ins. Fund fee"}),jsxRuntime.jsxs(ui$1.Text,{color:"lose",children:[e.insurance_fund_fee>0&&"-",utils.commifyOptional(e.insurance_fund_fee)]})]})]})});},n=react.useMemo(()=>{let i=[];return i.push(jsxRuntime.jsx(ui$1.Badge,{color:e.position_status!=="closed"?"primaryLight":"neutral",size:"xs",children:ui$1.capitalizeFirstLetter(e.position_status==="partial_closed"?"Partially closed":e.position_status.replace("_"," "))})),e.type==="adl"?i.push(jsxRuntime.jsx(ui$1.Badge,{color:"danger",size:"xs",children:ui$1.capitalizeFirstLetter(e.type)})):e.type==="liquidated"&&i.push(jsxRuntime.jsx(ui$1.Badge,{size:"xs",color:"danger",className:"oui-cursor-pointer",onClick:o,children:jsxRuntime.jsx("span",{className:"oui-underline oui-decoration-dashed oui-decoration-[1px]",children:ui$1.capitalizeFirstLetter(e.type)})})),i},[e]);return jsxRuntime.jsx(ui$1.Flex,{gap:1,children:n})},ri=t=>{let{item:e}=t,o=e.closed_position_qty!=null?Math.abs(e.closed_position_qty):"--";return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsx(ui$1.Text,{children:"Closed"}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.base_dp,padding:false,coloring:true,intensity:80,children:o})})},si=t=>{let{item:e}=t,o=e.max_position_qty!=null?Math.abs(e.max_position_qty):"--";return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsx(ui$1.Text,{children:"Max closed"}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.base_dp,padding:false,coloring:true,intensity:80,children:o})})},ai=t=>{let{item:e}=t,o=e.avg_open_price!=null?Math.abs(e.avg_open_price):"--";return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsxs(ui$1.Text,{children:["Avg. open",jsxRuntime.jsx(ui$1.Text,{intensity:20,children:" (USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,padding:false,coloring:true,intensity:80,children:o})})},li=t=>{let{item:e}=t,o=e.avg_close_price!=null?Math.abs(e.avg_close_price):"--";return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsxs(ui$1.Text,{children:["Avg. close",jsxRuntime.jsx(ui$1.Text,{intensity:20,children:" (USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,padding:false,coloring:true,intensity:80,children:o})})},mi=t=>{let{item:e}=t;return jsxRuntime.jsx(ui$1.Statistic,{label:"Time opened",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},align:"end",children:jsxRuntime.jsx(ui$1.Text.formatted,{intensity:80,formatString:"yyyy-MM-dd HH:mm:ss",rule:"date",children:e.open_timestamp})})},ui=t=>{let{item:e}=t,o=e.position_status=="closed"&&e.close_timestamp?jsxRuntime.jsx(ui$1.Text.formatted,{intensity:80,formatString:"yyyy-MM-dd HH:mm:ss",rule:"date",children:e.close_timestamp}):"--";return jsxRuntime.jsx(ui$1.Statistic,{label:"Time closed",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},align:"end",children:o})};var qe=t=>jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,itemAlign:"start",className:t.classNames?.root,children:[jsxRuntime.jsx(Zr,{...t}),jsxRuntime.jsx(ui$1.Divider,{intensity:6,className:"oui-w-full"}),jsxRuntime.jsx(jr,{...t})]}),Zr=t=>{let e=()=>{let{item:o}=t;ui$1.modal.alert({title:"Net PnL",message:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,className:"oui-text-2xs oui-text-base-contrast-54",children:[jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Realized PnL"}),jsxRuntime.jsx(ui$1.Text,{color:o.realized_pnl>=0?"profit":"lose",children:utils.commifyOptional(o.realized_pnl)})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Funding fee"}),jsxRuntime.jsx(ui$1.Text,{color:o.accumulated_funding_fee>0?"lose":"profit",children:utils.commifyOptional(-o.accumulated_funding_fee)})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"Trading fee"}),jsxRuntime.jsx(ui$1.Text,{color:o.trading_fee>0?"lose":"profit",children:utils.commifyOptional(-o.trading_fee)})]})]})});};return jsxRuntime.jsxs(ui$1.Flex,{gap:1,width:"100%",children:[jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",className:"oui-flex-1",gap:1,children:[jsxRuntime.jsx(ii,{...t}),jsxRuntime.jsx(ni,{...t})]}),jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"end",className:"oui-flex-1",children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:"Net PnL"}),jsxRuntime.jsxs(ui$1.Flex,{gapX:1,children:[jsxRuntime.jsx("button",{onClick:e,children:jsxRuntime.jsx(ui$1.Text.numeral,{size:"xs",coloring:true,children:t.item.netPnL??"--"})}),jsxRuntime.jsx(X,{position:t.item,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.SharePnLBottomSheetId,iconSize:12,isPositionHistory:true})]})]})]})},jr=t=>jsxRuntime.jsxs(ui$1.Grid,{cols:3,rows:2,width:"100%",gap:0,className:"oui-grid-cols-[1fr,1fr,135px]",children:[jsxRuntime.jsx(ri,{...t}),jsxRuntime.jsx(si,{...t}),jsxRuntime.jsx(mi,{...t}),jsxRuntime.jsx(ai,{...t}),jsxRuntime.jsx(li,{...t}),jsxRuntime.jsx(ui,{...t})]});var ve=t=>{let e=N();return {...t,...e}};var Ie=t=>{let e=ve(t);return jsxRuntime.jsx(qe,{...e})};var Oe=t=>{let{onSymbolChange:e,pagination:o,pnlNotionalDecimalPrecision:n}=t,i=ti({onSymbolChange:e,pnlNotionalDecimalPrecision:n,sharePnLConfig:t.sharePnLConfig});return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",height:"100%",itemAlign:"start",children:[jsxRuntime.jsxs(ui$1.Flex,{gap:3,children:[t.filterItems.length>0&&jsxRuntime.jsx(ui$1.DataFilter,{items:t.filterItems,onFilter:r=>{t.onFilter(r);}}),[1,7,30,90].map(r=>jsxRuntime.jsxs("button",{className:"oui-relative oui-px-2 oui-py-[2px] oui-text-sm",children:[jsxRuntime.jsx("div",{className:"oui-z-10",children:jsxRuntime.jsx(ui$1.Text.gradient,{color:t.filterDays===r?"brand":void 0,className:t.filterDays!==r?"oui-text-base-contrast-54":"",children:`${r}D`})}),jsxRuntime.jsx("div",{className:"oui-gradient-primary oui-opacity-[.12] oui-absolute oui-left-0 oui-right-0 oui-top-0 oui-bottom-0 oui-rounded",onClick:()=>{t.updateFilterDays(r);}})]}))]}),jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{loading:t.isLoading,id:"oui-desktop-positions-content",columns:i,bordered:true,dataSource:t.dataSource,generatedRowKey:r=>`${r.symbol}_${r.position_id}`,renderRowContainer:(r,a,s)=>jsxRuntime.jsx(pt,{symbol:r.symbol,children:s}),manualPagination:false,pagination:o,testIds:{body:"oui-testid-dataList-positionHistory-tab-body"},classNames:{root:"!oui-h-[calc(100%_-_49px)]"}})]})},Be=t=>jsxRuntime.jsxs(ui$1.Grid,{cols:1,rows:2,className:"oui-grid-rows-[auto,1fr] oui-w-full",gap:1,children:[jsxRuntime.jsx(ui$1.Flex,{gap:2,p:2,className:"oui-bg-base-9 oui-rounded-b-xl",children:jsxRuntime.jsx(ui$1.DataFilter,{className:"oui-pt-0 oui-pb-0 oui-border-none",items:t.filterItems,onFilter:e=>{t.onFilter(e);}})}),jsxRuntime.jsx(ui$1.ListView,{className:ui$1.cn("oui-w-full oui-hide-scrollbar oui-overflow-y-hidden oui-space-y-0",t.classNames?.root),contentClassName:ui$1.cn("!oui-space-y-1",t.classNames?.content),dataSource:t.dataSource,renderItem:(e,o)=>jsxRuntime.jsx(pt,{symbol:e.symbol,children:jsxRuntime.jsx(Ie,{item:e,index:o,onSymbolChange:t.onSymbolChange,classNames:{root:t.classNames?.cell},sharePnLConfig:t.sharePnLConfig})})})]});var rs=t=>{let e=Ut(t);return jsxRuntime.jsx(Oe,{...e,sharePnLConfig:t.sharePnLConfig})},ss=t=>{let{classNames:e,...o}=t,n=Ut(o);return jsxRuntime.jsx(Be,{...n,classNames:e,sharePnLConfig:t.sharePnLConfig})};var yi=t=>{return react.useMemo(()=>[{title:"Time",dataIndex:"timestamp",fixed:"left",width:202,render:o=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:o})},{title:"Liquidation id",dataIndex:"liquidation_id",width:202,render:o=>jsxRuntime.jsx(ui$1.Text,{children:o})},{title:"Ins. fund transfer",dataIndex:"transfer_amount_to_insurance_fund",width:202,render:o=>jsxRuntime.jsx(ui$1.Text,{children:utils.commifyOptional(o)})},{title:"Symbol ",dataIndex:"Symbol",width:202,render:(o,n)=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",itemAlign:"start",children:n.positions_by_perp?.map(i=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-quote",children:i.symbol}))})},{title:"Price (USDC)",dataIndex:"Price_(USDC)",width:202,render:(o,n)=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",itemAlign:"start",children:n.positions_by_perp?.map(i=>jsxRuntime.jsx(ke,{value:i.transfer_price,type:"quote"}))})},{title:"Quantity",dataIndex:"Quantity",width:202,render:(o,n)=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",itemAlign:"start",children:n.positions_by_perp?.map(i=>jsxRuntime.jsx(ke,{value:i.position_qty,type:"base"}))})},{title:"Liquidation fee",dataIndex:"abs_liquidation_fee",width:202,render:(o,n)=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",itemAlign:"start",children:n.positions_by_perp?.map(i=>jsxRuntime.jsx(ke,{value:i.abs_liquidation_fee,type:"quote"}))})}],[])},ke=t=>jsxRuntime.jsx(ui$1.Text,{children:utils.commifyOptional(t.value)});var gi=t=>jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsxs(ui$1.Text,{size:"2xs",intensity:36,children:["Price",jsxRuntime.jsx(ui$1.Text,{intensity:20,children:" (USDC)"})]}),jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:80,children:utils.commifyOptional(t.transfer_price)})]}),xi=t=>jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:"Quantity"}),jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:80,children:utils.commifyOptional(t.position_qty)})]}),Pi=t=>jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:"Liquidation fee"}),jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:80,children:utils.commifyOptional(t.abs_liquidation_fee)})]});var Re=t=>jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,itemAlign:"start",className:t.classNames?.root,children:[jsxRuntime.jsx(cs,{...t}),jsxRuntime.jsx(ds,{...t})]},t.item.timestamp),cs=t=>jsxRuntime.jsxs(ui$1.Flex,{gap:1,width:"100%",children:[jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",className:"oui-flex-1",gap:1,children:[jsxRuntime.jsx(ui$1.Text.formatted,{size:"2xs",intensity:36,rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:t.item.timestamp}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:"Liquidation id:"}),jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:80,children:` ${t.item.liquidation_id}`})]})]}),jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"end",className:"oui-flex-1",children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:"Ins. Fund Transfer:"}),jsxRuntime.jsx(ui$1.Text,{intensity:80,size:"xs",children:utils.commifyOptional(t.item.transfer_amount_to_insurance_fund)})]})]}),ds=t=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",width:"100%",children:t.item.positions_by_perp?.map((e,o)=>jsxRuntime.jsx(ps,{isLast:o===t.item.positions_by_perp.length-1,...e},`${o}-${e.symbol}`))}),ps=t=>jsxRuntime.jsxs(ui$1.Flex,{width:"100%",itemAlign:"start",className:ui$1.cn("oui-border-t-[1px] oui-border-line-6 oui-pt-2",!t.isLast&&"oui-pb-2"),children:[jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-quote",size:"xs",intensity:80,className:"oui-flex-1",children:t.symbol}),jsxRuntime.jsxs(ui$1.Grid,{cols:1,rows:3,width:"100%",gap:1,className:"oui-flex-1",children:[jsxRuntime.jsx(gi,{...t}),jsxRuntime.jsx(xi,{...t}),jsxRuntime.jsx(Pi,{...t})]})]},t.key);var ze=t=>({...t});var Ee=t=>{let{classNames:e,...o}=t,n=ze(o);return jsxRuntime.jsx(Re,{classNames:e,...n})};var Ue=t=>{let e=yi();return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",height:"100%",itemAlign:"start",children:[jsxRuntime.jsxs(ui$1.Flex,{gap:3,children:[t.filterItems.length>0&&jsxRuntime.jsx(ui$1.DataFilter,{items:t.filterItems,onFilter:o=>{t.onFilter(o);}}),[1,7,30,90].map(o=>jsxRuntime.jsxs("button",{className:"oui-relative oui-px-2 oui-py-[2px] oui-text-sm",children:[jsxRuntime.jsx("div",{className:"oui-z-10",children:jsxRuntime.jsx(ui$1.Text.gradient,{color:t.filterDays===o?"brand":void 0,className:t.filterDays!==o?"oui-text-base-contrast-54":"",children:`${o}D`})}),jsxRuntime.jsx("div",{className:"oui-gradient-primary oui-opacity-[.12] oui-absolute oui-left-0 oui-right-0 oui-top-0 oui-bottom-0 oui-rounded",onClick:()=>{t.updateFilterDays(o);}})]}))]}),jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{loading:t.isLoading,id:"oui-desktop-liquidation-content",columns:e,bordered:true,dataSource:t.dataSource,generatedRowKey:o=>`${o.liquidation_id}`,pagination:t.pagination,testIds:{body:"oui-testid-dataList-liquidation-tab-body"},classNames:{root:"!oui-h-[calc(100%_-_49px)]"}})]})},Qe=t=>jsxRuntime.jsxs(ui$1.Grid,{cols:1,rows:2,className:"oui-grid-rows-[auto,1fr] oui-w-full",gap:1,children:[jsxRuntime.jsx(ui$1.Flex,{gap:2,p:2,className:"oui-bg-base-9 oui-rounded-b-xl",children:jsxRuntime.jsx(ui$1.DataFilter,{className:"oui-pt-0 oui-pb-0 oui-border-none",items:t.filterItems,onFilter:e=>{t.onFilter(e);}})}),jsxRuntime.jsx(ui$1.ListView,{className:ui$1.cn("oui-w-full oui-hide-scrollbar oui-overflow-y-hidden oui-space-y-0",t.classNames?.root),contentClassName:ui$1.cn("!oui-space-y-1",t.classNames?.content),dataSource:t.dataSource,loadMore:t.loadMore,renderItem:(e,o)=>jsxRuntime.jsx(Ee,{item:e,index:o,classNames:{root:t.classNames?.cell}})})]});var Yt=t=>{let{symbol:e,enableLoadMore:o}=t,{page:n,pageSize:i,setPage:r,pagination:a,parsePagination:s}=ui$1.usePagination({pageSize:10}),{dateRange:l,filterDays:u,updateFilterDays:p,filterItems:g,onFilter:C}=Ls();react.useEffect(()=>{r(1);},[e,l,u]);let[c,{meta:m,isLoading:P,loadMore:y}]=ws({page:o?void 0:n,size:i,symbol:e,start_t:l.from!=null?l.from.getTime():void 0,end_t:l.to!=null?l.to.getTime():void 0});return {dataSource:reactApp.useDataTap(c,{fallbackData:[]}),isLoading:P,loadMore:y,pagination:s(m),dateRange:l,filterDays:u,updateFilterDays:p,filterItems:g,onFilter:C}},ws=t=>{let e=hooks.usePrivateInfiniteQuery(Ds(t),{initialSize:1,formatter:a=>a,revalidateOnFocus:true}),o=react.useMemo(()=>e.data?.[0]?.meta,[e.data?.[0]]),n=react.useMemo(()=>e.data?.map(a=>a.rows)?.flat(),[e.data]),i=e.isLoading;return [n,{meta:o,isLoading:i,loadMore:()=>{e.setSize(e.size+1);}}]},Ls=()=>{let t=yt({to:B(new Date),from:O(dateFns.subDays(new Date,89))}),[e,o]=react.useState(90),[n,i]=react.useState(t),r=u=>{o(u),i({from:O(dateFns.subDays(new Date,u-1)),to:B(new Date)});},a=u=>{if(u.name==="dateRange"){let p=yt(u.value);if(i(p),p.from&&p.to){let g=Math.abs(dateFns.differenceInDays(p.from,p.to))+1,c={1:{from:O(new Date),to:B(new Date)},7:{from:O(dateFns.subDays(new Date,6)),to:B(new Date)},30:{from:O(dateFns.subDays(new Date,29)),to:B(new Date)},90:{from:O(dateFns.subDays(new Date,89)),to:B(new Date)}}[g];c&>(c.from,p.from)&>(c.to,p.to)?o(g):o(null);}}},{isMobile:s}=ui$1.useScreen();return {filterItems:react.useMemo(()=>{let u={type:"range",name:"dateRange",value:n,fromDate:O(dateFns.subDays(new Date,89)),toDate:B(new Date)};return s?[u]:[u]},[n]),onFilter:a,dateRange:n,filterDays:e,updateFilterDays:r}},Ds=t=>(e,o)=>{if(o&&!o.rows?.length)return null;let{symbol:n,size:i=10,page:r,end_t:a,start_t:s}=t,l=new URLSearchParams([["size",i.toString()],["page",`${e+1}`]]);return r&&l.set("page",`${r}`),n&&l.set("symbol",n),a&&l.set("end_t",`${a}`),s&&l.set("start_t",`${s}`),`/v1/liquidations?${l.toString()}`};var Fs=t=>{let e=Yt(t);return jsxRuntime.jsx(Ue,{...e})},Ns=t=>{let{classNames:e,...o}=t,n=Yt(o);return jsxRuntime.jsx(Qe,{classNames:e,...n})};var vs="MarketCloseConfirmID";ui$1.registerSimpleDialog(vs,wt,{size:"md",closable:false});
|
|
16
|
+
var to=react.createContext({}),O=()=>react.useContext(to),oe=t=>{let[e,o]=react.useState(Math.abs(t.position.position_qty).toString()),{t:i}=i18n.useTranslation();react.useEffect(()=>{o(Math.abs(t.position.position_qty).toString());},[t.position.position_qty]);let[s,n]=react.useState(""),r=t.position.position_qty>0?types.OrderSide.SELL:types.OrderSide.BUY,[a,l]=react.useState(void 0),[u,c]=react.useState(types.OrderType.MARKET),d=hooks.useSymbolsInfo(),b=t.position.symbol,S=d?.[b],m=S("quote_dp"),f=S("base_dp"),P=S("base_tick"),{helper:C,onSubmit:y,submitting:D}=hooks.useOrderEntry_deprecated(t.position?.symbol,r,true),k=(q,z)=>{if(c(q),q===types.OrderType.LIMIT){if(!z)throw new Error(i("orderEntry.orderPrice.error.required"));n(z);}else n("");},Q=react.useMemo(()=>{let{position:q}=t;if(!q)return null;let z={order_quantity:e,symbol:t.position.symbol,order_type:u,side:r,reduce_only:true};return u===types.OrderType.LIMIT&&(z.order_price=s),z},[t.position,s,u,e]),T=q=>{let z=C.calculate({},"order_quantity",q);o(z.order_quantity);},G=q=>{let z=C.calculate({},"order_price",q);n(z.order_price);};react.useEffect(()=>{let q=Q;C.validator(q).then(z=>{l(z);});},[Q]);let kt=()=>y(Q).catch(q=>(typeof q=="string"?ui$1.toast.error(q):ui$1.toast.error(q.message),Promise.resolve()));return jsxRuntime.jsx(to.Provider,{value:{quantity:e,price:s,type:u,side:r,position:t.position,updatePriceChange:G,updateQuantity:T,updateOrderType:k,tpslOrder:t.position.algo_order,onSubmit:kt,submitting:D,closeOrderData:Q,quoteDp:m,baseDp:f,baseTick:P,errors:a},children:t.children})};var eo=react.createContext({}),I=()=>react.useContext(eo),Pt=t=>{let e=hooks.useSymbolsInfo()[t.symbol];return jsxRuntime.jsx(eo.Provider,{value:{base_dp:e("base_dp"),quote_dp:e("quote_dp"),base_tick:e("base_tick"),quote_tick:e("quote_tick"),base:e("base"),quote:e("quote"),symbol:t.symbol,origin:e(),quote_max:e("quote_max"),quote_min:e("quote_min")},children:t.children})};var ao=()=>{let[t,e]=react.useState(false),{onSubmit:o,price:i,quantity:s,closeOrderData:n,type:r,submitting:a,quoteDp:l,errors:u}=O(),{base:c,quote:d}=I(),[b]=hooks.useLocalStorage("orderly_order_confirm",true),{t:S}=i18n.useTranslation(),{parseErrorMsg:m}=reactApp.useOrderEntryFormErrorMsg(u),f=()=>o().then(y=>{e(false);},y=>{typeof y=="string"?ui$1.toast.error(y):ui$1.toast.error(y.message);}).catch(y=>{typeof y=="string"?ui$1.toast.error(y):ui$1.toast.error(y.message);}),P=()=>{e(false);},C=react.useMemo(()=>r===types.OrderType.MARKET?!s:!i||!s,[i,s,r]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui$1.Button,{variant:"outlined",size:"sm",color:"secondary",disabled:C||a,loading:a,onClick:y=>{y.stopPropagation();let D=m("order_quantity"),k=m("order_price");if(D||k){ui$1.toast.error(D??k);return}if(!b){o();return}e(true);},children:S("positions.column.close")}),jsxRuntime.jsx(ui$1.SimpleDialog,{open:t,onOpenChange:e,size:"sm",children:r===types.OrderType.MARKET?jsxRuntime.jsx(qt,{base:c,quantity:s,onClose:P,onConfirm:f,submitting:a,classNames:{root:"oui-items-start"},hideCloseIcon:true}):jsxRuntime.jsx(ne,{base:c,quantity:s,price:i,onClose:P,onConfirm:f,submitting:a,quoteDp:l,order:n,hideCloseIcon:true})})]})},lo=t=>{let{hideCloseIcon:e=false}=t;return jsxRuntime.jsxs("div",{className:"oui-pb-3 oui-border-b oui-border-line-4 oui-relative oui-w-full",children:[jsxRuntime.jsx(ui$1.Text,{size:"base",children:t.title}),!e&&jsxRuntime.jsx("button",{onClick:t.onClose,className:"oui-absolute oui-right-0 oui-top-0 oui-text-base-contrast-54 hover:oui-text-base-contrast-80 oui-p-2",children:jsxRuntime.jsx(ui$1.CloseIcon,{size:18,color:"white"})})]})},mo=({onCancel:t,onConfirm:e,submitting:o})=>{let{t:i}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{id:"oui-positions-confirm-footer",gap:2,width:"100%",className:"oui-mt-3 oui-pb-1",children:[jsxRuntime.jsx(ui$1.Button,{id:"oui-positions-confirm-footer-cancel-button",color:"secondary",fullWidth:true,onClick:t,size:"md",children:i("common.cancel")}),jsxRuntime.jsx(ui$1.ThrottledButton,{id:"oui-positions-confirm-footer-confirm-button",onClick:e,fullWidth:true,loading:o,size:"md",children:i("common.confirm")})]})},Zi=t=>{let{quantity:e,price:o,quoteDp:i,side:s}=t,{t:n}=i18n.useTranslation(),r=react.useMemo(()=>o&&e?new utils.Decimal(o).mul(e).toFixed(i,utils.Decimal.ROUND_DOWN):"--",[o,e]);return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:1,width:"100%",className:"oui-text-sm oui-text-base-contrast-54",py:5,children:[jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui$1.Text,{children:n("common.qty")}),jsxRuntime.jsx(ui$1.Text,{color:s===types.OrderSide.BUY?"success":"danger",children:e})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui$1.Text,{children:n("common.price")}),jsxRuntime.jsx(ui$1.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"USDC"}),children:o})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui$1.Text,{children:n("common.notional")}),jsxRuntime.jsx(ui$1.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"USDC"}),children:r})]})]})},qt=t=>{let{t:e}=i18n.useTranslation(),o=()=>{(t?.onClose??t.close)?.();};return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",className:t.classNames?.root,children:[jsxRuntime.jsx(lo,{onClose:o,title:e("positions.marketClose"),hideCloseIcon:t.hideCloseIcon}),jsxRuntime.jsx(ui$1.Text,{intensity:54,size:"sm",className:"oui-my-5",children:e("positions.marketClose.description",{quantity:utils.commifyOptional(t.quantity),base:t.base})}),jsxRuntime.jsx(mo,{onCancel:o,onConfirm:async()=>{await t.onConfirm?.(),o();},submitting:t.submitting})]})},ne=t=>{let{order:e,quoteDp:o,quantity:i,price:s,submitting:n}=t,{side:r}=e,{t:a}=i18n.useTranslation(),l=()=>{t.onClose?.();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(lo,{onClose:l,title:a("positions.limitClose"),hideCloseIcon:t.hideCloseIcon}),jsxRuntime.jsx(ui$1.Box,{mt:5,children:jsxRuntime.jsx(ui$1.Text,{intensity:54,size:"sm",children:a("positions.limitClose.description",{quantity:utils.commify(t.quantity),base:t.base})})}),jsxRuntime.jsxs(ui$1.Flex,{gap:2,mb:4,mt:5,justify:"between",children:[jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-type",size:"base",showIcon:true,children:e.symbol}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Badge,{color:"neutral",size:"xs",children:a("orderEntry.orderType.limit")}),jsxRuntime.jsx(ui$1.Badge,{color:r===types.OrderSide.BUY?"success":"danger",size:"xs",children:r===types.OrderSide.BUY?a("common.buy"):a("common.sell")})]})]}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsx(Zi,{className:"oui-text-sm",price:s,quantity:i,side:e.side,quoteDp:o??2}),jsxRuntime.jsx(mo,{onCancel:l,onConfirm:t.onConfirm,submitting:t.submitting})]})};var po=()=>{let{type:t,quoteDp:e,price:o,updatePriceChange:i,updateOrderType:s,position:n}=O(),[r,a]=react.useState(false),{t:l}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.DropdownMenuRoot,{children:[jsxRuntime.jsx(ui$1.Input,{size:"sm",value:t===types.OrderType.LIMIT?o:l("orderEntry.orderType.market"),onValueChange:u=>i(u),formatters:[ui$1.inputFormatter.numberFormatter,...e?[ui$1.inputFormatter.dpFormatter(e)]:[]],onFocus:u=>{t===types.OrderType.MARKET&&s(types.OrderType.LIMIT,`${n.mark_price}`),a(true);},onBlur:u=>{setTimeout(()=>{a(false);},100);},suffix:jsxRuntime.jsx(ui$1.DropdownMenuTrigger,{asChild:true,children:jsxRuntime.jsx("button",{className:"oui-px-1 oui-h-full",children:jsxRuntime.jsx(ui$1.CaretDownIcon,{size:12,color:"white"})})}),classNames:{root:ui$1.cn("oui-outline-line-12 focus-within:oui-outline-primary-light")}}),jsxRuntime.jsx(ui$1.DropdownMenuContent,{align:"end",className:"oui-w-[96px] oui-min-w-[96px]",onCloseAutoFocus:u=>u.preventDefault(),children:jsxRuntime.jsx(ui$1.DropdownMenuGroup,{children:jsxRuntime.jsx(ui$1.DropdownMenuItem,{size:"xs",onSelect:u=>{s(types.OrderType.MARKET);},children:jsxRuntime.jsx("span",{children:l("common.marketPrice")})})})})]})};var xo=t=>{let[e,o]=react.useState(false),[i,s]=react.useState(100),{baseDp:n,quoteDp:r,updateQuantity:a,quantity:l,type:u,errors:c,baseTick:d}=O();react.useEffect(()=>{let m=f=>{f.target.closest("[data-popover-root]")||o(false);};return document.addEventListener("click",m),()=>{document.removeEventListener("click",m);}},[]);let b=m=>{S(`${t.value*(m/100)}`);},S=m=>{if(d&&d>0){let f=hooks.utils.formatNumber(m,d)??m;a(f);}};return jsxRuntime.jsxs(ui$1.PopoverRoot,{children:[jsxRuntime.jsx(ui$1.PopoverTrigger,{children:jsxRuntime.jsx(ui$1.Input,{size:"sm",onFocus:()=>{o(true);},classNames:{root:"oui-outline-line-12 "},formatters:[ui$1.inputFormatter.numberFormatter,...n?[ui$1.inputFormatter.dpFormatter(n)]:[]],value:l,onBlur:m=>S(m.target.value),onValueChange:m=>{if(a(m),m=="0"||m==""){s(0);return}let f=new utils.Decimal(m).div(t.value).mul(100).abs().toFixed(0,utils.Decimal.ROUND_DOWN);s(Math.min(100,Number(f)));}})}),jsxRuntime.jsx(ui$1.PopoverContent,{className:"oui-w-[360px] oui-rounded-xl",align:"start",side:"bottom",onOpenAutoFocus:m=>{m.preventDefault();},children:jsxRuntime.jsxs(ui$1.Flex,{p:1,gap:2,width:"100%",itemAlign:"start",children:[jsxRuntime.jsx(ui$1.Text,{size:"xs",intensity:98,className:"oui-min-w-[30px]",children:`${i}%`}),jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Slider,{markCount:4,value:[i],onValueChange:m=>{let f=Array.from(m.values());s(f[0]),b(f[0]);}}),jsxRuntime.jsx(Sn,{onClick:m=>{s(m*100),b(m*100);}})]})]})})]})},Sn=t=>{let{t:e}=i18n.useTranslation(),o=[{label:"0%",value:0},{label:"25%",value:.25},{label:"50%",value:.5},{label:"75%",value:.75},{label:e("common.max"),value:1}];return jsxRuntime.jsx(ui$1.Flex,{gap:2,width:"100%",children:o.map((i,s)=>jsxRuntime.jsx(ui$1.Button,{variant:"outlined",color:"secondary",size:"xs",onClick:n=>{n.stopPropagation(),t.onClick(i.value);},className:"oui-w-1/5",children:i.label},s))})};var bo=(t,e)=>{let o=I();return jsxRuntime.jsx(ui$1.Text.numeral,{dp:o.base_dp,rm:utils.Decimal.ROUND_DOWN,padding:false,coloring:true,children:t})},Po=(t,e)=>jsxRuntime.jsx(xo,{value:e.position_qty}),Co=t=>jsxRuntime.jsx(po,{});var me=t=>{if(t.sharePnLConfig==null)return jsxRuntime.jsx(jsxRuntime.Fragment,{});let{position:e}=t,o=()=>{let i=t.isPositionHistory?{side:e.side,pnl:e.netPnL,openPrice:Math.abs(e.avg_open_price),closePrice:Math.abs(e.avg_close_price),openTime:e.open_timestamp,closeTime:e.close_timestamp,quantity:e.closed_position_qty}:{side:e.position_qty>0?"LONG":"SHORT",pnl:e.unrealized_pnl,roi:new utils.Decimal(e.unrealized_pnl_ROI*100).toFixed(2,utils.Decimal.ROUND_DOWN),openPrice:Math.abs(e.average_open_price),markPrice:e.mark_price,openTime:e.timestamp,quantity:e.position_qty};ui$1.modal.show(t.modalId,{pnl:{entity:{symbol:e.symbol,...i},refCode:t.refCode,...t.sharePnLConfig,leverage:t.isPositionHistory?void 0:t.leverage}});};return jsxRuntime.jsx("button",{type:"button",onClick:i=>{i.stopPropagation(),o();},children:jsxRuntime.jsx(ui$1.ShareIcon,{color:"white",opacity:.54,size:t.iconSize??16})})};var ho=t=>{let{sharePnLConfig:e,position:o,modalId:i,iconSize:s,isPositionHistory:n}=t,{getFirstRefCode:r}=hooks.useReferralInfo(),a=react.useMemo(()=>r()?.code,[r]),l=hooks.useSymbolLeverage(t.position.symbol);return {iconSize:s,position:o,refCode:a,leverage:l,sharePnLConfig:e,modalId:i,isPositionHistory:n}};var Z=t=>{let e=ho(t);return jsxRuntime.jsx(me,{...e})};var To=()=>{let{position:t,baseDp:e,quoteDp:o,tpslOrder:i}=O(),{t:s}=i18n.useTranslation();return jsxRuntime.jsx(uiTpsl.PositionTPSLPopover,{position:t,order:i,label:s("common.tpsl"),baseDP:e,quoteDP:o,isEditing:false})},wo=()=>{let{position:t,baseDp:e,quoteDp:o,tpslOrder:i}=O();return jsxRuntime.jsx(uiTpsl.PositionTPSLPopover,{position:t,order:i,baseDP:e,quoteDP:o,isEditing:true,children:jsxRuntime.jsx(ui$1.EditIcon,{opacity:1,className:"oui-text-base-contrast-54 oui-cursor-pointer",size:16})})};var qo=t=>{let{stopLossPrice:e,takeProfitPrice:o}=t,{tpslOrder:i,position:s}=O();return jsxRuntime.jsx(An,{stopLossPrice:e,takeProfitPrice:o,direction:"column",order:i,position:s,tooltip:true})},Do=t=>{let{qty:e,price:o,entryPrice:i,orderSide:s,orderType:n,symbolInfo:r}=t,a=hooks.utils.priceToPnl({qty:e,price:o,entryPrice:i,orderSide:s,orderType:n},{symbol:r}),l=n===types.AlgoOrderType.TAKE_PROFIT?"TP":"SL";return jsxRuntime.jsxs(ui$1.Flex,{children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,className:"oui-mr-1",children:`${l} PnL:`}),jsxRuntime.jsx(ui$1.Text.formatted,{rule:"price",className:a===0?"oui-text-base-contrast-36":a>0?"oui-text-trade-profit oui-gap-0":"oui-text-trade-loss oui-gap-0",prefix:jsxRuntime.jsx(ui$1.Text,{children:a===0?"":a>0?"+":"-"}),suffix:jsxRuntime.jsx(ui$1.Text,{intensity:36,className:"oui-ml-1",children:"USDC"}),children:`${Math.abs(a)}`})]})},An=t=>{let{direction:e="row",order:o,position:i}=t,s=hooks.useSymbolsInfo(),{t:n}=i18n.useTranslation(),r=react.useMemo(()=>{let c=[];if(!t.tooltip||!o||!i)return;let d=o.quantity;return d===0&&o.child_orders[0].type==="CLOSE_POSITION"&&(d=i.position_qty),t.takeProfitPrice&&c.push(jsxRuntime.jsx(Do,{qty:d,price:t.takeProfitPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.TAKE_PROFIT,symbolInfo:s[o.symbol]()},"tp")),t.stopLossPrice&&c.push(jsxRuntime.jsx(Do,{qty:d,price:t.stopLossPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.STOP_LOSS,symbolInfo:s[o.symbol]()},"sl")),jsxRuntime.jsx("div",{children:c})},[t.takeProfitPrice,t.stopLossPrice,i?.average_open_price,o?.side,o?.quantity,o?.algo_type]),a=react.useMemo(()=>{let c=[];if(!o?.symbol)return jsxRuntime.jsx("span",{children:"-"});return t.takeProfitPrice&&c.push(jsxRuntime.jsx(ui$1.Text.formatted,{className:ui$1.cn("oui-text-trade-profit oui-gap-0 oui-decoration-white/20"),rule:"price",dp:s[o.symbol]("quote_dp",2),children:t.takeProfitPrice,prefix:!t.stopLossPrice||e==="column"?jsxRuntime.jsx(ui$1.Text,{intensity:54,children:`${n("tpsl.tp")} - `}):""},"tp")),t.stopLossPrice&&c.push(jsxRuntime.jsx(ui$1.Text.formatted,{className:ui$1.cn("oui-text-trade-loss oui-gap-0 oui-decoration-white/20 "),rule:"price",dp:s[o.symbol]("quote_dp",2),children:t.stopLossPrice,prefix:!t.takeProfitPrice||e==="column"?jsxRuntime.jsx(ui$1.Text,{intensity:54,children:`${n("tpsl.sl")} - `}):""},"sl")),c.length===0?jsxRuntime.jsx(ui$1.Text,{children:"-"}):(c.length===2&&e==="row"&&c.splice(1,0,jsxRuntime.jsx(ui$1.Text,{children:"/"},"split")),c)},[t.takeProfitPrice,t.stopLossPrice,o?.symbol,n]),l=jsxRuntime.jsx("div",{className:ui$1.cn("oui-inline-flex oui-text-base-contrast-36",t.direction==="column"?"oui-flex-col":"oui-flex-row oui-gap-1",t.className),children:a}),u=Array.isArray(a)?!!a.length:!a;return t.tooltip?jsxRuntime.jsxs(ui$1.Flex,{gapX:2,children:[jsxRuntime.jsx(ui$1.Tooltip,{content:r,children:l}),u&&jsxRuntime.jsx(wo,{})]}):l};var Bo=t=>{let[e,o]=hooks.useLocalStorage("unPnlPriceBasis","markPrice"),{t:i}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-items-start",children:[jsxRuntime.jsx(ui$1.Text,{children:i("positions.column.unrealPnl.tooltip")}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsx("div",{className:"oui-mb-0",children:i("positions.column.unrealPnl.priceBasis")}),jsxRuntime.jsx(zn,{value:e,onValueChange:o})]})},zn=t=>{let{value:e,onValueChange:o}=t,{t:i}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{gap:2,children:[jsxRuntime.jsx(vo,{sel:e==="markPrice",label:i("common.markPrice"),value:"markPrice",onCheckChange:o}),jsxRuntime.jsx(vo,{sel:e==="lastPrice",label:i("common.lastPrice"),value:"lastPrice",onCheckChange:o})]})},vo=t=>{let{sel:e,label:o,value:i,onCheckChange:s}=t;return jsxRuntime.jsxs(ui$1.Flex,{onClick:n=>{s(i),n.stopPropagation();},gap:1,className:"oui-cursor-pointer",children:[e?jsxRuntime.jsx(En,{}):jsxRuntime.jsx(Wn,{}),jsxRuntime.jsx(ui$1.Text,{size:"xs",intensity:e?98:54,children:o})]})},En=()=>jsxRuntime.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"oui-fill-white",children:[jsxRuntime.jsx("path",{d:"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667",fill:"#fff",fillOpacity:".36"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8",r:"3.333"})]}),Wn=()=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntime.jsx("path",{d:"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667",fill:"#fff",fillOpacity:".54"})});var Et=t=>{let{tick:e="quote_dp",...o}=t,i=I();if(!i)throw new Error("NumeralWithCtx must be used inside SymbolProvider");return jsxRuntime.jsx(ui$1.Text.numeral,{as:"span",...o,dp:i[e]})};var ko=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o}=t,{t:i}=i18n.useTranslation();return react.useMemo(()=>[{title:i("common.symbol"),dataIndex:"symbol",fixed:"left",width:140,onSort:(n,r)=>n.symbol.localeCompare(r.symbol),render:(n,r)=>jsxRuntime.jsxs(ui$1.Flex,{gap:2,children:[jsxRuntime.jsx(ui$1.Box,{width:4,height:20,className:ui$1.cn("oui-rounded-[1px]",r.position_qty>0?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsxRuntime.jsx(ui$1.Text.formatted,{formatString:"base-type",className:"oui-cursor-pointer",onClick:a=>{t.onSymbolChange?.({symbol:n}),a.stopPropagation(),a.preventDefault();},children:`${n.split("_")[1]}-PERP`})]})},{title:i("common.quantity"),dataIndex:"position_qty",onSort:(n,r)=>n.position_qty-r.position_qty,width:120,className:"oui-pl-6",render:bo},{title:i("common.avgOpen"),className:"oui-h-[48px]",width:120,onSort:true,dataIndex:"average_open_price",render:(n,r)=>jsxRuntime.jsx(Et,{rm:utils.Decimal.ROUND_DOWN,children:n})},{title:i("common.markPrice"),dataIndex:"mark_price",width:120,onSort:true,className:"oui-h-[48px]",render:(n,r)=>jsxRuntime.jsx(Et,{rm:utils.Decimal.ROUND_DOWN,children:n})},{title:jsxRuntime.jsx(ui$1.Tooltip,{className:"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-54 oui-p-3 oui-bg-base-8",content:i("positions.column.liqPrice.tooltip"),children:jsxRuntime.jsx(ui$1.Text,{children:i("positions.column.liqPrice")})}),width:100,onSort:true,dataIndex:"est_liq_price",render:(n,r)=>Number(n)===0?"--":jsxRuntime.jsx(Et,{rm:utils.Decimal.ROUND_DOWN,className:Number(n)>0?"oui-text-warning-light":"",children:n??"--"})},{title:jsxRuntime.jsx(ui$1.HoverCard,{content:jsxRuntime.jsx(Bo,{}),side:"top",align:"center",className:"oui-max-w-[280px] oui-text-2xs",children:jsxRuntime.jsx(ui$1.Text,{children:i("common.unrealizedPnl")})}),dataIndex:"unrealized_pnl",width:180,onSort:true,rule:"price",numeralProps:{coloring:true},render:(n,r)=>jsxRuntime.jsxs(ui$1.Flex,{gap:2,children:[jsxRuntime.jsxs(ui$1.Flex,{children:[jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",children:n}),jsxRuntime.jsx(ui$1.Text.numeral,{rule:"percentages",dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",prefix:"(",suffix:")",children:r.unrealized_pnl_ROI})]}),jsxRuntime.jsx(Z,{position:r,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.SharePnLDialogId})]})},{title:i("common.tpsl"),dataIndex:"__",width:150,render:(n,r)=>jsxRuntime.jsx(qo,{stopLossPrice:r.sl_trigger_price,takeProfitPrice:r.tp_trigger_price})},{title:i("common.notional"),dataIndex:"notional",className:"oui-h-[48px]",width:100,onSort:true,render:n=>jsxRuntime.jsx(ui$1.Text.numeral,{dp:e,children:n})},{title:jsxRuntime.jsx(ui$1.Tooltip,{className:"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-54 oui-p-3 oui-bg-base-8",content:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-bg-base-8 oui-rounded-sm",children:[jsxRuntime.jsx("span",{children:i("positions.column.margin.tooltip")}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsx("span",{children:i("positions.column.margin.formula")})]}),children:jsxRuntime.jsx(ui$1.Text,{children:i("positions.column.margin")})}),dataIndex:"mm",onSort:true,width:100,rule:"price",render:n=>jsxRuntime.jsx(ui$1.Text.numeral,{children:n})},{title:i("common.qty"),dataIndex:"close_qty",width:100,fixed:"right",render:Po},{title:i("common.price"),dataIndex:"close_price",width:100,fixed:"right",render:Co},{title:"",dataIndex:"close_position",align:"right",width:160,fixed:"right",render:n=>jsxRuntime.jsxs(ui$1.Flex,{gapX:2,justify:"end",children:[jsxRuntime.jsx(ao,{}),jsxRuntime.jsx(To,{})]})}],[e,o,i])};var Ao=t=>{let{item:e}=t,o=e.position_qty>0,{t:i}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-type",size:"2xs",suffix:jsxRuntime.jsx(ui$1.Badge,{color:o?"success":"danger",size:"xs",children:i(o?"common.buy":"common.sell")}),showIcon:true,onClick:()=>{t.onSymbolChange?.({symbol:e.symbol});},children:e.symbol})},Ho=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{gap:3,children:[jsxRuntime.jsxs(ui$1.Flex,{direction:"column",className:"oui-text-2xs",itemAlign:"end",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(ui$1.Text,{intensity:36,children:o("common.unrealizedPnl")}),jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),jsxRuntime.jsx(ui$1.Text.numeral,{size:"xs",dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:true,className:"orderly-font-semibold",suffix:jsxRuntime.jsx(ui$1.Text.numeral,{rule:"percentages",dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,prefix:"(",suffix:")",className:ui$1.cn("oui-ml-1",e.unrealized_pnl_ROI>0?"oui-text-success-darken":"oui-text-danger-darken"),children:e.unrealized_pnl_ROI}),children:e.unrealized_pnl})]}),jsxRuntime.jsx(Z,{position:e,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.SharePnLBottomSheetId,iconSize:12})]})},Ro=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:o("common.qty"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.base_dp,padding:false,coloring:true,children:e.position_qty})})},zo=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsxs("span",{children:[o("positions.column.margin"),jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,intensity:80,children:e.mm})})},Eo=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{align:"end",label:jsxRuntime.jsxs("span",{children:[o("common.notional"),jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,intensity:80,children:e.notional})})},Wo=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:o("common.avgOpen"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,rm:utils.Decimal.ROUND_DOWN,intensity:80,children:e.average_open_price})})},Uo=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:o("common.markPrice"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,rm:utils.Decimal.ROUND_DOWN,intensity:80,children:e.mark_price})})},Qo=t=>{let{item:e}=t,{t:o}=i18n.useTranslation(),i=e.est_liq_price&&e.est_liq_price>0?e.est_liq_price:"-";return jsxRuntime.jsx(ui$1.Statistic,{label:o("positions.column.liqPrice"),align:"end",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,rm:utils.Decimal.ROUND_DOWN,color:"warning",children:i})})},$o=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return e.tp_trigger_price==null&&e.sl_trigger_price==null?jsxRuntime.jsx(jsxRuntime.Fragment,{}):jsxRuntime.jsxs(ui$1.Flex,{className:"oui-text-2xs oui-text-base-contrast-36",children:[jsxRuntime.jsxs(ui$1.Text,{children:[`${o("common.tpsl")}:`,"\xA0"]}),jsxRuntime.jsxs(ui$1.Flex,{className:"oui-gap-[2px]",children:[e.tp_trigger_price&&jsxRuntime.jsx(ui$1.Text.numeral,{color:"buy",children:e.tp_trigger_price}),e.sl_trigger_price&&"/",e.sl_trigger_price&&jsxRuntime.jsx(ui$1.Text.numeral,{color:"sell",children:e.sl_trigger_price})]})]})};var ye=t=>{let{item:e,sheetOpen:o,setSheetOpen:i,dialogOpen:s,setDialogOpen:n,updatePriceChange:r,base:a,quantity:l,price:u,onClose:c,onConfirm:d,submitting:b,quote_dp:S,closeOrderData:m,onCloseDialog:f}=t,P=e.position_qty>0,{t:C}=i18n.useTranslation(),{parseErrorMsg:y}=reactApp.useOrderEntryFormErrorMsg(t.errors),D=y("order_quantity"),k=y("order_price"),Q=T=>{if(t.baseTick&&t.baseTick>0){let G=hooks.utils.formatNumber(T,t.baseTick)??T;t.updateQuantity(G);}};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui$1.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:()=>{r("limit"),i(true);},children:C("positions.limitClose")}),o&&jsxRuntime.jsx(ui$1.SimpleSheet,{title:C("positions.limitClose"),open:o,onOpenChange:i,children:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:3,width:"100%",itemAlign:"start",className:"oui-text-sm",children:[jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",showIcon:true,children:e.symbol}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Badge,{color:"neutral",size:"xs",children:C("orderEntry.orderType.limit")}),P&&jsxRuntime.jsx(ui$1.Badge,{color:"success",size:"xs",children:C("common.buy")}),!P&&jsxRuntime.jsx(ui$1.Badge,{color:"danger",size:"xs",children:C("common.sell")})]})]}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:C("common.lastPrice")}),jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.item?.symbolInfo?.quote_dp,suffix:jsxRuntime.jsx(ui$1.Text,{intensity:36,children:" USDC"}),children:t.curMarkPrice})]}),jsxRuntime.jsxs(ui$1.Flex,{width:"100%",direction:"column",gap:2,children:[jsxRuntime.jsx(ui$1.Input.tooltip,{prefix:C("common.price"),suffix:t.quote,align:"right",fullWidth:true,autoComplete:"off",formatters:[ui$1.inputFormatter.numberFormatter,ui$1.inputFormatter.dpFormatter(t.quote_dp)],triggerClassName:"oui-w-full",tooltip:k,color:k?"danger":void 0,value:t.price,onValueChange:T=>t.updatePriceChange(T),classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui$1.cn("oui-outline-line-12 oui-w-full",k?"oui-outline-danger":void 0)}}),jsxRuntime.jsx(ui$1.Input,{prefix:C("common.quantity"),suffix:t.base,align:"right",fullWidth:true,autoComplete:"off",formatters:[ui$1.inputFormatter.numberFormatter,ui$1.inputFormatter.dpFormatter(t.base_dp)],value:t.quantity,onBlur:T=>Q(T.target.value),onValueChange:T=>{t.updateQuantity(T);let G=new utils.Decimal(T).div(t.item.position_qty).mul(100).toDecimalPlaces(2,utils.Decimal.ROUND_DOWN).toNumber();t.setSliderValue(G);},classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui$1.cn("oui-outline-line-12 oui-w-full")}}),jsxRuntime.jsx(ui$1.Slider,{markCount:4,value:[t.sliderValue],color:"primary",onValueChange:T=>{t.setSliderValue(T[0]);let G=new utils.Decimal(T[0]).div(100).mul(t.item.position_qty).toFixed(t.base_dp,utils.Decimal.ROUND_DOWN);Q(G);}}),jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{color:"primary",size:"2xs",children:`${t.sliderValue}%`}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",color:"primary",children:C("common.max")}),jsxRuntime.jsx(ui$1.Text.numeral,{intensity:54,size:"2xs",children:Math.abs(t.item.position_qty)})]})]})]}),jsxRuntime.jsxs(ui$1.Flex,{width:"100%",gap:3,mt:2,children:[jsxRuntime.jsx(ui$1.Button,{fullWidth:true,color:"secondary",onClick:T=>{c();},children:C("common.cancel")}),jsxRuntime.jsx(ui$1.ThrottledButton,{fullWidth:true,disabled:b,loading:b,onClick:T=>{if(T.stopPropagation(),T.preventDefault(),D||k){ui$1.toast.error(D??k);return}if(!t.orderConfirm){d();return}n(true);},children:C("common.confirm")})]})]})}),s&&jsxRuntime.jsx(ui$1.SimpleDialog,{open:s,onOpenChange:n,size:"xs",children:jsxRuntime.jsx(ne,{base:a,quantity:l,price:u,onClose:f,onConfirm:d,submitting:b,quoteDp:S,order:m,hideCloseIcon:true})})]})};var xe=t=>{let{state:e}=t,[o,i]=react.useState(false),[s,n]=react.useState(false),{onSubmit:r,price:a,quantity:l,closeOrderData:u,submitting:c,type:d,updatePriceChange:b,updateOrderType:S,updateQuantity:m,errors:f,baseTick:P}=O(),C=react.useRef(false),[y,D]=react.useState(100),[k]=hooks.useLocalStorage("orderly_order_confirm",true),Q=()=>r().then(At=>{i(false),n(false);},At=>{typeof At=="string"?ui$1.toast.error(At):ui$1.toast.error(At.message);}),T=()=>{i(false);},G=()=>{n(false);},kt=hooks.useMarkPricesStream(),q=react.useMemo(()=>kt?.data?.[e.item.symbol]??"--",[kt]),{quote_dp:z,base_dp:Li,base:qi,quote:Ni}=I();return react.useEffect(()=>{!C.current&&q&&o&&(C.current=true,S(types.OrderType.LIMIT,`${q}`));},[C,q,o]),react.useEffect(()=>{o||(S(types.OrderType.MARKET),C.current=false);},[o]),{...e,sheetOpen:o,setSheetOpen:i,curMarkPrice:q,quote_dp:z,base_dp:Li,base:qi,quote:Ni,baseTick:P,orderConfirm:k,onClose:T,onConfirm:Q,price:a,quantity:l,closeOrderData:u,submitting:c,updatePriceChange:b,updateQuantity:m,errors:f,sliderValue:y,setSliderValue:D,dialogOpen:s,setDialogOpen:n,onCloseDialog:G}};var be=t=>{let e=xe(t);return jsxRuntime.jsx(ye,{...e})};var Ce=t=>{let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui$1.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",disabled:t.submitting,loading:t.submitting,onClick:o=>{if(o.stopPropagation(),o.preventDefault(),t.updateOrderType(types.OrderType.MARKET),!t.orderConfirm){t.onConfirm();return}t.setDialogOpen(true);},children:e("positions.marketClose")}),jsxRuntime.jsx(ui$1.SimpleDialog,{open:t.dialogOpen,onOpenChange:t.setDialogOpen,size:"xs",children:jsxRuntime.jsx(qt,{base:t.base,quantity:t.quantity,onClose:t.onClose,onConfirm:t.onConfirm,submitting:t.submitting,hideCloseIcon:true})})]})};var Se=t=>{let e=I(),[o,i]=react.useState(false),{onSubmit:s,price:n,quantity:r,closeOrderData:a,submitting:l,type:u,updatePriceChange:c,updateOrderType:d,updateQuantity:b}=O(),[S]=hooks.useLocalStorage("orderly_order_confirm",true);return {...t,...e,dialogOpen:o,setDialogOpen:i,orderConfirm:S,onSubmit:s,quantity:r,onClose:()=>{i(false);},onConfirm:()=>s().then(P=>{i(false);},P=>{typeof P=="string"?ui$1.toast.error(P):ui$1.toast.error(P.message);}),submitting:l,updateOrderType:d,updateQuantity:b}};var he=t=>{let e=Se(t);return jsxRuntime.jsx(Ce,{...e})};var _e=t=>{let{t:e}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:o=>{o.stopPropagation(),o.preventDefault(),t.openTP_SL();},children:e("common.tpsl")})};var Te=t=>{let e=hooks.useSymbolsInfo()[t.state.item.symbol](),{tpslOrder:o}=O(),{t:i}=i18n.useTranslation();return {openTP_SL:()=>{ui$1.modal.sheet({title:i("common.tpsl"),content:jsxRuntime.jsx(uiTpsl.PositionTPSLSheet,{position:t.state.item,symbolInfo:e,order:o,isEditing:false})});},...t,...e}};var we=t=>{let e=Te(t);return jsxRuntime.jsx(_e,{...e})};var Fe=t=>{let{className:e,...o}=t;return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,p:2,r:"xl",itemAlign:"start",className:ui$1.cn(e,"oui-bg-base-9"),children:[jsxRuntime.jsx(Ar,{...o}),jsxRuntime.jsx(ui$1.Divider,{intensity:6,className:"oui-w-full"}),jsxRuntime.jsx(Hr,{...o}),jsxRuntime.jsx($o,{...o}),jsxRuntime.jsx(Rr,{...o})]})},Ar=t=>jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(Ao,{...t}),jsxRuntime.jsx(Ho,{...t})]}),Hr=t=>jsxRuntime.jsxs(ui$1.Grid,{cols:3,rows:2,gap:2,width:"100%",children:[jsxRuntime.jsx(Ro,{...t}),jsxRuntime.jsx(zo,{...t}),jsxRuntime.jsx(Eo,{...t}),jsxRuntime.jsx(Wo,{...t}),jsxRuntime.jsx(Uo,{...t}),jsxRuntime.jsx(Qo,{...t})]}),Rr=t=>jsxRuntime.jsxs(ui$1.Grid,{width:"100%",gap:2,cols:3,rows:1,children:[jsxRuntime.jsx(we,{state:t}),jsxRuntime.jsx(be,{state:t}),jsxRuntime.jsx(he,{state:t})]});var De=t=>{let e=I();return {...t,...e}};var Le=t=>{let e=De(t);return jsxRuntime.jsx(Fe,{...e,className:t.className})};var ei=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,pagination:i}=t,s=ko({pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:t.onSymbolChange});return jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{loading:t.isLoading,id:"oui-desktop-positions-content",columns:s,bordered:true,dataSource:t.dataSource,generatedRowKey:n=>n.symbol,renderRowContainer:(n,r,a)=>jsxRuntime.jsx(Pt,{symbol:n.symbol,children:jsxRuntime.jsx(oe,{position:n,children:a})}),manualPagination:false,pagination:i,testIds:{body:"oui-testid-dataList-position-tab-body"}})},oi=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o}=t;return jsxRuntime.jsx(ui$1.ListView,{className:"oui-w-full oui-hide-scrollbar oui-overflow-y-hidden oui-space-y-0",contentClassName:"!oui-space-y-1",dataSource:t.dataSource,renderItem:(i,s)=>jsxRuntime.jsx(Pt,{symbol:i.symbol,children:jsxRuntime.jsx(oe,{position:i,children:jsxRuntime.jsx(Le,{item:i,index:s,pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:t.onSymbolChange})})})})};var qe=t=>{let{symbol:e,calcMode:o,includedPendingOrder:i,pnlNotionalDecimalPrecision:s,sharePnLConfig:n,onSymbolChange:r}=t,{pagination:a,setPage:l}=ui$1.usePagination({pageSize:50}),[u,c,{isLoading:d}]=hooks.usePositionStream(e,{calcMode:o,includedPendingOrder:i});return react.useEffect(()=>{l(1);},[e]),{dataSource:reactApp.useDataTap(u?.rows,{fallbackData:[]})??void 0,isLoading:d,pnlNotionalDecimalPrecision:s,sharePnLConfig:n,symbol:e,onSymbolChange:r,pagination:a}};var Gr=t=>{let e=qe(t);return jsxRuntime.jsx(ei,{...e})},Kr=t=>{let e=qe(t);return jsxRuntime.jsx(oi,{...e})};var si=t=>{let{onSymbolChange:e,pnlNotionalDecimalPrecision:o}=t,{t:i}=i18n.useTranslation();return react.useMemo(()=>[{title:i("common.symbol"),dataIndex:"symbol",fixed:"left",width:200,onSort:(n,r)=>n.symbol.localeCompare(r.symbol),render:(n,r)=>jsxRuntime.jsx(jr,{record:r,onSymbolChange:e})},{title:i("positions.history.column.closed&maxClosed"),dataIndex:"close_maxClose",width:200,render:(n,r)=>jsxRuntime.jsx(ts,{record:r})},{title:i("positions.history.column.netPnl"),dataIndex:"netPnL",width:140,onSort:(n,r)=>n.netPnL==null||r.netPnL==null?-1:(n.netPnL??0)-(r.netPnL??0),render:(n,r)=>jsxRuntime.jsxs(ui$1.Flex,{gapX:1,children:[jsxRuntime.jsx(es,{record:r,pnlNotionalDecimalPrecision:o}),jsxRuntime.jsx(Z,{position:r,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.SharePnLDialogId,isPositionHistory:true})]})},{title:i("common.avgOpen"),dataIndex:"avg_open",width:140,render:(n,r)=>{let a=r.avg_open_price!=null?Math.abs(r.avg_open_price):"--",{quote_dp:l}=I();return jsxRuntime.jsx(ui$1.Text.numeral,{dp:l,padding:false,children:a})}},{title:i("common.avgClose"),dataIndex:"avg_close",width:175,render:(n,r)=>{let a=r.avg_close_price!=null?Math.abs(r.avg_close_price):"--",{quote_dp:l}=I();return jsxRuntime.jsx(ui$1.Text.numeral,{dp:l,padding:false,children:a})}},{title:i("positions.history.column.timeOpened"),dataIndex:"open_timestamp",width:175,onSort:true,render:(n,r)=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:r.open_timestamp})},{title:i("positions.history.column.timeClosed"),dataIndex:"close_timestamp",width:175,onSort:true,render:(n,r)=>r.position_status=="closed"&&r.close_timestamp?jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:r.close_timestamp??"--"}):"--"},{title:i("positions.history.column.updatedTime"),dataIndex:"last_update_time",width:175,onSort:true,render:(n,r)=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:r.last_update_time})}],[o,i])},jr=t=>{let{record:e,onSymbolChange:o}=t,{t:i}=i18n.useTranslation(),s=react.useMemo(()=>{let n=[],r=e.position_status,a=()=>r==="closed"?i("positions.history.status.closed"):r==="partial_closed"?i("positions.history.status.partialClosed"):ui$1.capitalizeFirstLetter(r.replace("_"," "));return n.push(jsxRuntime.jsx(ui$1.Badge,{color:r!=="closed"?"primaryLight":"neutral",size:"xs",className:"oui-break-normal oui-whitespace-nowrap",children:a()})),e.type==="adl"?n.push(jsxRuntime.jsx(ui$1.Badge,{color:"danger",size:"xs",children:i("positions.history.type.adl")})):e.type==="liquidated"&&n.push(jsxRuntime.jsx(ui$1.Tooltip,{className:"oui-min-w-[204px] oui-bg-base-5",arrow:{className:"oui-fill-base-5"},content:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",className:"oui-text-2xs",children:[e.liquidation_id!=null&&jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:i("positions.history.liquidated.liquidationId")}),jsxRuntime.jsx(ui$1.Text,{intensity:98,children:e.liquidation_id})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:i("positions.history.liquidated.liquidatorFee")}),jsxRuntime.jsxs(ui$1.Text,{color:"lose",children:[e.liquidator_fee>0&&"-",utils.commifyOptional(e.liquidator_fee)]})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:i("positions.history.liquidated.insFundFee")}),jsxRuntime.jsxs(ui$1.Text,{color:"lose",children:[e.insurance_fund_fee>0&&"-",utils.commifyOptional(e.insurance_fund_fee)]})]})]}),children:jsxRuntime.jsx("div",{children:jsxRuntime.jsx(ui$1.Badge,{size:"xs",color:"danger",className:"oui-cursor-pointer",children:jsxRuntime.jsx("span",{className:"oui-underline oui-decoration-dashed oui-decoration-[1px]",children:i("positions.history.type.liquidated")})})})})),n},[e,i]);return jsxRuntime.jsxs(ui$1.Flex,{gap:2,height:48,children:[jsxRuntime.jsx(ui$1.Box,{width:4,height:38,className:ui$1.cn("oui-rounded-[1px] oui-shrink-0",e.side==="LONG"?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",children:[jsxRuntime.jsx(ui$1.Text.formatted,{formatString:"base-type",className:"oui-cursor-pointer",onClick:n=>{o?.({symbol:e.symbol}),n.stopPropagation(),n.preventDefault();},children:`${e.symbol.split("_")[1]}-PERP`}),jsxRuntime.jsx(ui$1.Flex,{gap:1,children:s})]})]})},ts=t=>{let{record:e}=t,{base_dp:o}=I();return jsxRuntime.jsxs(ui$1.Flex,{gap:1,direction:"column",itemAlign:"start",className:"oui-overflow-hidden oui-whitespace-nowrap oui-text-ellipsis",children:[jsxRuntime.jsx(ui$1.Text.numeral,{dp:o,padding:false,children:Math.abs(e.closed_position_qty)}),jsxRuntime.jsx(ui$1.Text.numeral,{dp:o,padding:false,className:"oui-truncate",children:Math.abs(e.max_position_qty)})]})},es=t=>{let{record:e,pnlNotionalDecimalPrecision:o}=t,{t:i}=i18n.useTranslation(),s=e.netPnL!=null?e.netPnL:void 0,n=()=>jsxRuntime.jsx(ui$1.Text.numeral,{dp:o,color:e.netPnL!=null?e.netPnL>0?"profit":"lose":void 0,className:s==null?"":"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12",children:s??"--"});return e.netPnL==null?n():jsxRuntime.jsx(ui$1.Tooltip,{delayDuration:200,content:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",className:"oui-text-2xs",children:[jsxRuntime.jsx(ui$1.Text,{intensity:80,children:i("positions.history.column.netPnl")}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:i("common.realizedPnl")}),jsxRuntime.jsx(ui$1.Text,{color:e.realized_pnl>=0?"profit":"lose",className:"oui-cursor-pointer",children:utils.commifyOptional(e.realized_pnl)})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:i("positions.history.netPnl.fundingFee")}),jsxRuntime.jsx(ui$1.Text,{color:e.accumulated_funding_fee>0?"lose":"profit",className:"oui-cursor-pointer",children:utils.commifyOptional(-e.accumulated_funding_fee)})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:i("positions.history.netPnl.tradingFee")}),jsxRuntime.jsx(ui$1.Text,{color:e.trading_fee>0?"lose":"profit",className:"oui-cursor-pointer",children:utils.commifyOptional(-e.trading_fee)})]})]}),className:"oui-min-w-[204px] oui-bg-base-5",arrow:{className:"oui-fill-base-5"},children:jsxRuntime.jsx("div",{children:n()})})};function B(t){if(t==null)return t;let e=new Date(t);return e.setHours(0,0,0,0),e}function M(t){if(t==null)return t;let e=new Date(t);return e.setHours(23,59,59,999),e}var St=t=>({from:B(t.from),to:M(t.to??t.from)}),ht=(t,e)=>t.getTime()===e.getTime();var Gt=t=>{let{onSymbolChange:e,symbol:o,pnlNotionalDecimalPrecision:i}=t,{state:s}=hooks.useAccount(),{data:n,isLoading:r}=hooks.usePrivateQuery(o?`/v1/position_history?symbol=${o}&limit=1000`:"/v1/position_history?limit=1000",{formatter(y){return (y.rows??null)?.map(D=>{if(D.realized_pnl!=null&&D.accumulated_funding_fee!=null&&D.trading_fee!=null){let k=D.realized_pnl-D.accumulated_funding_fee-D.trading_fee;return {...D,netPnL:k}}return D})},revalidateOnFocus:true}),{pagination:a,setPage:l}=ui$1.usePagination({pageSize:10}),{status:u,side:c,dateRange:d,filterDays:b,updateFilterDays:S,filterItems:m,onFilter:f}=us();react.useEffect(()=>{l(1);},[u,c,d,b,o]);let P=react.useMemo(()=>n==null?n:n.filter(y=>{let D=c==="all"?true:y.side.toLowerCase()===c.toLowerCase(),k=u==="all"?true:y.position_status.toLowerCase()===u.toLowerCase(),Q=y?.last_update_time??y.open_timestamp,T=d.from&&d.to?Q>=d.from.getTime()&&Q<=d.to.getTime():true,G=o?y.symbol==o:true;return D&&k&&T&&G}),[u,c,d,n,o]);return {dataSource:reactApp.useDataTap(P,{accountStatus:s.status===types.AccountStatusEnum.EnableTradingWithoutConnected?types.AccountStatusEnum.EnableTradingWithoutConnected:types.AccountStatusEnum.EnableTrading,fallbackData:[]}),isLoading:r,onSymbolChange:e,pagination:a,filterItems:m,onFilter:f,symbol:o,filterDays:b,updateFilterDays:S,pnlNotionalDecimalPrecision:i}},us=()=>{let{t}=i18n.useTranslation(),[e,o]=react.useState("all"),[i,s]=react.useState("all"),n=St({to:M(new Date),from:B(dateFns.subDays(new Date,89))}),[r,a]=react.useState(90),[l,u]=react.useState(n),c=m=>{a(m),u({from:B(dateFns.subDays(new Date,m-1)),to:M(new Date)});},d=m=>{if(m.name==="side"&&s(m.value),m.name==="status"&&o(m.value),m.name==="dateRange"){let f=St(m.value);if(u(f),f.from&&f.to){let P=Math.abs(dateFns.differenceInDays(f.from,f.to))+1,y={1:{from:B(new Date),to:M(new Date)},7:{from:B(dateFns.subDays(new Date,6)),to:M(new Date)},30:{from:B(dateFns.subDays(new Date,29)),to:M(new Date)},90:{from:B(dateFns.subDays(new Date,89)),to:M(new Date)}}[P];y&&ht(y.from,f.from)&&ht(y.to,f.to)?a(P):a(null);}}},{isMobile:b}=ui$1.useScreen();return {filterItems:react.useMemo(()=>{let m={type:"select",name:"side",options:[{label:t("common.side.all"),value:"all"},{label:t("common.buy"),value:"LONG"},{label:t("common.sell"),value:"SHORT"}],value:i},f={type:"range",name:"dateRange",value:l,fromDate:B(dateFns.subDays(new Date,89)),toDate:M(new Date)},P={type:"select",name:"status",options:[{label:t("common.status.all"),value:"all"},{label:t("positions.history.status.closed"),value:"closed"},{label:t("positions.history.status.partialClosed"),value:"partial_closed"}],value:e};return b?[m,P]:[m,P,f]},[i,e,l]),onFilter:d,side:i,dateRange:l,status:e,filterDays:r,updateFilterDays:c}};var mi=t=>{let{side:e,symbol:o}=t.item,{t:i}=i18n.useTranslation(),s=e==="LONG";return jsxRuntime.jsx(ui$1.Text.formatted,{intensity:80,rule:"symbol",formatString:"base-type",size:"sm",prefix:jsxRuntime.jsx(ui$1.Badge,{color:s?"success":"danger",size:"xs",children:i(s?"common.buy":"common.sell")}),onClick:()=>{t.onSymbolChange?.({symbol:o});},children:o})};var ui=t=>{let{item:e}=t,{t:o}=i18n.useTranslation(),i=()=>{ui$1.modal.alert({title:o("positions.liquidation"),message:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,className:"oui-text-2xs oui-text-base-contrast-54",children:[e.liquidation_id!=null&&jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(ui$1.Text,{children:o("positions.history.liquidated.liquidationId")}),jsxRuntime.jsx(ui$1.Text,{intensity:98,children:e.liquidation_id})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(ui$1.Text,{children:o("positions.history.liquidated.liquidatorFee")}),jsxRuntime.jsxs(ui$1.Text,{color:"lose",children:[e.liquidator_fee>0&&"-",utils.commifyOptional(e.liquidator_fee)]})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(ui$1.Text,{children:o("positions.history.liquidated.insFundFee")}),jsxRuntime.jsxs(ui$1.Text,{color:"lose",children:[e.insurance_fund_fee>0&&"-",utils.commifyOptional(e.insurance_fund_fee)]})]})]})});},s=react.useMemo(()=>{let n=[],r=e.position_status,a=()=>r==="closed"?o("positions.history.status.closed"):r==="partial_closed"?o("positions.history.status.partialClosed"):ui$1.capitalizeFirstLetter(r.replace("_"," "));return n.push(jsxRuntime.jsx(ui$1.Badge,{color:r!=="closed"?"primaryLight":"neutral",size:"xs",children:a()})),e.type==="adl"?n.push(jsxRuntime.jsx(ui$1.Badge,{color:"danger",size:"xs",children:o("positions.history.type.adl")})):e.type==="liquidated"&&n.push(jsxRuntime.jsx(ui$1.Badge,{size:"xs",color:"danger",className:"oui-cursor-pointer",onClick:i,children:jsxRuntime.jsx("span",{className:"oui-underline oui-decoration-dashed oui-decoration-[1px]",children:o("positions.history.type.liquidated")})})),n},[e]);return jsxRuntime.jsx(ui$1.Flex,{gap:1,children:s})},ci=t=>{let{item:e}=t,{t:o}=i18n.useTranslation(),i=e.closed_position_qty!=null?Math.abs(e.closed_position_qty):"--";return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsx(ui$1.Text,{children:o("positions.history.column.closed")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.base_dp,padding:false,coloring:true,intensity:80,children:i})})},di=t=>{let{item:e}=t,{t:o}=i18n.useTranslation(),i=e.max_position_qty!=null?Math.abs(e.max_position_qty):"--";return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsx(ui$1.Text,{children:o("positions.history.column.maxClosed")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.base_dp,padding:false,coloring:true,intensity:80,children:i})})},pi=t=>{let{item:e}=t,o=e.avg_open_price!=null?Math.abs(e.avg_open_price):"--",{t:i}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[i("common.avgOpen"),jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,padding:false,coloring:true,intensity:80,children:o})})},fi=t=>{let{item:e}=t,o=e.avg_close_price!=null?Math.abs(e.avg_close_price):"--",{t:i}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[i("common.avgClose"),jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,padding:false,coloring:true,intensity:80,children:o})})},yi=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsx(ui$1.Text,{children:o("positions.history.column.timeOpened")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},align:"end",children:jsxRuntime.jsx(ui$1.Text.formatted,{intensity:80,formatString:"yyyy-MM-dd HH:mm:ss",rule:"date",children:e.open_timestamp})})},gi=t=>{let{item:e}=t,{t:o}=i18n.useTranslation(),i=e.position_status=="closed"&&e.close_timestamp?jsxRuntime.jsx(ui$1.Text.formatted,{intensity:80,formatString:"yyyy-MM-dd HH:mm:ss",rule:"date",children:e.close_timestamp}):"--";return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsx(ui$1.Text,{children:o("positions.history.column.timeClosed")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},align:"end",children:i})};var Be=t=>jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,itemAlign:"start",className:t.classNames?.root,children:[jsxRuntime.jsx(Ps,{...t}),jsxRuntime.jsx(ui$1.Divider,{intensity:6,className:"oui-w-full"}),jsxRuntime.jsx(Cs,{...t})]}),Ps=t=>{let{t:e}=i18n.useTranslation(),o=()=>{let{item:i}=t;ui$1.modal.alert({title:e("positions.history.column.netPnl"),message:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,className:"oui-text-2xs oui-text-base-contrast-54",children:[jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:e("common.realizedPnl")}),jsxRuntime.jsx(ui$1.Text,{color:i.realized_pnl>=0?"profit":"lose",children:utils.commifyOptional(i.realized_pnl)})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:e("positions.history.netPnl.fundingFee")}),jsxRuntime.jsx(ui$1.Text,{color:i.accumulated_funding_fee>0?"lose":"profit",children:utils.commifyOptional(-i.accumulated_funding_fee)})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:2,children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:e("positions.history.netPnl.tradingFee")}),jsxRuntime.jsx(ui$1.Text,{color:i.trading_fee>0?"lose":"profit",children:utils.commifyOptional(-i.trading_fee)})]})]})});};return jsxRuntime.jsxs(ui$1.Flex,{gap:1,width:"100%",children:[jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",className:"oui-flex-1",gap:1,children:[jsxRuntime.jsx(mi,{...t}),jsxRuntime.jsx(ui,{...t})]}),jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"end",className:"oui-flex-1",children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:e("positions.history.column.netPnl")}),jsxRuntime.jsxs(ui$1.Flex,{gapX:1,children:[jsxRuntime.jsx("button",{onClick:o,children:jsxRuntime.jsx(ui$1.Text.numeral,{size:"xs",coloring:true,children:t.item.netPnL??"--"})}),jsxRuntime.jsx(Z,{position:t.item,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.SharePnLBottomSheetId,iconSize:12,isPositionHistory:true})]})]})]})},Cs=t=>jsxRuntime.jsxs(ui$1.Grid,{cols:3,rows:2,width:"100%",gap:0,className:"oui-grid-cols-[1fr,1fr,135px]",children:[jsxRuntime.jsx(ci,{...t}),jsxRuntime.jsx(di,{...t}),jsxRuntime.jsx(yi,{...t}),jsxRuntime.jsx(pi,{...t}),jsxRuntime.jsx(fi,{...t}),jsxRuntime.jsx(gi,{...t})]});var Me=t=>{let e=I();return {...t,...e}};var ke=t=>{let e=Me(t);return jsxRuntime.jsx(Be,{...e})};var Re=t=>{let{onSymbolChange:e,pagination:o,pnlNotionalDecimalPrecision:i}=t,s=si({onSymbolChange:e,pnlNotionalDecimalPrecision:i,sharePnLConfig:t.sharePnLConfig}),{t:n}=i18n.useTranslation(),r=react.useMemo(()=>({1:n("common.select.1d"),7:n("common.select.7d"),30:n("common.select.30d"),90:n("common.select.90d")}),[n]);return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",height:"100%",itemAlign:"start",children:[jsxRuntime.jsxs(ui$1.Flex,{gap:3,children:[t.filterItems.length>0&&jsxRuntime.jsx(ui$1.DataFilter,{items:t.filterItems,onFilter:a=>{t.onFilter(a);}}),[1,7,30,90].map(a=>jsxRuntime.jsxs("button",{className:"oui-relative oui-px-2 oui-py-[2px] oui-text-sm",children:[jsxRuntime.jsx("div",{className:"oui-z-10",children:jsxRuntime.jsx(ui$1.Text.gradient,{color:t.filterDays===a?"brand":void 0,className:ui$1.cn("oui-break-normal oui-whitespace-nowrap",t.filterDays!==a?"oui-text-base-contrast-54":""),children:r[a]||`${a}D`})}),jsxRuntime.jsx("div",{className:"oui-gradient-primary oui-opacity-[.12] oui-absolute oui-left-0 oui-right-0 oui-top-0 oui-bottom-0 oui-rounded",onClick:()=>{t.updateFilterDays(a);}})]}))]}),jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{loading:t.isLoading,id:"oui-desktop-positions-content",columns:s,bordered:true,dataSource:t.dataSource,generatedRowKey:a=>`${a.symbol}_${a.position_id}`,renderRowContainer:(a,l,u)=>jsxRuntime.jsx(Pt,{symbol:a.symbol,children:u}),manualPagination:false,pagination:o,testIds:{body:"oui-testid-dataList-positionHistory-tab-body"},classNames:{root:"!oui-h-[calc(100%_-_49px)]"}})]})},ze=t=>jsxRuntime.jsxs(ui$1.Grid,{cols:1,rows:2,className:"oui-grid-rows-[auto,1fr] oui-w-full",gap:1,children:[jsxRuntime.jsx(ui$1.Flex,{gap:2,p:2,className:"oui-bg-base-9 oui-rounded-b-xl",children:jsxRuntime.jsx(ui$1.DataFilter,{className:"oui-pt-0 oui-pb-0 oui-border-none",items:t.filterItems,onFilter:e=>{t.onFilter(e);}})}),jsxRuntime.jsx(ui$1.ListView,{className:ui$1.cn("oui-w-full oui-hide-scrollbar oui-overflow-y-hidden oui-space-y-0",t.classNames?.root),contentClassName:ui$1.cn("!oui-space-y-1",t.classNames?.content),dataSource:t.dataSource,renderItem:(e,o)=>jsxRuntime.jsx(Pt,{symbol:e.symbol,children:jsxRuntime.jsx(ke,{item:e,index:o,onSymbolChange:t.onSymbolChange,classNames:{root:t.classNames?.cell},sharePnLConfig:t.sharePnLConfig})})})]});var Ls=t=>{let e=Gt(t);return jsxRuntime.jsx(Re,{...e,sharePnLConfig:t.sharePnLConfig})},qs=t=>{let{classNames:e,...o}=t,i=Gt(o);return jsxRuntime.jsx(ze,{...i,classNames:e,sharePnLConfig:t.sharePnLConfig})};var Ci=t=>{let{t:e}=i18n.useTranslation();return react.useMemo(()=>[{title:e("common.time"),dataIndex:"timestamp",fixed:"left",width:202,render:i=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:i})},{title:e("positions.Liquidation.column.liquidationId"),dataIndex:"liquidation_id",width:202,render:i=>jsxRuntime.jsx(ui$1.Text,{children:i})},{title:e("positions.Liquidation.column.insFundTransfer"),dataIndex:"transfer_amount_to_insurance_fund",width:202,render:i=>jsxRuntime.jsx(ui$1.Text,{children:utils.commifyOptional(i)})},{title:e("common.symbol"),dataIndex:"Symbol",width:202,render:(i,s)=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",itemAlign:"start",children:s.positions_by_perp?.map(n=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-quote",children:n.symbol}))})},{title:`${e("common.price")} (USDC)`,dataIndex:"Price_(USDC)",width:202,render:(i,s)=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",itemAlign:"start",children:s.positions_by_perp?.map(n=>jsxRuntime.jsx(Ee,{value:n.transfer_price,type:"quote"}))})},{title:e("common.quantity"),dataIndex:"Quantity",width:202,render:(i,s)=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",itemAlign:"start",children:s.positions_by_perp?.map(n=>jsxRuntime.jsx(Ee,{value:n.position_qty,type:"base"}))})},{title:e("positions.Liquidation.column.liquidationFee"),dataIndex:"abs_liquidation_fee",width:202,render:(i,s)=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",itemAlign:"start",children:s.positions_by_perp?.map(n=>jsxRuntime.jsx(Ee,{value:n.abs_liquidation_fee,type:"quote"}))})}],[e])},Ee=t=>jsxRuntime.jsx(ui$1.Text,{children:utils.commifyOptional(t.value)});var Si=t=>{let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:e("common.price")}),jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:20,children:"(USDC)"})]}),jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:80,children:utils.commifyOptional(t.transfer_price)})]})},hi=t=>{let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:e("common.quantity")}),jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:80,children:utils.commifyOptional(t.position_qty)})]})},_i=t=>{let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:e("positions.Liquidation.column.liquidationFee")}),jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:80,children:utils.commifyOptional(t.abs_liquidation_fee)})]})};var Qe=t=>jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,itemAlign:"start",className:t.classNames?.root,children:[jsxRuntime.jsx(ks,{...t}),jsxRuntime.jsx(As,{...t})]},t.item.timestamp),ks=t=>{let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{gap:1,width:"100%",children:[jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",className:"oui-flex-1",gap:1,children:[jsxRuntime.jsx(ui$1.Text.formatted,{size:"2xs",intensity:36,rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:t.item.timestamp}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:`${e("positions.Liquidation.column.liquidationId")}:`}),jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:80,children:` ${t.item.liquidation_id}`})]})]}),jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"end",className:"oui-flex-1",children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:36,children:`${e("positions.Liquidation.column.insFundTransfer")}:`}),jsxRuntime.jsx(ui$1.Text,{intensity:80,size:"xs",children:utils.commifyOptional(t.item.transfer_amount_to_insurance_fund)})]})]})},As=t=>jsxRuntime.jsx(ui$1.Flex,{direction:"column",width:"100%",children:t.item.positions_by_perp?.map((e,o)=>jsxRuntime.jsx(Hs,{isLast:o===t.item.positions_by_perp.length-1,...e},`${o}-${e.symbol}`))}),Hs=t=>jsxRuntime.jsxs(ui$1.Flex,{width:"100%",itemAlign:"start",className:ui$1.cn("oui-border-t-[1px] oui-border-line-6 oui-pt-2",!t.isLast&&"oui-pb-2"),children:[jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-quote",size:"xs",intensity:80,className:"oui-flex-1",children:t.symbol}),jsxRuntime.jsxs(ui$1.Grid,{cols:1,rows:3,width:"100%",gap:1,className:"oui-flex-1",children:[jsxRuntime.jsx(Si,{...t}),jsxRuntime.jsx(hi,{...t}),jsxRuntime.jsx(_i,{...t})]})]},t.key);var $e=t=>({...t});var Ve=t=>{let{classNames:e,...o}=t,i=$e(o);return jsxRuntime.jsx(Qe,{classNames:e,...i})};var Ke=t=>{let e=Ci();return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",height:"100%",itemAlign:"start",children:[jsxRuntime.jsxs(ui$1.Flex,{gap:3,children:[t.filterItems.length>0&&jsxRuntime.jsx(ui$1.DataFilter,{items:t.filterItems,onFilter:o=>{t.onFilter(o);}}),[1,7,30,90].map(o=>jsxRuntime.jsxs("button",{className:"oui-relative oui-px-2 oui-py-[2px] oui-text-sm",children:[jsxRuntime.jsx("div",{className:"oui-z-10",children:jsxRuntime.jsx(ui$1.Text.gradient,{color:t.filterDays===o?"brand":void 0,className:t.filterDays!==o?"oui-text-base-contrast-54":"",children:`${o}D`})}),jsxRuntime.jsx("div",{className:"oui-gradient-primary oui-opacity-[.12] oui-absolute oui-left-0 oui-right-0 oui-top-0 oui-bottom-0 oui-rounded",onClick:()=>{t.updateFilterDays(o);}})]}))]}),jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{loading:t.isLoading,id:"oui-desktop-liquidation-content",columns:e,bordered:true,dataSource:t.dataSource,generatedRowKey:o=>`${o.liquidation_id}`,pagination:t.pagination,testIds:{body:"oui-testid-dataList-liquidation-tab-body"},classNames:{root:"!oui-h-[calc(100%_-_49px)]"}})]})},Xe=t=>jsxRuntime.jsxs(ui$1.Grid,{cols:1,rows:2,className:"oui-grid-rows-[auto,1fr] oui-w-full",gap:1,children:[jsxRuntime.jsx(ui$1.Flex,{gap:2,p:2,className:"oui-bg-base-9 oui-rounded-b-xl",children:jsxRuntime.jsx(ui$1.DataFilter,{className:"oui-pt-0 oui-pb-0 oui-border-none",items:t.filterItems,onFilter:e=>{t.onFilter(e);}})}),jsxRuntime.jsx(ui$1.ListView,{className:ui$1.cn("oui-w-full oui-hide-scrollbar oui-overflow-y-hidden oui-space-y-0",t.classNames?.root),contentClassName:ui$1.cn("!oui-space-y-1",t.classNames?.content),dataSource:t.dataSource,loadMore:t.loadMore,renderItem:(e,o)=>jsxRuntime.jsx(Ve,{item:e,index:o,classNames:{root:t.classNames?.cell}})})]});var te=t=>{let{symbol:e,enableLoadMore:o}=t,{page:i,pageSize:s,setPage:n,pagination:r,parsePagination:a}=ui$1.usePagination({pageSize:10}),{dateRange:l,filterDays:u,updateFilterDays:c,filterItems:d,onFilter:b}=Js();react.useEffect(()=>{n(1);},[e,l,u]);let[S,{meta:m,isLoading:f,loadMore:P}]=Ys({page:o?void 0:i,size:s,symbol:e,start_t:l.from!=null?l.from.getTime():void 0,end_t:l.to!=null?l.to.getTime():void 0});return {dataSource:reactApp.useDataTap(S,{fallbackData:[]}),isLoading:f,loadMore:P,pagination:a(m),dateRange:l,filterDays:u,updateFilterDays:c,filterItems:d,onFilter:b}},Ys=t=>{let e=hooks.usePrivateInfiniteQuery(Zs(t),{initialSize:1,formatter:r=>r,revalidateOnFocus:true}),o=react.useMemo(()=>e.data?.[0]?.meta,[e.data?.[0]]),i=react.useMemo(()=>e.data?.map(r=>r.rows)?.flat(),[e.data]),s=e.isLoading;return [i,{meta:o,isLoading:s,loadMore:()=>{e.setSize(e.size+1);}}]},Js=()=>{let t=St({to:M(new Date),from:B(dateFns.subDays(new Date,89))}),[e,o]=react.useState(90),[i,s]=react.useState(t),n=u=>{o(u),s({from:B(dateFns.subDays(new Date,u-1)),to:M(new Date)});},r=u=>{if(u.name==="dateRange"){let c=St(u.value);if(s(c),c.from&&c.to){let d=Math.abs(dateFns.differenceInDays(c.from,c.to))+1,S={1:{from:B(new Date),to:M(new Date)},7:{from:B(dateFns.subDays(new Date,6)),to:M(new Date)},30:{from:B(dateFns.subDays(new Date,29)),to:M(new Date)},90:{from:B(dateFns.subDays(new Date,89)),to:M(new Date)}}[d];S&&ht(S.from,c.from)&&ht(S.to,c.to)?o(d):o(null);}}},{isMobile:a}=ui$1.useScreen();return {filterItems:react.useMemo(()=>{let u={type:"range",name:"dateRange",value:i,fromDate:B(dateFns.subDays(new Date,89)),toDate:M(new Date)};return a?[u]:[u]},[i]),onFilter:r,dateRange:i,filterDays:e,updateFilterDays:n}},Zs=t=>(e,o)=>{if(o&&!o.rows?.length)return null;let{symbol:i,size:s=10,page:n,end_t:r,start_t:a}=t,l=new URLSearchParams([["size",s.toString()],["page",`${e+1}`]]);return n&&l.set("page",`${n}`),i&&l.set("symbol",i),r&&l.set("end_t",`${r}`),a&&l.set("start_t",`${a}`),`/v1/liquidations?${l.toString()}`};var js=t=>{let e=te(t);return jsxRuntime.jsx(Ke,{...e})},ta=t=>{let{classNames:e,...o}=t,i=te(o);return jsxRuntime.jsx(Xe,{classNames:e,...i})};var oa="MarketCloseConfirmID";ui$1.registerSimpleDialog(oa,qt,{size:"md",closable:false});
|
|
16
17
|
|
|
17
|
-
exports.Liquidation =
|
|
18
|
-
exports.LiquidationWidget =
|
|
19
|
-
exports.MarketCloseConfirmID =
|
|
20
|
-
exports.MobileLiquidation =
|
|
21
|
-
exports.MobileLiquidationWidget =
|
|
22
|
-
exports.MobilePositionHistory =
|
|
23
|
-
exports.MobilePositionHistoryWidget =
|
|
24
|
-
exports.MobilePositionsWidget =
|
|
25
|
-
exports.PositionHistory =
|
|
26
|
-
exports.PositionHistoryWidget =
|
|
27
|
-
exports.PositionsWidget =
|
|
28
|
-
exports.useLiquidationScript =
|
|
29
|
-
exports.usePositionHistoryScript =
|
|
18
|
+
exports.Liquidation = Ke;
|
|
19
|
+
exports.LiquidationWidget = js;
|
|
20
|
+
exports.MarketCloseConfirmID = oa;
|
|
21
|
+
exports.MobileLiquidation = Xe;
|
|
22
|
+
exports.MobileLiquidationWidget = ta;
|
|
23
|
+
exports.MobilePositionHistory = ze;
|
|
24
|
+
exports.MobilePositionHistoryWidget = qs;
|
|
25
|
+
exports.MobilePositionsWidget = Kr;
|
|
26
|
+
exports.PositionHistory = Re;
|
|
27
|
+
exports.PositionHistoryWidget = Ls;
|
|
28
|
+
exports.PositionsWidget = Gr;
|
|
29
|
+
exports.useLiquidationScript = te;
|
|
30
|
+
exports.usePositionHistoryScript = Gt;
|
|
30
31
|
//# sourceMappingURL=out.js.map
|
|
31
32
|
//# sourceMappingURL=index.js.map
|