@orderly.network/ui-positions 2.2.0 → 2.3.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.mjs CHANGED
@@ -1,18 +1,20 @@
1
- import { registerSimpleDialog, Flex, Text, CloseIcon, Button, ThrottledButton, usePagination, useScreen, DataFilter, cn, Grid, ListView, Box, Tooltip, HoverCard, Divider, Badge, capitalizeFirstLetter, toast, SimpleDialog, ShareIcon, PopoverRoot, PopoverTrigger, Input, inputFormatter, PopoverContent, Slider, DropdownMenuRoot, DropdownMenuTrigger, CaretDownIcon, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, modal, Statistic, EditIcon, SimpleSheet } from '@orderly.network/ui';
2
- import { createContext, useEffect, useMemo, useState, useContext, useRef } from 'react';
3
- import { useAccount, usePrivateQuery, usePrivateInfiniteQuery, usePositionStream, useSymbolsInfo, useOrderEntry_deprecated, useLocalStorage, useReferralInfo, useSymbolLeverage, utils, useMarkPricesStream } from '@orderly.network/hooks';
4
- import { useTranslation } from '@orderly.network/i18n';
1
+ import { registerSimpleDialog, Flex, Text, CloseIcon, Button, ThrottledButton, useScreen, Grid, Statistic, DataTable, cn, ListView, SimpleSheet, SimpleDialog, usePagination, DataFilter, Badge, formatAddress, Box, Tooltip, HoverCard, Divider, toast, capitalizeFirstLetter, ShareIcon, PopoverRoot, PopoverTrigger, Input, inputFormatter, PopoverContent, Slider, DropdownMenuRoot, DropdownMenuTrigger, CaretDownIcon, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, modal, EditIcon } from '@orderly.network/ui';
2
+ import fr, { createContext, useCallback, useMemo, useEffect, useState, useRef, useContext } from 'react';
3
+ import { usePrivateInfiniteQuery, useBoolean, useAccount, usePrivateQuery, usePositionStream, useSymbolsInfo, usePositionClose, useSWR, fetcher, useLocalStorage, useConfig, useReferralInfo, useSymbolLeverage, utils, useMarkPricesStream } from '@orderly.network/hooks';
4
+ import { useTranslation, i18n } from '@orderly.network/i18n';
5
5
  import { useDataTap, useOrderEntryFormErrorMsg } from '@orderly.network/react-app';
6
- import { AccountStatusEnum, OrderSide, OrderType, AlgoOrderType } from '@orderly.network/types';
7
- import { commifyOptional, Decimal, commify } from '@orderly.network/utils';
6
+ import { AccountStatusEnum, OrderType, AlgoOrderType, OrderSide } from '@orderly.network/types';
7
+ import { commifyOptional, Decimal, getTimestamp, commify } from '@orderly.network/utils';
8
8
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
9
+ import { produce } from 'immer';
10
+ import { positions, account } from '@orderly.network/perp';
11
+ import { AuthGuardDataTable } from '@orderly.network/ui-connector';
9
12
  import { SharePnLDialogId, SharePnLBottomSheetId } from '@orderly.network/ui-share';
10
13
  import { PositionTPSLPopover, PositionTPSLSheet } from '@orderly.network/ui-tpsl';
11
- import { AuthGuardDataTable } from '@orderly.network/ui-connector';
12
14
  import { subDays, differenceInDays } from 'date-fns';
13
15
 
14
- var Je=createContext({}),I=()=>useContext(Je),Pt=t=>{let e=useSymbolsInfo()[t.symbol];return jsx(Je.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 eo=createContext({}),O=()=>useContext(eo),oe=t=>{let[e,o]=useState(Math.abs(t.position.position_qty).toString()),{t:i}=useTranslation();useEffect(()=>{o(Math.abs(t.position.position_qty).toString());},[t.position.position_qty]);let[s,n]=useState(""),r=t.position.position_qty>0?OrderSide.SELL:OrderSide.BUY,[a,l]=useState(void 0),[u,c]=useState(OrderType.MARKET),d=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:v}=useOrderEntry_deprecated(t.position?.symbol,r,true),R=(L,W)=>{if(c(L),L===OrderType.LIMIT){if(!W)throw new Error(i("orderEntry.orderPrice.error.required"));n(W);}else n("");},H=useMemo(()=>{let{position:L}=t;if(!L)return null;let W={order_quantity:e,symbol:t.position.symbol,order_type:u,side:r,reduce_only:true};return u===OrderType.LIMIT&&(W.order_price=s),W},[t.position,s,u,e]),T=L=>{let W=C.calculate({},"order_quantity",L);o(W.order_quantity);},z=L=>{let W=C.calculate({},"order_price",L);n(W.order_price);};useEffect(()=>{let L=H;C.validator(L).then(W=>{l(W);});},[H]);let kt=()=>y(H).catch(L=>(typeof L=="string"?toast.error(L):toast.error(L.message),Promise.resolve()));return jsx(eo.Provider,{value:{quantity:e,price:s,type:u,side:r,position:t.position,updatePriceChange:z,updateQuantity:T,updateOrderType:R,tpslOrder:t.position.algo_order,onSubmit:kt,submitting:v,closeOrderData:H,quoteDp:m,baseDp:f,baseTick:P,errors:a},children:t.children})};var ao=()=>{let[t,e]=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]=useLocalStorage("orderly_order_confirm",true),{t:S}=useTranslation(),{parseErrorMsg:m}=useOrderEntryFormErrorMsg(u),f=()=>o().then(y=>{e(false);},y=>{typeof y=="string"?toast.error(y):toast.error(y.message);}).catch(y=>{typeof y=="string"?toast.error(y):toast.error(y.message);}),P=()=>{e(false);},C=useMemo(()=>r===OrderType.MARKET?!s:!i||!s,[i,s,r]);return jsxs(Fragment,{children:[jsx(Button,{variant:"outlined",size:"sm",color:"secondary",disabled:C||a,loading:a,onClick:y=>{y.stopPropagation();let v=m("order_quantity"),R=m("order_price"),H=v||R;if(H){toast.error(H);return}if(!b){o();return}e(true);},children:S("positions.column.close")}),jsx(SimpleDialog,{open:t,onOpenChange:e,size:"sm",children:r===OrderType.MARKET?jsx(qt,{base:c,quantity:s,onClose:P,onConfirm:f,submitting:a,classNames:{root:"oui-items-start"},hideCloseIcon:true}):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 jsxs("div",{className:"oui-pb-3 oui-border-b oui-border-line-4 oui-relative oui-w-full",children:[jsx(Text,{size:"base",children:t.title}),!e&&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:jsx(CloseIcon,{size:18,color:"white"})})]})},mo=({onCancel:t,onConfirm:e,submitting:o})=>{let{t:i}=useTranslation();return jsxs(Flex,{id:"oui-positions-confirm-footer",gap:2,width:"100%",className:"oui-mt-3 oui-pb-1",children:[jsx(Button,{id:"oui-positions-confirm-footer-cancel-button",color:"secondary",fullWidth:true,onClick:t,size:"md",children:i("common.cancel")}),jsx(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}=useTranslation(),r=useMemo(()=>o&&e?new Decimal(o).mul(e).toFixed(i,Decimal.ROUND_DOWN):"--",[o,e]);return jsxs(Flex,{direction:"column",gap:1,width:"100%",className:"oui-text-sm oui-text-base-contrast-54",py:5,children:[jsxs(Flex,{justify:"between",width:"100%",gap:1,children:[jsx(Text,{children:n("common.qty")}),jsx(Text,{color:s===OrderSide.BUY?"success":"danger",children:e})]}),jsxs(Flex,{justify:"between",width:"100%",gap:1,children:[jsx(Text,{children:n("common.price")}),jsx(Text.formatted,{intensity:98,suffix:jsx(Text,{intensity:54,children:"USDC"}),children:o})]}),jsxs(Flex,{justify:"between",width:"100%",gap:1,children:[jsx(Text,{children:n("common.notional")}),jsx(Text.formatted,{intensity:98,suffix:jsx(Text,{intensity:54,children:"USDC"}),children:r})]})]})},qt=t=>{let{t:e}=useTranslation(),o=()=>{(t?.onClose??t.close)?.();};return jsxs(Flex,{direction:"column",className:t.classNames?.root,children:[jsx(lo,{onClose:o,title:e("positions.marketClose"),hideCloseIcon:t.hideCloseIcon}),jsx(Text,{intensity:54,size:"sm",className:"oui-my-5",children:e("positions.marketClose.description",{quantity:commifyOptional(t.quantity),base:t.base})}),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}=useTranslation(),l=()=>{t.onClose?.();};return jsxs(Fragment,{children:[jsx(lo,{onClose:l,title:a("positions.limitClose"),hideCloseIcon:t.hideCloseIcon}),jsx(Box,{mt:5,children:jsx(Text,{intensity:54,size:"sm",children:a("positions.limitClose.description",{quantity:commify(t.quantity),base:t.base})})}),jsxs(Flex,{gap:2,mb:4,mt:5,justify:"between",children:[jsx(Text.formatted,{rule:"symbol",formatString:"base-type",size:"base",showIcon:true,children:e.symbol}),jsxs(Flex,{gap:1,children:[jsx(Badge,{color:"neutral",size:"xs",children:a("orderEntry.orderType.limit")}),jsx(Badge,{color:r===OrderSide.BUY?"success":"danger",size:"xs",children:r===OrderSide.BUY?a("common.buy"):a("common.sell")})]})]}),jsx(Divider,{className:"oui-w-full"}),jsx(Zi,{className:"oui-text-sm",price:s,quantity:i,side:e.side,quoteDp:o??2}),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]=useState(false),{t:l}=useTranslation();return jsxs(DropdownMenuRoot,{children:[jsx(Input,{size:"sm",value:t===OrderType.LIMIT?o:l("orderEntry.orderType.market"),onValueChange:u=>i(u),formatters:[inputFormatter.numberFormatter,...e?[inputFormatter.dpFormatter(e)]:[]],onFocus:u=>{t===OrderType.MARKET&&s(OrderType.LIMIT,`${n.mark_price}`),a(true);},onBlur:u=>{setTimeout(()=>{a(false);},100);},suffix:jsx(DropdownMenuTrigger,{asChild:true,children:jsx("button",{className:"oui-px-1 oui-h-full",children:jsx(CaretDownIcon,{size:12,color:"white"})})}),classNames:{root:cn("oui-outline-line-12 focus-within:oui-outline-primary-light")}}),jsx(DropdownMenuContent,{align:"end",className:"oui-w-[96px] oui-min-w-[96px]",onCloseAutoFocus:u=>u.preventDefault(),children:jsx(DropdownMenuGroup,{children:jsx(DropdownMenuItem,{size:"xs",onSelect:u=>{s(OrderType.MARKET);},children:jsx("span",{children:l("common.marketPrice")})})})})]})};var xo=t=>{let[e,o]=useState(false),[i,s]=useState(100),{baseDp:n,quoteDp:r,updateQuantity:a,quantity:l,type:u,errors:c,baseTick:d}=O();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=utils.formatNumber(m,d)??m;a(f);}};return jsxs(PopoverRoot,{children:[jsx(PopoverTrigger,{children:jsx(Input,{size:"sm",onFocus:()=>{o(true);},classNames:{root:"oui-outline-line-12 "},formatters:[inputFormatter.numberFormatter,...n?[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 Decimal(m).div(t.value).mul(100).abs().toFixed(0,Decimal.ROUND_DOWN);s(Math.min(100,Number(f)));}})}),jsx(PopoverContent,{className:"oui-w-[360px] oui-rounded-xl",align:"start",side:"bottom",onOpenAutoFocus:m=>{m.preventDefault();},children:jsxs(Flex,{p:1,gap:2,width:"100%",itemAlign:"start",children:[jsx(Text,{size:"xs",intensity:98,className:"oui-min-w-[30px]",children:`${i}%`}),jsxs(Flex,{direction:"column",width:"100%",gap:2,children:[jsx(Slider,{markCount:4,value:[i],onValueChange:m=>{let f=Array.from(m.values());s(f[0]),b(f[0]);}}),jsx(Sn,{onClick:m=>{s(m*100),b(m*100);}})]})]})})]})},Sn=t=>{let{t:e}=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 jsx(Flex,{gap:2,width:"100%",children:o.map((i,s)=>jsx(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 jsx(Text.numeral,{dp:o.base_dp,rm:Decimal.ROUND_DOWN,padding:false,coloring:true,children:t})},Po=(t,e)=>jsx(xo,{value:e.position_qty}),Co=t=>jsx(po,{});var me=t=>{if(t.sharePnLConfig==null)return jsx(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 Decimal(e.unrealized_pnl_ROI*100).toFixed(2,Decimal.ROUND_DOWN),openPrice:Math.abs(e.average_open_price),markPrice:e.mark_price,openTime:e.timestamp,quantity:e.position_qty};modal.show(t.modalId,{pnl:{entity:{symbol:e.symbol,...i},refCode:t.refCode,...t.sharePnLConfig,leverage:t.isPositionHistory?void 0:t.leverage}});};return jsx("button",{type:"button",onClick:i=>{i.stopPropagation(),o();},children:jsx(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}=useReferralInfo(),a=useMemo(()=>r()?.code,[r]),l=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 jsx(me,{...e})};var To=()=>{let{position:t,baseDp:e,quoteDp:o,tpslOrder:i}=O(),{t:s}=useTranslation();return jsx(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 jsx(PositionTPSLPopover,{position:t,order:i,baseDP:e,quoteDP:o,isEditing:true,children:jsx(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 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=utils.priceToPnl({qty:e,price:o,entryPrice:i,orderSide:s,orderType:n},{symbol:r}),l=n===AlgoOrderType.TAKE_PROFIT?"TP":"SL";return jsxs(Flex,{children:[jsx(Text,{intensity:54,className:"oui-mr-1",children:`${l} PnL:`}),jsx(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:jsx(Text,{children:a===0?"":a>0?"+":"-"}),suffix:jsx(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=useSymbolsInfo(),{t:n}=useTranslation(),r=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(jsx(Do,{qty:d,price:t.takeProfitPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:AlgoOrderType.TAKE_PROFIT,symbolInfo:s[o.symbol]()},"tp")),t.stopLossPrice&&c.push(jsx(Do,{qty:d,price:t.stopLossPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:AlgoOrderType.STOP_LOSS,symbolInfo:s[o.symbol]()},"sl")),jsx("div",{children:c})},[t.takeProfitPrice,t.stopLossPrice,i?.average_open_price,o?.side,o?.quantity,o?.algo_type]),a=useMemo(()=>{let c=[];if(!o?.symbol)return jsx("span",{children:"-"});return t.takeProfitPrice&&c.push(jsx(Text.formatted,{className: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"?jsx(Text,{intensity:54,children:`${n("tpsl.tp")} - `}):""},"tp")),t.stopLossPrice&&c.push(jsx(Text.formatted,{className: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"?jsx(Text,{intensity:54,children:`${n("tpsl.sl")} - `}):""},"sl")),c.length===0?jsx(Text,{children:"-"}):(c.length===2&&e==="row"&&c.splice(1,0,jsx(Text,{children:"/"},"split")),c)},[t.takeProfitPrice,t.stopLossPrice,o?.symbol,n]),l=jsx("div",{className: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?jsxs(Flex,{gapX:2,children:[jsx(Tooltip,{content:r,children:l}),u&&jsx(wo,{})]}):l};var Bo=t=>{let[e,o]=useLocalStorage("unPnlPriceBasis","markPrice"),{t:i}=useTranslation();return jsxs(Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-items-start",children:[jsx(Text,{children:i("positions.column.unrealPnl.tooltip")}),jsx(Divider,{className:"oui-w-full"}),jsx("div",{className:"oui-mb-0",children:i("positions.column.unrealPnl.priceBasis")}),jsx(zn,{value:e,onValueChange:o})]})},zn=t=>{let{value:e,onValueChange:o}=t,{t:i}=useTranslation();return jsxs(Flex,{gap:2,children:[jsx(vo,{sel:e==="markPrice",label:i("common.markPrice"),value:"markPrice",onCheckChange:o}),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 jsxs(Flex,{onClick:n=>{s(i),n.stopPropagation();},gap:1,className:"oui-cursor-pointer",children:[e?jsx(En,{}):jsx(Wn,{}),jsx(Text,{size:"xs",intensity:e?98:54,children:o})]})},En=()=>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:[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"}),jsx("circle",{cx:"8",cy:"8",r:"3.333"})]}),Wn=()=>jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children: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 jsx(Text.numeral,{as:"span",...o,dp:i[e]})};var ko=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o}=t,{t:i}=useTranslation();return useMemo(()=>[{title:i("common.symbol"),dataIndex:"symbol",fixed:"left",width:140,onSort:(n,r)=>n.symbol.localeCompare(r.symbol),render:(n,r)=>jsxs(Flex,{gap:2,children:[jsx(Box,{width:4,height:20,className:cn("oui-rounded-[1px]",r.position_qty>0?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsx(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)=>jsx(Et,{rm:Decimal.ROUND_DOWN,children:n})},{title:i("common.markPrice"),dataIndex:"mark_price",width:120,onSort:true,className:"oui-h-[48px]",render:(n,r)=>jsx(Et,{rm:Decimal.ROUND_DOWN,children:n})},{title:jsx(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:jsx(Text,{children:i("positions.column.liqPrice")})}),width:100,onSort:true,dataIndex:"est_liq_price",render:(n,r)=>Number(n)===0?"--":jsx(Et,{rm:Decimal.ROUND_DOWN,className:Number(n)>0?"oui-text-warning-light":"",children:n??"--"})},{title:jsx(HoverCard,{content:jsx(Bo,{}),side:"top",align:"center",className:"oui-max-w-[280px] oui-text-2xs",children:jsx(Text,{children:i("common.unrealizedPnl")})}),dataIndex:"unrealized_pnl",width:180,onSort:true,rule:"price",numeralProps:{coloring:true},render:(n,r)=>jsxs(Flex,{gap:2,children:[jsxs(Flex,{children:[jsx(Text.numeral,{dp:t.pnlNotionalDecimalPrecision,rm:Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",children:n}),jsx(Text.numeral,{rule:"percentages",dp:t.pnlNotionalDecimalPrecision,rm:Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",prefix:"(",suffix:")",children:r.unrealized_pnl_ROI})]}),jsx(Z,{position:r,sharePnLConfig:t.sharePnLConfig,modalId:SharePnLDialogId})]})},{title:i("common.tpsl"),dataIndex:"__",width:150,render:(n,r)=>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=>jsx(Text.numeral,{dp:e,children:n})},{title:jsx(Tooltip,{className:"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-54 oui-p-3 oui-bg-base-8",content:jsxs(Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-bg-base-8 oui-rounded-sm",children:[jsx("span",{children:i("positions.column.margin.tooltip")}),jsx(Divider,{className:"oui-w-full"}),jsx("span",{children:i("positions.column.margin.formula")})]}),children:jsx(Text,{children:i("positions.column.margin")})}),dataIndex:"mm",onSort:true,width:100,rule:"price",render:n=>jsx(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=>jsxs(Flex,{gapX:2,justify:"end",children:[jsx(ao,{}),jsx(To,{})]})}],[e,o,i])};var Ao=t=>{let{item:e}=t,o=e.position_qty>0,{t:i}=useTranslation();return jsx(Text.formatted,{rule:"symbol",formatString:"base-type",size:"2xs",suffix:jsx(Badge,{color:o?"success":"danger",size:"xs",children:i(o?"common.long":"common.short")}),showIcon:true,onClick:()=>{t.onSymbolChange?.({symbol:e.symbol});},children:e.symbol})},Ho=t=>{let{item:e}=t,{t:o}=useTranslation();return jsxs(Flex,{gap:3,children:[jsxs(Flex,{direction:"column",className:"oui-text-2xs",itemAlign:"end",children:[jsxs("div",{children:[jsx(Text,{intensity:36,children:o("common.unrealizedPnl")}),jsx(Text,{intensity:20,children:"(USDC)"})]}),jsx(Text.numeral,{size:"xs",dp:t.pnlNotionalDecimalPrecision,rm:Decimal.ROUND_DOWN,coloring:true,className:"orderly-font-semibold",suffix:jsx(Text.numeral,{rule:"percentages",dp:t.pnlNotionalDecimalPrecision,rm:Decimal.ROUND_DOWN,prefix:"(",suffix:")",className: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})]}),jsx(Z,{position:e,sharePnLConfig:t.sharePnLConfig,modalId:SharePnLBottomSheetId,iconSize:12})]})},Ro=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:o("common.qty"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.base_dp,padding:false,coloring:true,children:e.position_qty})})},zo=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:jsxs("span",{children:[o("positions.column.margin"),jsx(Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,intensity:80,children:e.mm})})},Eo=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{align:"end",label:jsxs("span",{children:[o("common.notional"),jsx(Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,intensity:80,children:e.notional})})},Wo=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:o("common.avgOpen"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,rm:Decimal.ROUND_DOWN,intensity:80,children:e.average_open_price})})},Uo=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:o("common.markPrice"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,rm:Decimal.ROUND_DOWN,intensity:80,children:e.mark_price})})},Qo=t=>{let{item:e}=t,{t:o}=useTranslation(),i=e.est_liq_price&&e.est_liq_price>0?e.est_liq_price:"-";return jsx(Statistic,{label:o("positions.column.liqPrice"),align:"end",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,rm:Decimal.ROUND_DOWN,color:"warning",children:i})})},$o=t=>{let{item:e}=t,{t:o}=useTranslation();return e.tp_trigger_price==null&&e.sl_trigger_price==null?jsx(Fragment,{}):jsxs(Flex,{className:"oui-text-2xs oui-text-base-contrast-36",children:[jsxs(Text,{children:[`${o("common.tpsl")}:`,"\xA0"]}),jsxs(Flex,{className:"oui-gap-[2px]",children:[e.tp_trigger_price&&jsx(Text.numeral,{color:"buy",children:e.tp_trigger_price}),e.sl_trigger_price&&"/",e.sl_trigger_price&&jsx(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}=useTranslation(),{parseErrorMsg:y}=useOrderEntryFormErrorMsg(t.errors),v=y("order_quantity"),R=y("order_price"),H=T=>{if(t.baseTick&&t.baseTick>0){let z=utils.formatNumber(T,t.baseTick)??T;t.updateQuantity(z);}};return jsxs(Fragment,{children:[jsx(Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:()=>{r("limit"),i(true);},children:C("positions.limitClose")}),o&&jsx(SimpleSheet,{title:C("positions.limitClose"),open:o,onOpenChange:i,children:jsxs(Flex,{direction:"column",gap:3,width:"100%",itemAlign:"start",className:"oui-text-sm",children:[jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text.formatted,{rule:"symbol",showIcon:true,children:e.symbol}),jsxs(Flex,{gap:1,children:[jsx(Badge,{color:"neutral",size:"xs",children:C("orderEntry.orderType.limit")}),P&&jsx(Badge,{color:"success",size:"xs",children:C("common.buy")}),!P&&jsx(Badge,{color:"danger",size:"xs",children:C("common.sell")})]})]}),jsx(Divider,{className:"oui-w-full"}),jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text,{intensity:54,children:C("common.lastPrice")}),jsx(Text.numeral,{dp:t.item?.symbolInfo?.quote_dp,suffix:jsx(Text,{intensity:36,children:" USDC"}),children:t.curMarkPrice})]}),jsxs(Flex,{width:"100%",direction:"column",gap:2,children:[jsx(Input.tooltip,{prefix:C("common.price"),suffix:t.quote,align:"right",fullWidth:true,autoComplete:"off",formatters:[inputFormatter.numberFormatter,inputFormatter.dpFormatter(t.quote_dp)],triggerClassName:"oui-w-full",tooltip:R,color:R?"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:cn("oui-outline-line-12 oui-w-full",R?"oui-outline-danger":void 0)}}),jsx(Input,{prefix:C("common.quantity"),suffix:t.base,align:"right",fullWidth:true,autoComplete:"off",formatters:[inputFormatter.numberFormatter,inputFormatter.dpFormatter(t.base_dp)],value:t.quantity,onBlur:T=>H(T.target.value),onValueChange:T=>{t.updateQuantity(T);let z=new Decimal(T).div(t.item.position_qty).mul(100).toDecimalPlaces(2,Decimal.ROUND_DOWN).toNumber();t.setSliderValue(z);},classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:cn("oui-outline-line-12 oui-w-full")}}),jsx(Slider,{markCount:4,value:[t.sliderValue],color:"primary",onValueChange:T=>{t.setSliderValue(T[0]);let z=new Decimal(T[0]).div(100).mul(t.item.position_qty).toFixed(t.base_dp,Decimal.ROUND_DOWN);H(z);}}),jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text,{color:"primary",size:"2xs",children:`${t.sliderValue}%`}),jsxs(Flex,{gap:1,children:[jsx(Text,{size:"2xs",color:"primary",children:C("common.max")}),jsx(Text.numeral,{intensity:54,size:"2xs",children:Math.abs(t.item.position_qty)})]})]})]}),jsxs(Flex,{width:"100%",gap:3,mt:2,children:[jsx(Button,{fullWidth:true,color:"secondary",onClick:T=>{c();},children:C("common.cancel")}),jsx(ThrottledButton,{fullWidth:true,disabled:b,loading:b,onClick:T=>{T.stopPropagation(),T.preventDefault();let z=v||R;if(z){toast.error(z);return}if(!t.orderConfirm){d();return}n(true);},children:C("common.confirm")})]})]})}),s&&jsx(SimpleDialog,{open:s,onOpenChange:n,size:"xs",children: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]=useState(false),[s,n]=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=useRef(false),[y,v]=useState(100),[R]=useLocalStorage("orderly_order_confirm",true),H=()=>r().then(At=>{i(false),n(false);},At=>{typeof At=="string"?toast.error(At):toast.error(At.message);}),T=()=>{i(false);},z=()=>{n(false);},kt=useMarkPricesStream(),L=useMemo(()=>kt?.data?.[e.item.symbol]??"--",[kt]),{quote_dp:W,base_dp:Li,base:qi,quote:Ni}=I();return useEffect(()=>{!C.current&&L&&o&&(C.current=true,S(OrderType.LIMIT,`${L}`));},[C,L,o]),useEffect(()=>{o||(S(OrderType.MARKET),C.current=false);},[o]),{...e,sheetOpen:o,setSheetOpen:i,curMarkPrice:L,quote_dp:W,base_dp:Li,base:qi,quote:Ni,baseTick:P,orderConfirm:R,onClose:T,onConfirm:H,price:a,quantity:l,closeOrderData:u,submitting:c,updatePriceChange:b,updateQuantity:m,errors:f,sliderValue:y,setSliderValue:v,dialogOpen:s,setDialogOpen:n,onCloseDialog:z}};var be=t=>{let e=xe(t);return jsx(ye,{...e})};var Ce=t=>{let{t:e}=useTranslation();return jsxs(Fragment,{children:[jsx(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(OrderType.MARKET),!t.orderConfirm){t.onConfirm();return}t.setDialogOpen(true);},children:e("positions.marketClose")}),jsx(SimpleDialog,{open:t.dialogOpen,onOpenChange:t.setDialogOpen,size:"xs",children: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]=useState(false),{onSubmit:s,price:n,quantity:r,closeOrderData:a,submitting:l,type:u,updatePriceChange:c,updateOrderType:d,updateQuantity:b}=O(),[S]=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"?toast.error(P):toast.error(P.message);}),submitting:l,updateOrderType:d,updateQuantity:b}};var he=t=>{let e=Se(t);return jsx(Ce,{...e})};var _e=t=>{let{t:e}=useTranslation();return jsx(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=useSymbolsInfo()[t.state.item.symbol](),{tpslOrder:o}=O(),{t:i}=useTranslation();return {openTP_SL:()=>{modal.sheet({title:i("common.tpsl"),content:jsx(PositionTPSLSheet,{position:t.state.item,symbolInfo:e,order:o,isEditing:false})});},...t,...e}};var we=t=>{let e=Te(t);return jsx(_e,{...e})};var Fe=t=>{let{className:e,...o}=t;return jsxs(Flex,{direction:"column",width:"100%",gap:2,p:2,r:"xl",itemAlign:"start",className:cn(e,"oui-bg-base-9"),children:[jsx(Ar,{...o}),jsx(Divider,{intensity:6,className:"oui-w-full"}),jsx(Hr,{...o}),jsx($o,{...o}),jsx(Rr,{...o})]})},Ar=t=>jsxs(Flex,{justify:"between",width:"100%",children:[jsx(Ao,{...t}),jsx(Ho,{...t})]}),Hr=t=>jsxs(Grid,{cols:3,rows:2,gap:2,width:"100%",children:[jsx(Ro,{...t}),jsx(zo,{...t}),jsx(Eo,{...t}),jsx(Wo,{...t}),jsx(Uo,{...t}),jsx(Qo,{...t})]}),Rr=t=>jsxs(Grid,{width:"100%",gap:2,cols:3,rows:1,children:[jsx(we,{state:t}),jsx(be,{state:t}),jsx(he,{state:t})]});var De=t=>{let e=I();return {...t,...e}};var Le=t=>{let e=De(t);return 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 jsx(AuthGuardDataTable,{loading:t.isLoading,id:"oui-desktop-positions-content",columns:s,bordered:true,dataSource:t.dataSource,generatedRowKey:n=>n.symbol,renderRowContainer:(n,r,a)=>jsx(Pt,{symbol:n.symbol,children: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 jsx(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)=>jsx(Pt,{symbol:i.symbol,children:jsx(oe,{position:i,children: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}=usePagination({pageSize:50}),[u,c,{isLoading:d}]=usePositionStream(e,{calcMode:o,includedPendingOrder:i});return useEffect(()=>{l(1);},[e]),{dataSource: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 jsx(ei,{...e})},Kr=t=>{let e=qe(t);return jsx(oi,{...e})};var si=t=>{let{onSymbolChange:e,pnlNotionalDecimalPrecision:o}=t,{t:i}=useTranslation();return useMemo(()=>[{title:i("common.symbol"),dataIndex:"symbol",fixed:"left",width:200,onSort:(n,r)=>n.symbol.localeCompare(r.symbol),render:(n,r)=>jsx(jr,{record:r,onSymbolChange:e})},{title:i("positions.history.column.closed&maxClosed"),dataIndex:"close_maxClose",width:200,render:(n,r)=>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)=>jsxs(Flex,{gapX:1,children:[jsx(es,{record:r,pnlNotionalDecimalPrecision:o}),jsx(Z,{position:r,sharePnLConfig:t.sharePnLConfig,modalId:SharePnLDialogId,isPositionHistory:true})]})},{title:i("common.avgPrice"),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 jsx(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 jsx(Text.numeral,{dp:l,padding:false,children:a})}},{title:i("positions.history.column.timeOpened"),dataIndex:"open_timestamp",width:175,onSort:true,render:(n,r)=>jsx(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?jsx(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)=>jsx(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}=useTranslation(),s=useMemo(()=>{let n=[],r=e.position_status,a=()=>r==="closed"?i("positions.history.status.closed"):r==="partial_closed"?i("positions.history.status.partialClosed"):capitalizeFirstLetter(r.replace("_"," "));return n.push(jsx(Badge,{color:r!=="closed"?"primaryLight":"neutral",size:"xs",className:"oui-break-normal oui-whitespace-nowrap",children:a()})),e.type==="adl"?n.push(jsx(Badge,{color:"danger",size:"xs",children:i("positions.history.type.adl")})):e.type==="liquidated"&&n.push(jsx(Tooltip,{className:"oui-min-w-[204px] oui-bg-base-5",arrow:{className:"oui-fill-base-5"},content:jsxs(Flex,{direction:"column",itemAlign:"start",className:"oui-text-2xs",children:[e.liquidation_id!=null&&jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("positions.history.liquidated.liquidationId")}),jsx(Text,{intensity:98,children:e.liquidation_id})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("positions.history.liquidated.liquidatorFee")}),jsxs(Text,{color:"lose",children:[e.liquidator_fee>0&&"-",commifyOptional(e.liquidator_fee)]})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("positions.history.liquidated.insFundFee")}),jsxs(Text,{color:"lose",children:[e.insurance_fund_fee>0&&"-",commifyOptional(e.insurance_fund_fee)]})]})]}),children:jsx("div",{children:jsx(Badge,{size:"xs",color:"danger",className:"oui-cursor-pointer",children:jsx("span",{className:"oui-underline oui-decoration-dashed oui-decoration-[1px]",children:i("positions.history.type.liquidated")})})})})),n},[e,i]);return jsxs(Flex,{gap:2,height:48,children:[jsx(Box,{width:4,height:38,className:cn("oui-rounded-[1px] oui-shrink-0",e.side==="LONG"?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsxs(Flex,{direction:"column",itemAlign:"start",children:[jsx(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`}),jsx(Flex,{gap:1,children:s})]})]})},ts=t=>{let{record:e}=t,{base_dp:o}=I();return jsxs(Flex,{gap:1,direction:"column",itemAlign:"start",className:"oui-overflow-hidden oui-whitespace-nowrap oui-text-ellipsis",children:[jsx(Text.numeral,{dp:o,padding:false,children:Math.abs(e.closed_position_qty)}),jsx(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}=useTranslation(),s=e.netPnL!=null?e.netPnL:void 0,n=()=>jsx(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():jsx(Tooltip,{delayDuration:200,content:jsxs(Flex,{direction:"column",itemAlign:"start",className:"oui-text-2xs",children:[jsx(Text,{intensity:80,children:i("positions.history.column.netPnl")}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("common.realizedPnl")}),jsx(Text,{color:e.realized_pnl>=0?"profit":"lose",className:"oui-cursor-pointer",children:commifyOptional(e.realized_pnl)})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("positions.history.netPnl.fundingFee")}),jsx(Text,{color:e.accumulated_funding_fee>0?"lose":"profit",className:"oui-cursor-pointer",children:commifyOptional(-e.accumulated_funding_fee)})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("positions.history.netPnl.tradingFee")}),jsx(Text,{color:e.trading_fee>0?"lose":"profit",className:"oui-cursor-pointer",children:commifyOptional(-e.trading_fee)})]})]}),className:"oui-min-w-[204px] oui-bg-base-5",arrow:{className:"oui-fill-base-5"},children: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}=useAccount(),{data:n,isLoading:r}=usePrivateQuery(o?`/v1/position_history?symbol=${o}&limit=1000`:"/v1/position_history?limit=1000",{formatter(y){return (y.rows??null)?.map(v=>{if(v.realized_pnl!=null&&v.accumulated_funding_fee!=null&&v.trading_fee!=null){let R=v.realized_pnl-v.accumulated_funding_fee-v.trading_fee;return {...v,netPnL:R}}return v})},revalidateOnFocus:true}),{pagination:a,setPage:l}=usePagination({pageSize:10}),{status:u,side:c,dateRange:d,filterDays:b,updateFilterDays:S,filterItems:m,onFilter:f}=us();useEffect(()=>{l(1);},[u,c,d,b,o]);let P=useMemo(()=>n==null?n:n.filter(y=>{let v=c==="all"?true:y.side.toLowerCase()===c.toLowerCase(),R=u==="all"?true:y.position_status.toLowerCase()===u.toLowerCase(),H=y?.last_update_time??y.open_timestamp,T=d.from&&d.to?H>=d.from.getTime()&&H<=d.to.getTime():true,z=o?y.symbol==o:true;return v&&R&&T&&z}),[u,c,d,n,o]);return {dataSource:useDataTap(P,{accountStatus:s.status===AccountStatusEnum.EnableTradingWithoutConnected?AccountStatusEnum.EnableTradingWithoutConnected:AccountStatusEnum.EnableTrading,fallbackData:[]}),isLoading:r,onSymbolChange:e,pagination:a,filterItems:m,onFilter:f,symbol:o,filterDays:b,updateFilterDays:S,pnlNotionalDecimalPrecision:i}},us=()=>{let{t}=useTranslation(),[e,o]=useState("all"),[i,s]=useState("all"),n=St({to:M(new Date),from:B(subDays(new Date,89))}),[r,a]=useState(90),[l,u]=useState(n),c=m=>{a(m),u({from:B(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(differenceInDays(f.from,f.to))+1,y={1:{from:B(new Date),to:M(new Date)},7:{from:B(subDays(new Date,6)),to:M(new Date)},30:{from:B(subDays(new Date,29)),to:M(new Date)},90:{from:B(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}=useScreen();return {filterItems: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(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}=useTranslation(),s=e==="LONG";return jsx(Text.formatted,{intensity:80,rule:"symbol",formatString:"base-type",size:"sm",prefix:jsx(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}=useTranslation(),i=()=>{modal.alert({title:o("positions.liquidation"),message:jsxs(Flex,{direction:"column",width:"100%",gap:2,className:"oui-text-2xs oui-text-base-contrast-54",children:[e.liquidation_id!=null&&jsxs(Flex,{justify:"between",width:"100%",children:[jsx(Text,{children:o("positions.history.liquidated.liquidationId")}),jsx(Text,{intensity:98,children:e.liquidation_id})]}),jsxs(Flex,{justify:"between",width:"100%",children:[jsx(Text,{children:o("positions.history.liquidated.liquidatorFee")}),jsxs(Text,{color:"lose",children:[e.liquidator_fee>0&&"-",commifyOptional(e.liquidator_fee)]})]}),jsxs(Flex,{justify:"between",width:"100%",children:[jsx(Text,{children:o("positions.history.liquidated.insFundFee")}),jsxs(Text,{color:"lose",children:[e.insurance_fund_fee>0&&"-",commifyOptional(e.insurance_fund_fee)]})]})]})});},s=useMemo(()=>{let n=[],r=e.position_status,a=()=>r==="closed"?o("positions.history.status.closed"):r==="partial_closed"?o("positions.history.status.partialClosed"):capitalizeFirstLetter(r.replace("_"," "));return n.push(jsx(Badge,{color:r!=="closed"?"primaryLight":"neutral",size:"xs",children:a()})),e.type==="adl"?n.push(jsx(Badge,{color:"danger",size:"xs",children:o("positions.history.type.adl")})):e.type==="liquidated"&&n.push(jsx(Badge,{size:"xs",color:"danger",className:"oui-cursor-pointer",onClick:i,children:jsx("span",{className:"oui-underline oui-decoration-dashed oui-decoration-[1px]",children:o("positions.history.type.liquidated")})})),n},[e]);return jsx(Flex,{gap:1,children:s})},ci=t=>{let{item:e}=t,{t:o}=useTranslation(),i=e.closed_position_qty!=null?Math.abs(e.closed_position_qty):"--";return jsx(Statistic,{label:jsx(Text,{children:o("positions.history.column.closed")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.base_dp,padding:false,coloring:true,intensity:80,children:i})})},di=t=>{let{item:e}=t,{t:o}=useTranslation(),i=e.max_position_qty!=null?Math.abs(e.max_position_qty):"--";return jsx(Statistic,{label:jsx(Text,{children:o("positions.history.column.maxClosed")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(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}=useTranslation();return jsx(Statistic,{label:jsxs(Flex,{gap:1,children:[i("common.avgOpen"),jsx(Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(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}=useTranslation();return jsx(Statistic,{label:jsxs(Flex,{gap:1,children:[i("common.avgClose"),jsx(Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,padding:false,coloring:true,intensity:80,children:o})})},yi=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:jsx(Text,{children:o("positions.history.column.timeOpened")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},align:"end",children:jsx(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}=useTranslation(),i=e.position_status=="closed"&&e.close_timestamp?jsx(Text.formatted,{intensity:80,formatString:"yyyy-MM-dd HH:mm:ss",rule:"date",children:e.close_timestamp}):"--";return jsx(Statistic,{label:jsx(Text,{children:o("positions.history.column.timeClosed")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},align:"end",children:i})};var Be=t=>jsxs(Flex,{direction:"column",width:"100%",gap:2,itemAlign:"start",className:t.classNames?.root,children:[jsx(Ps,{...t}),jsx(Divider,{intensity:6,className:"oui-w-full"}),jsx(Cs,{...t})]}),Ps=t=>{let{t:e}=useTranslation(),o=()=>{let{item:i}=t;modal.alert({title:e("positions.history.column.netPnl"),message:jsxs(Flex,{direction:"column",width:"100%",gap:2,className:"oui-text-2xs oui-text-base-contrast-54",children:[jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:e("common.realizedPnl")}),jsx(Text,{color:i.realized_pnl>=0?"profit":"lose",children:commifyOptional(i.realized_pnl)})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:e("positions.history.netPnl.fundingFee")}),jsx(Text,{color:i.accumulated_funding_fee>0?"lose":"profit",children:commifyOptional(-i.accumulated_funding_fee)})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:e("positions.history.netPnl.tradingFee")}),jsx(Text,{color:i.trading_fee>0?"lose":"profit",children:commifyOptional(-i.trading_fee)})]})]})});};return jsxs(Flex,{gap:1,width:"100%",children:[jsxs(Flex,{direction:"column",itemAlign:"start",className:"oui-flex-1",gap:1,children:[jsx(mi,{...t}),jsx(ui,{...t})]}),jsxs(Flex,{direction:"column",itemAlign:"end",className:"oui-flex-1",children:[jsx(Text,{size:"2xs",intensity:36,children:e("positions.history.column.netPnl")}),jsxs(Flex,{gapX:1,children:[jsx("button",{onClick:o,children:jsx(Text.numeral,{size:"xs",coloring:true,children:t.item.netPnL??"--"})}),jsx(Z,{position:t.item,sharePnLConfig:t.sharePnLConfig,modalId:SharePnLBottomSheetId,iconSize:12,isPositionHistory:true})]})]})]})},Cs=t=>jsxs(Grid,{cols:3,rows:2,width:"100%",gap:0,className:"oui-grid-cols-[1fr,1fr,135px]",children:[jsx(ci,{...t}),jsx(di,{...t}),jsx(yi,{...t}),jsx(pi,{...t}),jsx(fi,{...t}),jsx(gi,{...t})]});var Me=t=>{let e=I();return {...t,...e}};var ke=t=>{let e=Me(t);return 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}=useTranslation(),r=useMemo(()=>({1:n("common.select.1d"),7:n("common.select.7d"),30:n("common.select.30d"),90:n("common.select.90d")}),[n]);return jsxs(Flex,{direction:"column",width:"100%",height:"100%",itemAlign:"start",children:[jsxs(Flex,{gap:3,children:[t.filterItems.length>0&&jsx(DataFilter,{items:t.filterItems,onFilter:a=>{t.onFilter(a);}}),[1,7,30,90].map(a=>jsxs("button",{className:"oui-relative oui-px-2 oui-py-[2px] oui-text-sm",children:[jsx("div",{className:"oui-z-10",children:jsx(Text.gradient,{color:t.filterDays===a?"brand":void 0,className:cn("oui-break-normal oui-whitespace-nowrap",t.filterDays!==a?"oui-text-base-contrast-54":""),children:r[a]||`${a}D`})}),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);}})]}))]}),jsx(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)=>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=>jsxs(Grid,{cols:1,rows:2,className:"oui-grid-rows-[auto,1fr] oui-w-full",gap:1,children:[jsx(Flex,{gap:2,p:2,className:"oui-bg-base-9 oui-rounded-b-xl",children:jsx(DataFilter,{className:"oui-pt-0 oui-pb-0 oui-border-none",items:t.filterItems,onFilter:e=>{t.onFilter(e);}})}),jsx(ListView,{className:cn("oui-w-full oui-hide-scrollbar oui-overflow-y-hidden oui-space-y-0",t.classNames?.root),contentClassName:cn("!oui-space-y-1",t.classNames?.content),dataSource:t.dataSource,renderItem:(e,o)=>jsx(Pt,{symbol:e.symbol,children: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 jsx(Re,{...e,sharePnLConfig:t.sharePnLConfig})},qs=t=>{let{classNames:e,...o}=t,i=Gt(o);return jsx(ze,{...i,classNames:e,sharePnLConfig:t.sharePnLConfig})};var Ci=t=>{let{t:e}=useTranslation();return useMemo(()=>[{title:e("common.time"),dataIndex:"timestamp",fixed:"left",width:202,render:i=>jsx(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=>jsx(Text,{children:i})},{title:e("positions.Liquidation.column.insFundTransfer"),dataIndex:"transfer_amount_to_insurance_fund",width:202,render:i=>jsx(Text,{children:commifyOptional(i)})},{title:e("common.symbol"),dataIndex:"Symbol",width:202,render:(i,s)=>jsx(Flex,{direction:"column",itemAlign:"start",children:s.positions_by_perp?.map(n=>jsx(Text.formatted,{rule:"symbol",formatString:"base-quote",children:n.symbol}))})},{title:`${e("common.price")} (USDC)`,dataIndex:"Price_(USDC)",width:202,render:(i,s)=>jsx(Flex,{direction:"column",itemAlign:"start",children:s.positions_by_perp?.map(n=>jsx(Ee,{value:n.transfer_price,type:"quote"}))})},{title:e("common.quantity"),dataIndex:"Quantity",width:202,render:(i,s)=>jsx(Flex,{direction:"column",itemAlign:"start",children:s.positions_by_perp?.map(n=>jsx(Ee,{value:n.position_qty,type:"base"}))})},{title:e("positions.Liquidation.column.liquidationFee"),dataIndex:"abs_liquidation_fee",width:202,render:(i,s)=>jsx(Flex,{direction:"column",itemAlign:"start",children:s.positions_by_perp?.map(n=>jsx(Ee,{value:n.abs_liquidation_fee,type:"quote"}))})}],[e])},Ee=t=>jsx(Text,{children:commifyOptional(t.value)});var Si=t=>{let{t:e}=useTranslation();return jsxs(Flex,{width:"100%",justify:"between",children:[jsxs(Flex,{gap:1,children:[jsx(Text,{size:"2xs",intensity:36,children:e("common.price")}),jsx(Text,{size:"2xs",intensity:20,children:"(USDC)"})]}),jsx(Text,{size:"2xs",intensity:80,children:commifyOptional(t.transfer_price)})]})},hi=t=>{let{t:e}=useTranslation();return jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text,{size:"2xs",intensity:36,children:e("common.quantity")}),jsx(Text,{size:"2xs",intensity:80,children:commifyOptional(t.position_qty)})]})},_i=t=>{let{t:e}=useTranslation();return jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text,{size:"2xs",intensity:36,children:e("positions.Liquidation.column.liquidationFee")}),jsx(Text,{size:"2xs",intensity:80,children:commifyOptional(t.abs_liquidation_fee)})]})};var Qe=t=>jsxs(Flex,{direction:"column",width:"100%",gap:2,itemAlign:"start",className:t.classNames?.root,children:[jsx(ks,{...t}),jsx(As,{...t})]},t.item.timestamp),ks=t=>{let{t:e}=useTranslation();return jsxs(Flex,{gap:1,width:"100%",children:[jsxs(Flex,{direction:"column",itemAlign:"start",className:"oui-flex-1",gap:1,children:[jsx(Text.formatted,{size:"2xs",intensity:36,rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:t.item.timestamp}),jsxs(Flex,{gap:1,children:[jsx(Text,{size:"2xs",intensity:36,children:`${e("positions.Liquidation.column.liquidationId")}:`}),jsx(Text,{size:"2xs",intensity:80,children:` ${t.item.liquidation_id}`})]})]}),jsxs(Flex,{direction:"column",itemAlign:"end",className:"oui-flex-1",children:[jsx(Text,{size:"2xs",intensity:36,children:`${e("positions.Liquidation.column.insFundTransfer")}:`}),jsx(Text,{intensity:80,size:"xs",children:commifyOptional(t.item.transfer_amount_to_insurance_fund)})]})]})},As=t=>jsx(Flex,{direction:"column",width:"100%",children:t.item.positions_by_perp?.map((e,o)=>jsx(Hs,{isLast:o===t.item.positions_by_perp.length-1,...e},`${o}-${e.symbol}`))}),Hs=t=>jsxs(Flex,{width:"100%",itemAlign:"start",className:cn("oui-border-t-[1px] oui-border-line-6 oui-pt-2",!t.isLast&&"oui-pb-2"),children:[jsx(Text.formatted,{rule:"symbol",formatString:"base-quote",size:"xs",intensity:80,className:"oui-flex-1",children:t.symbol}),jsxs(Grid,{cols:1,rows:3,width:"100%",gap:1,className:"oui-flex-1",children:[jsx(Si,{...t}),jsx(hi,{...t}),jsx(_i,{...t})]})]},t.key);var $e=t=>({...t});var Ve=t=>{let{classNames:e,...o}=t,i=$e(o);return jsx(Qe,{classNames:e,...i})};var Ke=t=>{let e=Ci();return jsxs(Flex,{direction:"column",width:"100%",height:"100%",itemAlign:"start",children:[jsxs(Flex,{gap:3,children:[t.filterItems.length>0&&jsx(DataFilter,{items:t.filterItems,onFilter:o=>{t.onFilter(o);}}),[1,7,30,90].map(o=>jsxs("button",{className:"oui-relative oui-px-2 oui-py-[2px] oui-text-sm",children:[jsx("div",{className:"oui-z-10",children:jsx(Text.gradient,{color:t.filterDays===o?"brand":void 0,className:t.filterDays!==o?"oui-text-base-contrast-54":"",children:`${o}D`})}),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);}})]}))]}),jsx(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=>jsxs(Grid,{cols:1,rows:2,className:"oui-grid-rows-[auto,1fr] oui-w-full",gap:1,children:[jsx(Flex,{gap:2,p:2,className:"oui-bg-base-9 oui-rounded-b-xl",children:jsx(DataFilter,{className:"oui-pt-0 oui-pb-0 oui-border-none",items:t.filterItems,onFilter:e=>{t.onFilter(e);}})}),jsx(ListView,{className:cn("oui-w-full oui-hide-scrollbar oui-overflow-y-hidden oui-space-y-0",t.classNames?.root),contentClassName:cn("!oui-space-y-1",t.classNames?.content),dataSource:t.dataSource,loadMore:t.loadMore,renderItem:(e,o)=>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}=usePagination({pageSize:10}),{dateRange:l,filterDays:u,updateFilterDays:c,filterItems:d,onFilter:b}=Js();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:useDataTap(S,{fallbackData:[]}),isLoading:f,loadMore:P,pagination:a(m),dateRange:l,filterDays:u,updateFilterDays:c,filterItems:d,onFilter:b}},Ys=t=>{let e=usePrivateInfiniteQuery(Zs(t),{initialSize:1,formatter:r=>r,revalidateOnFocus:true}),o=useMemo(()=>e.data?.[0]?.meta,[e.data?.[0]]),i=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(subDays(new Date,89))}),[e,o]=useState(90),[i,s]=useState(t),n=u=>{o(u),s({from:B(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(differenceInDays(c.from,c.to))+1,S={1:{from:B(new Date),to:M(new Date)},7:{from:B(subDays(new Date,6)),to:M(new Date)},30:{from:B(subDays(new Date,29)),to:M(new Date)},90:{from:B(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}=useScreen();return {filterItems:useMemo(()=>{let u={type:"range",name:"dateRange",value:i,fromDate:B(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 jsx(Ke,{...e})},ta=t=>{let{classNames:e,...o}=t,i=te(o);return jsx(Xe,{classNames:e,...i})};var oa="MarketCloseConfirmID";registerSimpleDialog(oa,qt,{size:"md",closable:false});
16
+ var bo=createContext({}),A=()=>useContext(bo),xt=t=>{let e=useSymbolsInfo()[t.symbol];return jsx(bo.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 So=createContext({}),B=()=>useContext(So),Gt=t=>{let{position:e}=t,{t:o}=useTranslation(),[i,r]=useState(Math.abs(e.position_qty).toString()),[n,a]=useState(""),[s,l]=useState(OrderType.MARKET);useEffect(()=>{r(Math.abs(e.position_qty).toString());},[e.position_qty]);let c=e.symbol,u=useSymbolsInfo(),m=u?.[c],d=m("quote_dp"),P=m("base_dp"),y=m("base_tick"),{side:b,closeOrderData:_,submit:T,isMutating:F,errors:v,calculate:w}=usePositionClose({position:e,order:{type:s,quantity:i,price:n}}),G=useCallback(M=>{let p=w({},"order_quantity",M,e.mark_price,m());r(p.order_quantity);},[w,u,e.mark_price]),S=useCallback(M=>{let p=w({},"order_price",M,e.mark_price,m());a(p.order_price);},[w,u,e.mark_price]),k=useCallback((M,p)=>{if(l(M),M===OrderType.LIMIT){if(!p)throw new Error(o("orderEntry.orderPrice.error.required"));a(p);}else a("");},[]),O=useCallback(async()=>T().then(M=>{if(M.success)return t.mutatePositions?.(),M;throw M.message&&toast.error(M.message),true}).catch(M=>(M.message&&toast.error(M.message),false)),[T]);return jsx(So.Provider,{value:{quantity:i,price:n,type:s,side:b,position:e,updatePriceChange:S,updateQuantity:G,updateOrderType:k,tpslOrder:e.algo_order,onSubmit:O,submitting:F,closeOrderData:_,quoteDp:d,baseDp:P,baseTick:y,errors:v},children:t.children})};var Lo=()=>{let[t,e]=useState(false),{onSubmit:o,price:i,quantity:r,closeOrderData:n,type:a,submitting:s,quoteDp:l,errors:c}=B(),{base:u}=A(),[m]=useLocalStorage("orderly_order_confirm",true),{t:d}=useTranslation(),{parseErrorMsg:P}=useOrderEntryFormErrorMsg(c),y=()=>o().then(()=>{e(false);}),b=()=>{e(false);},_=useMemo(()=>a===OrderType.MARKET?!r:!i||!r,[i,r,a]);return jsxs(Fragment,{children:[jsx(Button,{variant:"outlined",size:"sm",color:"secondary",disabled:_||s,loading:s,onClick:T=>{T.stopPropagation();let F=P("order_quantity"),v=P("order_price"),w=F||v;if(w){toast.error(w);return}if(!m){o();return}e(true);},children:d("positions.column.close")}),jsx(SimpleDialog,{open:t,onOpenChange:e,size:"sm",children:a===OrderType.MARKET?jsx(At,{base:u,quantity:r,onClose:b,onConfirm:y,submitting:s,classNames:{root:"oui-items-start"},hideCloseIcon:true}):jsx(de,{base:u,quantity:r,price:i,onClose:b,onConfirm:y,submitting:s,quoteDp:l,order:n,hideCloseIcon:true})})]})},Do=t=>{let{hideCloseIcon:e=false}=t;return jsxs("div",{className:"oui-pb-3 oui-border-b oui-border-line-4 oui-relative oui-w-full",children:[jsx(Text,{size:"base",children:t.title}),!e&&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:jsx(CloseIcon,{size:18,color:"white"})})]})},Io=({onCancel:t,onConfirm:e,submitting:o})=>{let{t:i}=useTranslation();return jsxs(Flex,{id:"oui-positions-confirm-footer",gap:2,width:"100%",className:"oui-mt-3 oui-pb-1",children:[jsx(Button,{id:"oui-positions-confirm-footer-cancel-button",color:"secondary",fullWidth:true,onClick:t,size:"md",children:i("common.cancel")}),jsx(ThrottledButton,{id:"oui-positions-confirm-footer-confirm-button",onClick:e,fullWidth:true,loading:o,size:"md",children:i("common.confirm")})]})},Ln=t=>{let{quantity:e,price:o,quoteDp:i,side:r}=t,{t:n}=useTranslation(),a=useMemo(()=>o&&e?new Decimal(o).mul(e).toFixed(i,Decimal.ROUND_DOWN):"--",[o,e]);return jsxs(Flex,{direction:"column",gap:1,width:"100%",className:"oui-text-sm oui-text-base-contrast-54",py:5,children:[jsxs(Flex,{justify:"between",width:"100%",gap:1,children:[jsx(Text,{children:n("common.qty")}),jsx(Text,{color:r===OrderSide.BUY?"success":"danger",children:e})]}),jsxs(Flex,{justify:"between",width:"100%",gap:1,children:[jsx(Text,{children:n("common.price")}),jsx(Text.formatted,{intensity:98,suffix:jsx(Text,{intensity:54,children:"USDC"}),children:o})]}),jsxs(Flex,{justify:"between",width:"100%",gap:1,children:[jsx(Text,{children:n("common.notional")}),jsx(Text.formatted,{intensity:98,suffix:jsx(Text,{intensity:54,children:"USDC"}),children:a})]})]})},At=t=>{let{t:e}=useTranslation(),o=()=>{(t?.onClose??t.close)?.();};return jsxs(Flex,{direction:"column",className:t.classNames?.root,children:[jsx(Do,{onClose:o,title:e("positions.marketClose"),hideCloseIcon:t.hideCloseIcon}),jsx(Text,{intensity:54,size:"sm",className:"oui-my-5",children:e("positions.marketClose.description",{quantity:commifyOptional(t.quantity),base:t.base})}),jsx(Io,{onCancel:o,onConfirm:async()=>{await t.onConfirm?.(),o();},submitting:t.submitting})]})},de=t=>{let{order:e,quoteDp:o,quantity:i,price:r,submitting:n}=t,{side:a}=e,{t:s}=useTranslation(),l=()=>{t.onClose?.();};return jsxs(Fragment,{children:[jsx(Do,{onClose:l,title:s("positions.limitClose"),hideCloseIcon:t.hideCloseIcon}),jsx(Box,{mt:5,children:jsx(Text,{intensity:54,size:"sm",children:s("positions.limitClose.description",{quantity:commify(t.quantity),base:t.base})})}),jsxs(Flex,{gap:2,mb:4,mt:5,justify:"between",children:[jsx(Text.formatted,{rule:"symbol",formatString:"base-type",size:"base",showIcon:true,children:e.symbol}),jsxs(Flex,{gap:1,children:[jsx(Badge,{color:"neutral",size:"xs",children:s("orderEntry.orderType.limit")}),jsx(Badge,{color:a===OrderSide.BUY?"success":"danger",size:"xs",children:a===OrderSide.BUY?s("common.buy"):s("common.sell")})]})]}),jsx(Divider,{className:"oui-w-full"}),jsx(Ln,{className:"oui-text-sm",price:r,quantity:i,side:e.side,quoteDp:o??2}),jsx(Io,{onCancel:l,onConfirm:t.onConfirm,submitting:t.submitting})]})};function Mo(t,e){let o=useRef(),i=useRef(e);i.current=e,useEffect(()=>{let r={root:null,rootMargin:"0px",threshold:0},n=a=>{a.forEach(s=>{s.isIntersecting&&i.current?.();});};return o.current=new IntersectionObserver(n,r),()=>{o.current?.disconnect();}},[]),useEffect(()=>{o.current?.observe(t.current);},[]);}var Ro=t=>{let e=useRef(null),{onEndReached:o}=t;return Mo(e,()=>{o?.();}),jsxs(Fragment,{children:[t.children,jsx("div",{ref:e,className:"oui-relative oui-invisible oui-h-[25px] oui-bg-red-400 oui-top-[-300px]"})]})};var Kt=({total:t,symbol:e,start_t:o,end_t:i})=>{let{t:r}=useTranslation(),{isMobile:n}=useScreen(),{isLoading:a,data:s,setSize:l}=usePrivateInfiniteQuery((d,P)=>P&&!P.length?null:`/v1/funding_fee/history?page=${d}&symbol=${e}&start_t=${o}&end_t=${i}`,{revalidateFirstPage:false}),c=useCallback(()=>{l(d=>d+1);},[l]),u=useMemo(()=>Array.isArray(s)?s.flat().map(d=>({...d,funding_fee:-d.funding_fee})):[],[s]),m=useMemo(()=>n?jsx(En,{data:u??[],isLoading:a,loadMore:c}):jsx(Hn,{data:u??[],isLoading:a,loadMore:c}),[n,u,a]);return jsxs("div",{children:[jsxs(Grid,{cols:2,gapX:3,className:"oui-sticky oui-top-0 oui-z-10 oui-bg-base-8 oui-py-4",children:[jsx("div",{className:"oui-rounded-lg oui-border oui-border-line-6 oui-bg-base-9 oui-p-3",children:jsxs(Flex,{direction:"column",gap:1,itemAlign:"start",children:[jsx("span",{className:"oui-text-2xs oui-text-base-contrast-36",children:r("common.symbol")}),jsx(Text.formatted,{rule:"symbol",className:"oui-font-semibold",intensity:98,children:e})]})}),jsx("div",{className:"oui-rounded-lg oui-border oui-border-line-6 oui-bg-base-9 oui-p-3",children:jsx(Statistic,{label:`${r("funding.fundingFee")} (USDC)`,valueProps:{ignoreDP:true,coloring:true,showIdentifier:true},children:t})})]}),m]})},Hn=({isLoading:t,data:e,loadMore:o})=>{let{t:i}=useTranslation(),r=useMemo(()=>[{title:i("common.time"),dataIndex:"created_time",width:120,render:n=>jsx(Text.formatted,{rule:"date",children:n})},{title:i("funding.fundingRate"),dataIndex:"funding_rate",formatter:n=>new Decimal(n).mul(100).toString(),render:n=>jsx("span",{children:`${n}%`})},{title:i("funding.paymentType"),dataIndex:"payment_type",formatter:n=>i(n==="Pay"?"funding.paymentType.paid":"funding.paymentType.received"),render:n=>jsx("span",{children:n})},{title:`${i("funding.fundingFee")} (USDC)`,dataIndex:"funding_fee",render:n=>jsx(Text.numeral,{rule:"price",coloring:true,showIdentifier:true,ignoreDP:true,children:n})}],[i]);return jsx("div",{className:"oui-h-[calc(80vh_-_132px_-_8px)] oui-overflow-y-auto",children:jsx(Ro,{onEndReached:o,children:jsx(DataTable,{classNames:{root:cn("oui-h-auto oui-bg-base-8 oui-text-sm")},columns:r,dataSource:e??[],loading:t})})})},En=({data:t,isLoading:e,loadMore:o})=>{let i=useCallback(r=>jsx(zn,{item:r}),[]);return jsx("div",{className:"oui-h-[calc(80vh_-_104px)] oui-overflow-y-auto",children:jsx(ListView,{dataSource:t,renderItem:i,isLoading:e,contentClassName:"oui-space-y-0",loadMore:o})})},zn=({item:t})=>{let{t:e}=useTranslation();return jsxs("div",{className:"oui-flex oui-flex-col oui-space-y-2 oui-border-t oui-border-line-6 oui-py-2",children:[jsxs(Flex,{justify:"between",children:[jsx(Statistic,{label:e("funding.fundingRate"),classNames:{label:"oui-text-2xs"},valueProps:{ignoreDP:true,rule:"percentages",className:"oui-text-xs"},children:t.funding_rate}),jsx(Statistic,{label:e("common.amount"),className:"oui-items-end",classNames:{label:"oui-text-2xs"},valueProps:{ignoreDP:true,coloring:true,as:"div",className:"oui-text-xs",showIdentifier:true},children:t.funding_fee})]}),jsxs(Flex,{justify:"between",children:[jsx(Text.formatted,{rule:"date",className:"oui-text-base-contrast-36",size:"2xs",children:t.created_time}),jsx(Text,{size:"sm",intensity:80,children:t.payment_type==="Pay"?e("funding.paymentType.paid"):e("funding.paymentType.received")})]})]})};var nt=({fee:t,symbol:e,start_t:o,end_t:i})=>{let{t:r}=useTranslation(),[n,{setTrue:a,setFalse:s}]=useBoolean(false),{isMobile:l}=useScreen();return jsxs(Fragment,{children:[jsx("button",{onClick:a,children:jsx(Text.numeral,{rule:"price",coloring:true,showIdentifier:true,ignoreDP:true,className:"oui-border-b oui-border-line-16 oui-border-dashed oui-py-0.5",children:t})}),l?jsx(SimpleSheet,{open:n,onOpenChange:s,title:r("funding.fundingFee"),classNames:{body:"oui-max-h-[80vh] oui-py-0"},children:jsx(Kt,{total:t,symbol:e,start_t:o,end_t:i})}):jsx(SimpleDialog,{open:n,onOpenChange:s,title:r("funding.fundingFee"),classNames:{content:"lg:oui-max-w-[640px]",body:"oui-max-h-[80vh] oui-bg-base-8 lg:oui-py-0"},children:jsx(Kt,{total:t,symbol:e,start_t:o,end_t:i})})]})};var er=(t,e)=>{let o=useConfig("apiBaseUrl");return i=>(r,n,a)=>{try{return i(r,async l=>{let c=Array.isArray(l)?l[0]:l,u=`${o}${c}`,m=t.signer,d={method:"GET",url:c},P=await m.sign(d,getTimestamp()),y=Array.isArray(e)?e:[e];return Promise.all(y.map(b=>n(u,{headers:{...P,"orderly-account-id":b}})))},a)}catch(s){throw s}}},ko=(t,e)=>{let{formatter:o,accountId:i,...r}=e||{},{state:n,account:a}=useAccount(),s=Array.isArray(e?.use)?e?.use??[]:[],l=Array.isArray(i)?i:[i],c=l.filter(Boolean).length&&(n.status>=AccountStatusEnum.EnableTrading||n.status===AccountStatusEnum.EnableTradingWithoutConnected);return useSWR(()=>c?[t,l]:null,(u,m)=>fetcher(u,m,{formatter:o}),{...r,use:[...s,er(a,l)],onError:()=>{}})};var Bo=t=>{let{symbol:e,calcMode:o,includedPendingOrder:i,pnlNotionalDecimalPrecision:r,sharePnLConfig:n,onSymbolChange:a,selectedAccount:s}=t,{pagination:l,setPage:c}=usePagination({pageSize:50});useEffect(()=>{c(1);},[e]);let u=useSymbolsInfo(),{state:m}=useAccount(),[d,,{isLoading:P}]=usePositionStream(e,{calcMode:o,includedPendingOrder:i}),{data:y=[],isLoading:b,mutate:_}=usePrivateQuery("/v1/client/aggregate/positions",{errorRetryCount:3}),{data:T=[],isLoading:F}=ko("/v1/client/info",{accountId:y.map(O=>O.account_id),revalidateOnFocus:false}),v=produce(y,O=>{for(let p of O){let Mt=u[p.symbol],Rt=positions.notional(p.position_qty,p.mark_price),$t=T.find(nn=>nn.account_id===p.account_id),po=positions.MMR({baseMMR:Mt?.("base_mmr"),baseIMR:Mt?.("base_imr"),IMRFactor:$t?.imr_factor[p.symbol]??0,positionNotional:Rt,IMR_factor_power:4/5}),en=positions.maintenanceMargin({positionQty:p.position_qty,markPrice:p.mark_price,MMR:po}),fo=positions.unrealizedPnL({qty:p.position_qty,openPrice:p?.average_open_price,markPrice:p.mark_price}),yo=account.IMR({maxLeverage:$t?.max_leverage??1,baseIMR:Mt?.("base_imr"),IMR_Factor:$t?.imr_factor[p.symbol]??0,positionNotional:Rt,ordersNotional:0,IMR_factor_power:4/5}),on=positions.unrealizedPnLROI({positionQty:p.position_qty,openPrice:p.average_open_price,IMR:yo,unrealizedPnL:fo}),go=0,xo=0;p.index_price&&(go=positions.unrealizedPnL({qty:p.position_qty,openPrice:p?.average_open_price,markPrice:p.index_price}),xo=positions.unrealizedPnLROI({positionQty:p.position_qty,openPrice:p.average_open_price,IMR:yo,unrealizedPnL:go})),p.mmr=po,p.mm=en,p.notional=Rt,p.unrealized_pnl=fo,p.unrealized_pnl_ROI=on,p.unrealized_pnl_ROI_index=xo;}let M=O.findIndex(p=>p.account_id===m.mainAccountId);M!==-1&&O.splice(M,1);}),w=useDataTap([...d?.rows,...v].filter(O=>O.position_qty!==0))??[],G=useMemo(()=>!s||s==="All accounts"?w:w.filter(O=>s==="Main accounts"?O.account_id===m.mainAccountId||!O.account_id:O.account_id===s),[w,s,m.mainAccountId]),S=useMemo(()=>pr(G,{mainAccountId:m.mainAccountId,subAccounts:m.subAccounts}),[G,m.mainAccountId,m.subAccounts]),k=useMemo(()=>P||b||F,[P,b,F]);return {tableData:S,isLoading:k,pnlNotionalDecimalPrecision:r,sharePnLConfig:n,symbol:e,onSymbolChange:a,pagination:l,mutatePositions:_}},pr=(t,e)=>{let{mainAccountId:o="",subAccounts:i=[]}=e,r=new Map;for(let n of t){let a=n.account_id||o,s=i.find(l=>l.id===a);r.has(a)?r.get(a)?.children?.push(n):r.set(a,{id:a,description:a===o?i18n.t("common.mainAccount"):s?.description||formatAddress(s?.id||""),children:[n]});}return {expanded:Array.from(r.keys()),dataSource:Array.from(r.values())}};var be=t=>{let{symbol:e,calcMode:o,includedPendingOrder:i,pnlNotionalDecimalPrecision:r,sharePnLConfig:n,onSymbolChange:a}=t,{pagination:s,setPage:l}=usePagination({pageSize:50});fr.useEffect(()=>{l(1);},[e]);let[c,,{isLoading:u}]=usePositionStream(e,{calcMode:o,includedPendingOrder:i});return {dataSource:useDataTap(c?.rows,{fallbackData:[]})??void 0,isLoading:u,pnlNotionalDecimalPrecision:r,sharePnLConfig:n,symbol:e,onSymbolChange:a,pagination:s}};var Eo=()=>{let{position:t,baseDp:e,quoteDp:o,tpslOrder:i}=B(),{t:r}=useTranslation();return jsx(PositionTPSLPopover,{position:t,order:i,label:r("common.tpsl"),baseDP:e,quoteDP:o,isEditing:false})},zo=()=>{let{position:t,baseDp:e,quoteDp:o,tpslOrder:i}=B();return jsx(PositionTPSLPopover,{position:t,order:i,baseDP:e,quoteDP:o,isEditing:true,children:jsx(EditIcon,{opacity:1,className:"oui-cursor-pointer oui-text-base-contrast-54",size:16})})};var Uo=()=>{let{type:t,quoteDp:e,price:o,updatePriceChange:i,updateOrderType:r,position:n}=B(),[,a]=useState(false),{t:s}=useTranslation();return jsxs(DropdownMenuRoot,{children:[jsx(Input,{size:"sm",value:t===OrderType.LIMIT?o:s("orderEntry.orderType.market"),onValueChange:l=>i(l),formatters:[inputFormatter.numberFormatter,...e?[inputFormatter.dpFormatter(e)]:[]],onFocus:l=>{t===OrderType.MARKET&&r(OrderType.LIMIT,`${n.mark_price}`),a(true);},onBlur:l=>{setTimeout(()=>{a(false);},100);},suffix:jsx(DropdownMenuTrigger,{asChild:true,children:jsx("button",{className:"oui-h-full oui-px-1",children:jsx(CaretDownIcon,{size:12,color:"white"})})}),classNames:{root:cn("oui-outline-line-12 focus-within:oui-outline-primary-light")}}),jsx(DropdownMenuContent,{align:"end",className:"oui-w-[96px] oui-min-w-[96px]",onCloseAutoFocus:l=>l.preventDefault(),children:jsx(DropdownMenuGroup,{children:jsx(DropdownMenuItem,{size:"xs",onSelect:l=>{r(OrderType.MARKET);},children:jsx("span",{children:s("common.marketPrice")})})})})]})};var Go=t=>{let[e,o]=useState(false),[i,r]=useState(100),{baseDp:n,updateQuantity:a,quantity:s,baseTick:l}=B();useEffect(()=>{let m=d=>{d.target.closest("[data-popover-root]")||o(false);};return document.addEventListener("click",m),()=>{document.removeEventListener("click",m);}},[]);let c=m=>{u(`${t.value*(m/100)}`);},u=m=>{if(l&&l>0){let d=utils.formatNumber(m,l)??m;a(d);}};return jsxs(PopoverRoot,{children:[jsx(PopoverTrigger,{children:jsx(Input,{size:"sm",onFocus:()=>{o(true);},classNames:{root:"oui-outline-line-12 "},formatters:[inputFormatter.numberFormatter,...n?[inputFormatter.dpFormatter(n)]:[]],value:s,onBlur:m=>u(m.target.value),onValueChange:m=>{if(a(m),m=="0"||m==""){r(0);return}let d=new Decimal(m).div(t.value).mul(100).abs().toFixed(0,Decimal.ROUND_DOWN);r(Math.min(100,Number(d)));}})}),jsx(PopoverContent,{className:"oui-w-[360px] oui-rounded-xl",align:"start",side:"bottom",onOpenAutoFocus:m=>{m.preventDefault();},children:jsxs(Flex,{p:1,gap:2,width:"100%",itemAlign:"start",children:[jsx(Text,{size:"xs",intensity:98,className:"oui-min-w-[30px]",children:`${i}%`}),jsxs(Flex,{direction:"column",width:"100%",gap:2,children:[jsx(Slider,{markCount:4,value:[i],onValueChange:m=>{let d=Array.from(m.values());r(d[0]),c(d[0]);}}),jsx(zr,{onClick:m=>{r(m*100),c(m*100);}})]})]})})]})},zr=t=>{let{t:e}=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 jsx(Flex,{gap:2,width:"100%",children:o.map((i,r)=>jsx(Button,{variant:"outlined",color:"secondary",size:"xs",onClick:n=>{n.stopPropagation(),t.onClick(i.value);},className:"oui-w-1/5",children:i.label},r))})};var Ko=t=>{let e=A();return jsx(Text.numeral,{dp:e.base_dp,rm:Decimal.ROUND_DOWN,padding:false,coloring:true,children:t})},Xo=(t,e)=>jsx(Go,{value:e.position_qty}),Yo=t=>jsx(Uo,{});var Yt=t=>{let{tick:e="quote_dp",...o}=t,i=A();if(!i)throw new Error("NumeralWithCtx must be used inside SymbolProvider");return jsx(Text.numeral,{as:"span",...o,dp:i[e]})};var Te=t=>{if(t.sharePnLConfig==null)return jsx(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 Decimal(e.unrealized_pnl_ROI*100).toFixed(2,Decimal.ROUND_DOWN),openPrice:Math.abs(e.average_open_price),markPrice:e.mark_price,openTime:e.timestamp,quantity:e.position_qty};modal.show(t.modalId,{pnl:{entity:{symbol:e.symbol,...i},refCode:t.refCode,...t.sharePnLConfig,leverage:t.isPositionHistory?void 0:t.leverage}});};return jsx("button",{type:"button",onClick:i=>{i.stopPropagation(),o();},children:jsx(ShareIcon,{color:"white",opacity:.54,size:t.iconSize??16})})};var Zo=t=>{let{sharePnLConfig:e,position:o,modalId:i,iconSize:r,isPositionHistory:n}=t,{getFirstRefCode:a}=useReferralInfo(),s=useMemo(()=>a()?.code,[a]),l=useSymbolLeverage(t.position.symbol);return {iconSize:r,position:o,refCode:s,leverage:l,sharePnLConfig:e,modalId:i,isPositionHistory:n}};var rt=t=>{let e=Zo(t);return jsx(Te,{...e})};var oi=t=>{let{stopLossPrice:e,takeProfitPrice:o}=t,{tpslOrder:i,position:r}=B();return jsx(is,{stopLossPrice:e,takeProfitPrice:o,direction:"column",order:i,position:r,tooltip:true})},ti=t=>{let{qty:e,price:o,entryPrice:i,orderSide:r,orderType:n,symbolInfo:a}=t,s=utils.priceToPnl({qty:e,price:o,entryPrice:i,orderSide:r,orderType:n},{symbol:a}),l=n===AlgoOrderType.TAKE_PROFIT?"TP":"SL";return jsxs(Flex,{children:[jsx(Text,{intensity:54,className:"oui-mr-1",children:`${l} PnL:`}),jsx(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:jsx(Text,{children:s===0?"":s>0?"+":"-"}),suffix:jsx(Text,{intensity:36,className:"oui-ml-1",children:"USDC"}),children:`${Math.abs(s)}`})]})},is=t=>{let{direction:e="row",order:o,position:i}=t,r=useSymbolsInfo(),{t:n}=useTranslation(),a=useMemo(()=>{let u=[];if(!t.tooltip||!o||!i)return;let m=o.quantity;return m===0&&o.child_orders[0].type==="CLOSE_POSITION"&&(m=i.position_qty),t.takeProfitPrice&&u.push(jsx(ti,{qty:m,price:t.takeProfitPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:AlgoOrderType.TAKE_PROFIT,symbolInfo:r[o.symbol]()},"tp")),t.stopLossPrice&&u.push(jsx(ti,{qty:m,price:t.stopLossPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:AlgoOrderType.STOP_LOSS,symbolInfo:r[o.symbol]()},"sl")),jsx("div",{children:u})},[t.takeProfitPrice,t.stopLossPrice,i?.average_open_price,o?.side,o?.quantity,o?.algo_type]),s=useMemo(()=>{let u=[];if(!o?.symbol)return jsx("span",{children:"-"});return t.takeProfitPrice&&u.push(jsx(Text.formatted,{className:cn("oui-text-trade-profit oui-gap-0 oui-decoration-white/20"),rule:"price",dp:r[o.symbol]("quote_dp",2),children:t.takeProfitPrice,prefix:!t.stopLossPrice||e==="column"?jsx(Text,{intensity:54,children:`${n("tpsl.tp")} - `}):""},"tp")),t.stopLossPrice&&u.push(jsx(Text.formatted,{className:cn("oui-text-trade-loss oui-gap-0 oui-decoration-white/20 "),rule:"price",dp:r[o.symbol]("quote_dp",2),children:t.stopLossPrice,prefix:!t.takeProfitPrice||e==="column"?jsx(Text,{intensity:54,children:`${n("tpsl.sl")} - `}):""},"sl")),u.length===0?jsx(Text,{children:"-"}):(u.length===2&&e==="row"&&u.splice(1,0,jsx(Text,{children:"/"},"split")),u)},[t.takeProfitPrice,t.stopLossPrice,o?.symbol,n]),l=jsx("div",{className:cn("oui-inline-flex oui-text-base-contrast-36",t.direction==="column"?"oui-flex-col":"oui-flex-row oui-gap-1",t.className),children:s}),c=Array.isArray(s)?!!s.length:!s;return t.tooltip?jsxs(Flex,{gapX:2,children:[jsx(Tooltip,{content:a,children:l}),c&&jsx(zo,{})]}):l};var ai=t=>{let[e,o]=useLocalStorage("unPnlPriceBasis","markPrice"),{t:i}=useTranslation();return jsxs(Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-items-start",children:[jsx(Text,{children:i("positions.column.unrealPnl.tooltip")}),jsx(Divider,{className:"oui-w-full"}),jsx("div",{className:"oui-mb-0",children:i("positions.column.unrealPnl.priceBasis")}),jsx(ss,{value:e,onValueChange:o})]})},ss=t=>{let{value:e,onValueChange:o}=t,{t:i}=useTranslation();return jsxs(Flex,{gap:2,children:[jsx(ni,{sel:e==="markPrice",label:i("common.markPrice"),value:"markPrice",onCheckChange:o}),jsx(ni,{sel:e==="lastPrice",label:i("common.lastPrice"),value:"lastPrice",onCheckChange:o})]})},ni=t=>{let{sel:e,label:o,value:i,onCheckChange:r}=t;return jsxs(Flex,{onClick:n=>{r(i),n.stopPropagation();},gap:1,className:"oui-cursor-pointer",children:[e?jsx(as,{}):jsx(ls,{}),jsx(Text,{size:"xs",intensity:e?98:54,children:o})]})},as=()=>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:[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"}),jsx("circle",{cx:"8",cy:"8",r:"3.333"})]}),ls=()=>jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children: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 De=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:i}=t,{t:r}=useTranslation(),n=useRef(Date.now().toString());return useMemo(()=>[{title:r("common.symbol"),dataIndex:"symbol",fixed:"left",width:140,onSort:(s,l)=>s.symbol.localeCompare(l.symbol),render:(s,l)=>jsxs(Flex,{gap:2,children:[jsx(Box,{width:4,height:20,className:cn("oui-rounded-[1px]",l.position_qty>0?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsx(Text.formatted,{formatString:"base-type",className:"oui-cursor-pointer",onClick:c=>{i?.({symbol:s}),c.stopPropagation(),c.preventDefault();},children:`${s.split("_")[1]}-PERP`})]})},{title:r("common.quantity"),dataIndex:"position_qty",onSort:(s,l)=>s.position_qty-l.position_qty,width:120,className:"oui-pl-6",render:Ko},{title:r("common.avgOpen"),className:"oui-h-[48px]",width:120,onSort:true,dataIndex:"average_open_price",render:s=>jsx(Yt,{rm:Decimal.ROUND_DOWN,children:s})},{title:r("common.markPrice"),dataIndex:"mark_price",width:120,onSort:true,className:"oui-h-[48px]",render:s=>jsx(Yt,{rm:Decimal.ROUND_DOWN,children:s})},{title:jsx(Tooltip,{className:"oui-max-w-[280px] oui-bg-base-8 oui-p-3 oui-text-2xs oui-text-base-contrast-54",content:r("positions.column.liqPrice.tooltip"),children:jsx(Text,{children:r("positions.column.liqPrice")})}),width:100,onSort:true,dataIndex:"est_liq_price",render:s=>Number(s)===0?"--":jsx(Yt,{rm:Decimal.ROUND_DOWN,className:Number(s)>0?"oui-text-warning-light":"",children:s??"--"})},{title:jsx(HoverCard,{content:jsx(ai,{}),side:"top",align:"center",className:"oui-max-w-[280px] oui-text-2xs",children:jsx(Text,{children:r("common.unrealizedPnl")})}),dataIndex:"unrealized_pnl",width:180,onSort:true,rule:"price",numeralProps:{coloring:true},render:(s,l)=>jsxs(Flex,{gap:2,children:[jsxs(Flex,{children:[jsx(Text.numeral,{dp:e,rm:Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",children:s}),jsx(Text.numeral,{rule:"percentages",dp:e,rm:Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",prefix:"(",suffix:")",children:l.unrealized_pnl_ROI})]}),jsx(rt,{position:l,sharePnLConfig:o,modalId:SharePnLDialogId})]})},{title:r("common.tpsl"),dataIndex:"__",width:150,render:(s,l)=>jsx(oi,{stopLossPrice:l.sl_trigger_price,takeProfitPrice:l.tp_trigger_price})},{title:r("common.notional"),dataIndex:"notional",className:"oui-h-[48px]",width:100,onSort:true,render:s=>jsx(Text.numeral,{dp:e,children:s})},{title:jsx(Tooltip,{className:"oui-max-w-[280px] oui-bg-base-8 oui-p-3 oui-text-2xs oui-text-base-contrast-54",content:jsxs(Flex,{direction:"column",gap:3,className:"oui-rounded-sm oui-bg-base-8 oui-text-base-contrast-54",children:[jsx("span",{children:r("positions.column.margin.tooltip")}),jsx(Divider,{className:"oui-w-full"}),jsx("span",{children:r("positions.column.margin.formula")})]}),children:jsx(Text,{children:r("positions.column.margin")})}),dataIndex:"mm",onSort:true,width:100,rule:"price",render:s=>jsx(Text.numeral,{children:s})},{title:r("funding.fundingFee"),dataIndex:"fundingFee",width:100,render:(s,l)=>jsx(nt,{fee:s,symbol:l.symbol,start_t:l.timestamp.toString(),end_t:n.current})},{title:r("common.qty"),dataIndex:"close_qty",width:100,fixed:"right",render:Xo},{title:r("common.price"),dataIndex:"close_price",width:100,fixed:"right",render:Yo},{title:null,dataIndex:"close_position",align:"right",width:160,fixed:"right",render(){return jsxs(Flex,{gapX:2,justify:"end",children:[jsx(Lo,{}),jsx(Eo,{})]})}}],[e,o,r])};var ve=t=>{let{item:e,sheetOpen:o,setSheetOpen:i,dialogOpen:r,setDialogOpen:n,updatePriceChange:a,base:s,quantity:l,price:c,onClose:u,onConfirm:m,submitting:d,quote_dp:P,closeOrderData:y,onCloseDialog:b}=t,_=e.position_qty>0,{t:T}=useTranslation(),{parseErrorMsg:F}=useOrderEntryFormErrorMsg(t.errors),v=F("order_quantity"),w=F("order_price"),G=S=>{if(t.baseTick&&t.baseTick>0){let k=utils.formatNumber(S,t.baseTick)??S;t.updateQuantity(k);}};return jsxs(Fragment,{children:[jsx(Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:()=>{a("limit"),i(true);},children:T("positions.limitClose")}),o&&jsx(SimpleSheet,{title:T("positions.limitClose"),open:o,onOpenChange:i,children:jsxs(Flex,{direction:"column",gap:3,width:"100%",itemAlign:"start",className:"oui-text-sm",children:[jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text.formatted,{rule:"symbol",showIcon:true,children:e.symbol}),jsxs(Flex,{gap:1,children:[jsx(Badge,{color:"neutral",size:"xs",children:T("orderEntry.orderType.limit")}),_&&jsx(Badge,{color:"success",size:"xs",children:T("common.buy")}),!_&&jsx(Badge,{color:"danger",size:"xs",children:T("common.sell")})]})]}),jsx(Divider,{className:"oui-w-full"}),jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text,{intensity:54,children:T("common.lastPrice")}),jsx(Text.numeral,{dp:t.item?.symbolInfo?.quote_dp,suffix:jsx(Text,{intensity:36,children:" USDC"}),children:t.curMarkPrice})]}),jsxs(Flex,{width:"100%",direction:"column",gap:2,children:[jsx(Input.tooltip,{prefix:T("common.price"),suffix:t.quote,align:"right",fullWidth:true,autoComplete:"off",formatters:[inputFormatter.numberFormatter,inputFormatter.dpFormatter(t.quote_dp)],triggerClassName:"oui-w-full",tooltip:w,color:w?"danger":void 0,value:t.price,onValueChange:S=>t.updatePriceChange(S),classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:cn("oui-outline-line-12 oui-w-full",w?"oui-outline-danger":void 0)}}),jsx(Input,{prefix:T("common.quantity"),suffix:t.base,align:"right",fullWidth:true,autoComplete:"off",formatters:[inputFormatter.numberFormatter,inputFormatter.dpFormatter(t.base_dp)],value:t.quantity,onBlur:S=>G(S.target.value),onValueChange:S=>{t.updateQuantity(S);let k=new Decimal(S).div(t.item.position_qty).mul(100).toDecimalPlaces(2,Decimal.ROUND_DOWN).toNumber();t.setSliderValue(k);},classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:cn("oui-outline-line-12 oui-w-full")}}),jsx(Slider,{markCount:4,value:[t.sliderValue],color:"primary",onValueChange:S=>{t.setSliderValue(S[0]);let k=new Decimal(S[0]).div(100).mul(t.item.position_qty).toFixed(t.base_dp,Decimal.ROUND_DOWN);G(k);}}),jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text,{color:"primary",size:"2xs",children:`${t.sliderValue}%`}),jsxs(Flex,{gap:1,children:[jsx(Text,{size:"2xs",color:"primary",children:T("common.max")}),jsx(Text.numeral,{intensity:54,size:"2xs",children:Math.abs(t.item.position_qty)})]})]})]}),jsxs(Flex,{width:"100%",gap:3,mt:2,children:[jsx(Button,{fullWidth:true,color:"secondary",onClick:S=>{u();},children:T("common.cancel")}),jsx(ThrottledButton,{fullWidth:true,disabled:d,loading:d,onClick:S=>{S.stopPropagation(),S.preventDefault();let k=v||w;if(k){toast.error(k);return}if(!t.orderConfirm){m();return}n(true);},children:T("common.confirm")})]})]})}),r&&jsx(SimpleDialog,{open:r,onOpenChange:n,size:"xs",children:jsx(de,{base:s,quantity:l,price:c,onClose:b,onConfirm:m,submitting:d,quoteDp:P,order:y,hideCloseIcon:true})})]})};var qe=t=>{let{state:e}=t,[o,i]=useState(false),[r,n]=useState(false),{onSubmit:a,price:s,quantity:l,closeOrderData:c,submitting:u,updatePriceChange:m,updateOrderType:d,updateQuantity:P,errors:y,baseTick:b}=B(),_=useRef(false),[T,F]=useState(100),[v]=useLocalStorage("orderly_order_confirm",true),w=()=>a().then($t=>{i(false),n(false);}),G=()=>{i(false);},S=()=>{n(false);},k=useMarkPricesStream(),O=useMemo(()=>k?.data?.[e.item.symbol]??"--",[k]),{quote_dp:M,base_dp:p,base:Mt,quote:Rt}=A();return useEffect(()=>{!_.current&&O&&o&&(_.current=true,d(OrderType.LIMIT,`${O}`));},[_,O,o]),useEffect(()=>{o||(d(OrderType.MARKET),_.current=false);},[o]),{...e,sheetOpen:o,setSheetOpen:i,curMarkPrice:O,quote_dp:M,base_dp:p,base:Mt,quote:Rt,baseTick:b,orderConfirm:v,onClose:G,onConfirm:w,price:s,quantity:l,closeOrderData:c,submitting:u,updatePriceChange:m,updateQuantity:P,errors:y,sliderValue:T,setSliderValue:F,dialogOpen:r,setDialogOpen:n,onCloseDialog:S}};var Me=t=>{let e=qe(t);return jsx(ve,{...e})};var Oe=t=>{let{t:e}=useTranslation();return jsxs(Fragment,{children:[jsx(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(OrderType.MARKET),!t.orderConfirm){t.onConfirm();return}t.setDialogOpen(true);},children:e("positions.marketClose")}),jsx(SimpleDialog,{open:t.dialogOpen,onOpenChange:t.setDialogOpen,size:"xs",children:jsx(At,{base:t.base,quantity:t.quantity,onClose:t.onClose,onConfirm:t.onConfirm,submitting:t.submitting,hideCloseIcon:true})})]})};var Ae=t=>{let e=A(),[o,i]=useState(false),{onSubmit:r,quantity:n,submitting:a,updateOrderType:s,updateQuantity:l}=B(),[c]=useLocalStorage("orderly_order_confirm",true);return {...t,...e,dialogOpen:o,setDialogOpen:i,orderConfirm:c,onSubmit:r,quantity:n,onClose:()=>{i(false);},onConfirm:()=>r().then(d=>{i(false);}),submitting:a,updateOrderType:s,updateQuantity:l}};var ke=t=>{let e=Ae(t);return jsx(Oe,{...e})};var Be=t=>{let{t:e}=useTranslation();return jsx(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 He=t=>{let e=useSymbolsInfo()[t.state.item.symbol](),{tpslOrder:o}=B(),{t:i}=useTranslation();return {openTP_SL:()=>{modal.sheet({title:i("common.tpsl"),content:jsx(PositionTPSLSheet,{position:t.state.item,symbolInfo:e,order:o,isEditing:false})});},...t,...e}};var Ee=t=>{let e=He(t);return jsx(Be,{...e})};var fi=t=>{let{item:e}=t,o=e.position_qty>0,{t:i}=useTranslation();return jsx(Text.formatted,{rule:"symbol",formatString:"base-type",size:"2xs",suffix:jsx(Badge,{color:o?"success":"danger",size:"xs",children:i(o?"common.long":"common.short")}),showIcon:true,onClick:()=>{t.onSymbolChange?.({symbol:e.symbol});},children:e.symbol})},yi=t=>{let{item:e}=t,{t:o}=useTranslation();return jsxs(Flex,{gap:3,children:[jsxs(Flex,{direction:"column",className:"oui-text-2xs",itemAlign:"end",children:[jsxs("div",{children:[jsx(Text,{intensity:36,children:o("common.unrealizedPnl")}),jsx(Text,{intensity:20,children:"(USDC)"})]}),jsx(Text.numeral,{size:"xs",dp:t.pnlNotionalDecimalPrecision,rm:Decimal.ROUND_DOWN,coloring:true,className:"orderly-font-semibold",suffix:jsx(Text.numeral,{rule:"percentages",dp:t.pnlNotionalDecimalPrecision,rm:Decimal.ROUND_DOWN,prefix:"(",suffix:")",className: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})]}),jsx(rt,{position:e,sharePnLConfig:t.sharePnLConfig,modalId:SharePnLBottomSheetId,iconSize:12})]})},gi=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:o("common.qty"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.base_dp,padding:false,coloring:true,children:e.position_qty})})},xi=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:jsxs("span",{children:[o("positions.column.margin"),jsx(Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,intensity:80,children:e.mm})})},bi=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{align:"end",label:jsxs("span",{children:[o("common.notional"),jsx(Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,intensity:80,children:e.notional})})},Pi=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:o("common.avgOpen"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,rm:Decimal.ROUND_DOWN,intensity:80,children:e.average_open_price})})},Ci=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:o("common.markPrice"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,rm:Decimal.ROUND_DOWN,intensity:80,children:e.mark_price})})},Si=t=>{let{item:e}=t,{t:o}=useTranslation(),i=e.est_liq_price&&e.est_liq_price>0?e.est_liq_price:"-";return jsx(Statistic,{label:o("positions.column.liqPrice"),align:"end",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,rm:Decimal.ROUND_DOWN,color:"warning",children:i})})},hi=t=>{let{item:e}=t,{t:o}=useTranslation();return e.tp_trigger_price==null&&e.sl_trigger_price==null?jsx(Fragment,{}):jsxs(Flex,{className:"oui-text-2xs oui-text-base-contrast-36",children:[jsxs(Text,{children:[`${o("common.tpsl")}:`,"\xA0"]}),jsxs(Flex,{className:"oui-gap-[2px]",children:[e.tp_trigger_price&&jsx(Text.numeral,{color:"buy",children:e.tp_trigger_price}),e.sl_trigger_price&&"/",e.sl_trigger_price&&jsx(Text.numeral,{color:"sell",children:e.sl_trigger_price})]})]})},_i=t=>{let{t:e}=useTranslation(),o=useRef(Date.now().toString());return jsxs(Flex,{justify:"end",className:"oui-text-2xs oui-w-full",children:[jsxs(Text,{intensity:36,children:[e("funding.fundingFee"),": "]}),jsx(nt,{fee:t.item.fundingFee,symbol:t.item.symbol,start_t:t.item.timestamp.toString(),end_t:o.current})]})};var ze=t=>{let{className:e,...o}=t;return jsxs(Flex,{direction:"column",width:"100%",gap:2,p:2,r:"xl",itemAlign:"start",className:cn(e,"oui-bg-base-9"),children:[jsx(ia,{...o}),jsx(Divider,{intensity:6,className:"oui-w-full"}),jsx(na,{...o}),jsx(hi,{...o}),jsx(_i,{...o}),jsx(ra,{...o})]})},ia=t=>jsxs(Flex,{justify:"between",width:"100%",children:[jsx(fi,{...t}),jsx(yi,{...t})]}),na=t=>jsxs(Grid,{cols:3,rows:2,gap:2,width:"100%",children:[jsx(gi,{...t}),jsx(xi,{...t}),jsx(bi,{...t}),jsx(Pi,{...t}),jsx(Ci,{...t}),jsx(Si,{...t})]}),ra=t=>jsxs(Grid,{width:"100%",gap:2,cols:3,rows:1,children:[jsx(Ee,{state:t}),jsx(Me,{state:t}),jsx(ke,{state:t})]});var We=t=>{let e=A();return {...t,...e}};var Ue=t=>{let e=We(t);return jsx(ze,{...e,className:t.className})};var Li=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,pagination:i,isLoading:r,dataSource:n,onSymbolChange:a}=t,s=De({pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:a});return jsx(AuthGuardDataTable,{loading:r,id:"oui-desktop-positions-content",columns:s,bordered:true,dataSource:n,generatedRowKey:l=>l.symbol,renderRowContainer:(l,c,u)=>jsx(xt,{symbol:l.symbol,children:jsx(Gt,{position:l,children:u})}),manualPagination:false,pagination:i,testIds:{body:"oui-testid-dataList-position-tab-body"}})},Di=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,dataSource:i,onSymbolChange:r}=t;return jsx(ListView,{className:"oui-hide-scrollbar oui-w-full oui-space-y-0 oui-overflow-y-hidden",contentClassName:"!oui-space-y-1",dataSource:i,renderItem:(n,a)=>jsx(xt,{symbol:n.symbol,children:jsx(Gt,{position:n,children:jsx(Ue,{item:n,index:a,pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:r})})})})},Ii=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,pagination:i,isLoading:r,tableData:n,onSymbolChange:a,mutatePositions:s}=t,l=De({pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:a}),{dataSource:c=[]}=n;return jsx(AuthGuardDataTable,{bordered:true,loading:r,id:"oui-desktop-positions-content",columns:l,dataSource:c,expanded:true,getSubRows:u=>u.children,generatedRowKey:u=>u.id,onCell:(u,m)=>{if((m.children??[]).length>0)return {children:u.id==="symbol"?jsx(Badge,{color:"neutral",size:"xs",children:m?.description||formatAddress(m?.id)}):null}},renderRowContainer:(u,m,d)=>u.symbol?jsx(xt,{symbol:u.symbol,children:jsx(Gt,{position:u,mutatePositions:s,children:d})}):d,manualPagination:false,pagination:i,testIds:{body:"oui-testid-dataList-position-tab-body"}})};var ua=t=>{let e=be(t);return jsx(Li,{...e})},ca=t=>{let e=be(t);return jsx(Di,{...e})},da=t=>{let e=Bo(t);return jsx(Ii,{...e})};var qi=t=>{let{onSymbolChange:e,pnlNotionalDecimalPrecision:o}=t,{t:i}=useTranslation();return useMemo(()=>[{title:i("common.symbol"),dataIndex:"symbol",fixed:"left",width:200,onSort:(n,a)=>n.symbol.localeCompare(a.symbol),render:(n,a)=>jsx(xa,{record:a,onSymbolChange:e})},{title:i("positions.history.column.closed&maxClosed"),dataIndex:"close_maxClose",width:200,render:(n,a)=>jsx(ba,{record:a})},{title:i("positions.history.column.netPnl"),dataIndex:"netPnL",width:140,onSort:(n,a)=>n.netPnL==null||a.netPnL==null?-1:(n.netPnL??0)-(a.netPnL??0),render:(n,a)=>jsxs(Flex,{gapX:1,children:[jsx(Pa,{record:a,pnlNotionalDecimalPrecision:o}),jsx(rt,{position:a,sharePnLConfig:t.sharePnLConfig,modalId:SharePnLDialogId,isPositionHistory:true})]})},{title:i("common.avgPrice"),dataIndex:"avg_open",width:140,render:(n,a)=>{let s=a.avg_open_price!=null?Math.abs(a.avg_open_price):"--",{quote_dp:l}=A();return jsx(Text.numeral,{dp:l,padding:false,children:s})}},{title:i("common.avgClose"),dataIndex:"avg_close",width:175,render:(n,a)=>{let s=a.avg_close_price!=null?Math.abs(a.avg_close_price):"--",{quote_dp:l}=A();return jsx(Text.numeral,{dp:l,padding:false,children:s})}},{title:i("funding.fundingFee"),dataIndex:"accumulated_funding_fee",render:(n,a)=>jsx(nt,{fee:-n,symbol:a.symbol,start_t:a.open_timestamp.toString(),end_t:a.close_timestamp?.toString()})},{title:i("positions.history.column.timeOpened"),dataIndex:"open_timestamp",width:175,onSort:true,render:(n,a)=>jsx(Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:a.open_timestamp})},{title:i("positions.history.column.timeClosed"),dataIndex:"close_timestamp",width:175,onSort:true,render:(n,a)=>a.position_status=="closed"&&a.close_timestamp?jsx(Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:a.close_timestamp??"--"}):"--"},{title:i("positions.history.column.updatedTime"),dataIndex:"last_update_time",width:175,onSort:true,render:(n,a)=>jsx(Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:a.last_update_time})}],[o,i])},xa=t=>{let{record:e,onSymbolChange:o}=t,{t:i}=useTranslation(),r=useMemo(()=>{let n=[],a=e.position_status,s=()=>a==="closed"?i("positions.history.status.closed"):a==="partial_closed"?i("positions.history.status.partialClosed"):capitalizeFirstLetter(a.replace("_"," "));return n.push(jsx(Badge,{color:a!=="closed"?"primaryLight":"neutral",size:"xs",className:"oui-break-normal oui-whitespace-nowrap",children:s()})),e.type==="adl"?n.push(jsx(Badge,{color:"danger",size:"xs",children:i("positions.history.type.adl")})):e.type==="liquidated"&&n.push(jsx(Tooltip,{className:"oui-min-w-[204px] oui-bg-base-5",arrow:{className:"oui-fill-base-5"},content:jsxs(Flex,{direction:"column",itemAlign:"start",className:"oui-text-2xs",children:[e.liquidation_id!=null&&jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("positions.history.liquidated.liquidationId")}),jsx(Text,{intensity:98,children:e.liquidation_id})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("positions.history.liquidated.liquidatorFee")}),jsxs(Text,{color:"lose",children:[e.liquidator_fee>0&&"-",commifyOptional(e.liquidator_fee)]})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("positions.history.liquidated.insFundFee")}),jsxs(Text,{color:"lose",children:[e.insurance_fund_fee>0&&"-",commifyOptional(e.insurance_fund_fee)]})]})]}),children:jsx("div",{children:jsx(Badge,{size:"xs",color:"danger",className:"oui-cursor-pointer",children:jsx("span",{className:"oui-underline oui-decoration-dashed oui-decoration-[1px]",children:i("positions.history.type.liquidated")})})})})),n},[e,i]);return jsxs(Flex,{gap:2,height:48,children:[jsx(Box,{width:4,height:38,className:cn("oui-rounded-[1px] oui-shrink-0",e.side==="LONG"?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsxs(Flex,{direction:"column",itemAlign:"start",children:[jsx(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`}),jsx(Flex,{gap:1,children:r})]})]})},ba=t=>{let{record:e}=t,{base_dp:o}=A();return jsxs(Flex,{gap:1,direction:"column",itemAlign:"start",className:"oui-overflow-hidden oui-whitespace-nowrap oui-text-ellipsis",children:[jsx(Text.numeral,{dp:o,padding:false,children:Math.abs(e.closed_position_qty)}),jsx(Text.numeral,{dp:o,padding:false,className:"oui-truncate",children:Math.abs(e.max_position_qty)})]})},Pa=t=>{let{record:e,pnlNotionalDecimalPrecision:o}=t,{t:i}=useTranslation(),r=e.netPnL!=null?e.netPnL:void 0,n=()=>jsx(Text.numeral,{dp:o,color:e.netPnL!=null?e.netPnL>0?"profit":"lose":void 0,className:r==null?"":"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12",children:r??"--"});return e.netPnL==null?n():jsx(Tooltip,{delayDuration:200,content:jsxs(Flex,{direction:"column",itemAlign:"start",className:"oui-text-2xs",children:[jsx(Text,{intensity:80,children:i("positions.history.column.netPnl")}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("common.realizedPnl")}),jsx(Text,{color:e.realized_pnl>=0?"profit":"lose",className:"oui-cursor-pointer",children:commifyOptional(e.realized_pnl)})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("funding.fundingFee")}),jsx(Text,{color:e.accumulated_funding_fee>0?"lose":"profit",className:"oui-cursor-pointer",children:commifyOptional(-e.accumulated_funding_fee)})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:i("positions.history.netPnl.tradingFee")}),jsx(Text,{color:e.trading_fee>0?"lose":"profit",className:"oui-cursor-pointer",children:commifyOptional(-e.trading_fee)})]})]}),className:"oui-min-w-[204px] oui-bg-base-5",arrow:{className:"oui-fill-base-5"},children:jsx("div",{children:n()})})};function z(t){if(t==null)return t;let e=new Date(t);return e.setHours(0,0,0,0),e}function W(t){if(t==null)return t;let e=new Date(t);return e.setHours(23,59,59,999),e}var Lt=t=>({from:z(t.from),to:W(t.to??t.from)}),Dt=(t,e)=>t.getTime()===e.getTime();var oe=t=>{let{onSymbolChange:e,symbol:o,pnlNotionalDecimalPrecision:i}=t,{state:r}=useAccount(),{data:n,isLoading:a}=usePrivateQuery(o?`/v1/position_history?symbol=${o}&limit=1000`:"/v1/position_history?limit=1000",{formatter(F){return (F.rows??null)?.map(v=>{if(v.realized_pnl!=null&&v.accumulated_funding_fee!=null&&v.trading_fee!=null){let w=v.realized_pnl-v.accumulated_funding_fee-v.trading_fee;return {...v,netPnL:w}}return v})},revalidateOnFocus:true}),{pagination:s,setPage:l}=usePagination({pageSize:10}),{status:c,side:u,dateRange:m,filterDays:d,updateFilterDays:P,filterItems:y,onFilter:b}=Da();useEffect(()=>{l(1);},[c,u,m,d,o]);let _=useMemo(()=>n==null?n:n.filter(F=>{let v=u==="all"?true:F.side.toLowerCase()===u.toLowerCase(),w=c==="all"?true:F.position_status.toLowerCase()===c.toLowerCase(),G=F?.last_update_time??F.open_timestamp,S=m.from&&m.to?G>=m.from.getTime()&&G<=m.to.getTime():true,k=o?F.symbol==o:true;return v&&w&&S&&k}),[c,u,m,n,o]);return {dataSource:useDataTap(_,{accountStatus:r.status===AccountStatusEnum.EnableTradingWithoutConnected?AccountStatusEnum.EnableTradingWithoutConnected:AccountStatusEnum.EnableTrading,fallbackData:[]}),isLoading:a,onSymbolChange:e,pagination:s,filterItems:y,onFilter:b,symbol:o,filterDays:d,updateFilterDays:P,pnlNotionalDecimalPrecision:i}},Da=()=>{let{t}=useTranslation(),[e,o]=useState("all"),[i,r]=useState("all"),n=Lt({to:W(new Date),from:z(subDays(new Date,89))}),[a,s]=useState(90),[l,c]=useState(n),u=y=>{s(y),c({from:z(subDays(new Date,y-1)),to:W(new Date)});},m=y=>{if(y.name==="side"&&r(y.value),y.name==="status"&&o(y.value),y.name==="dateRange"){let b=Lt(y.value);if(c(b),b.from&&b.to){let _=Math.abs(differenceInDays(b.from,b.to))+1,F={1:{from:z(new Date),to:W(new Date)},7:{from:z(subDays(new Date,6)),to:W(new Date)},30:{from:z(subDays(new Date,29)),to:W(new Date)},90:{from:z(subDays(new Date,89)),to:W(new Date)}}[_];F&&Dt(F.from,b.from)&&Dt(F.to,b.to)?s(_):s(null);}}},{isMobile:d}=useScreen();return {filterItems:useMemo(()=>{let y={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},b={type:"range",name:"dateRange",value:l,fromDate:z(subDays(new Date,89)),toDate:W(new Date)},_={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 d?[y,_]:[y,_,b]},[i,e,l]),onFilter:m,side:i,dateRange:l,status:e,filterDays:a,updateFilterDays:u}};var Oi=t=>{let{side:e,symbol:o}=t.item,{t:i}=useTranslation(),r=e==="LONG";return jsx(Text.formatted,{intensity:80,rule:"symbol",formatString:"base-type",size:"sm",prefix:jsx(Badge,{color:r?"success":"danger",size:"xs",children:i(r?"common.buy":"common.sell")}),onClick:()=>{t.onSymbolChange?.({symbol:o});},children:o})};var Ai=t=>{let{item:e}=t,{t:o}=useTranslation(),i=()=>{modal.alert({title:o("positions.liquidation"),message:jsxs(Flex,{direction:"column",width:"100%",gap:2,className:"oui-text-2xs oui-text-base-contrast-54",children:[e.liquidation_id!=null&&jsxs(Flex,{justify:"between",width:"100%",children:[jsx(Text,{children:o("positions.history.liquidated.liquidationId")}),jsx(Text,{intensity:98,children:e.liquidation_id})]}),jsxs(Flex,{justify:"between",width:"100%",children:[jsx(Text,{children:o("positions.history.liquidated.liquidatorFee")}),jsxs(Text,{color:"lose",children:[e.liquidator_fee>0&&"-",commifyOptional(e.liquidator_fee)]})]}),jsxs(Flex,{justify:"between",width:"100%",children:[jsx(Text,{children:o("positions.history.liquidated.insFundFee")}),jsxs(Text,{color:"lose",children:[e.insurance_fund_fee>0&&"-",commifyOptional(e.insurance_fund_fee)]})]})]})});},r=useMemo(()=>{let n=[],a=e.position_status,s=()=>a==="closed"?o("positions.history.status.closed"):a==="partial_closed"?o("positions.history.status.partialClosed"):capitalizeFirstLetter(a.replace("_"," "));return n.push(jsx(Badge,{color:a!=="closed"?"primaryLight":"neutral",size:"xs",children:s()})),e.type==="adl"?n.push(jsx(Badge,{color:"danger",size:"xs",children:o("positions.history.type.adl")})):e.type==="liquidated"&&n.push(jsx(Badge,{size:"xs",color:"danger",className:"oui-cursor-pointer",onClick:i,children:jsx("span",{className:"oui-underline oui-decoration-dashed oui-decoration-[1px]",children:o("positions.history.type.liquidated")})})),n},[e]);return jsx(Flex,{gap:1,children:r})},ki=t=>{let{item:e}=t,{t:o}=useTranslation(),i=e.closed_position_qty!=null?Math.abs(e.closed_position_qty):"--";return jsx(Statistic,{label:jsx(Text,{children:o("positions.history.column.closed")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.base_dp,padding:false,coloring:true,intensity:80,children:i})})},Bi=t=>{let{item:e}=t,{t:o}=useTranslation(),i=e.max_position_qty!=null?Math.abs(e.max_position_qty):"--";return jsx(Statistic,{label:jsx(Text,{children:o("positions.history.column.maxClosed")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.base_dp,padding:false,coloring:true,intensity:80,children:i})})},Hi=t=>{let{item:e}=t,o=e.avg_open_price!=null?Math.abs(e.avg_open_price):"--",{t:i}=useTranslation();return jsx(Statistic,{label:jsxs(Flex,{gap:1,children:[i("common.avgOpen"),jsx(Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,padding:false,coloring:true,intensity:80,children:o})})},Ei=t=>{let{item:e}=t,o=e.avg_close_price!=null?Math.abs(e.avg_close_price):"--",{t:i}=useTranslation();return jsx(Statistic,{label:jsxs(Flex,{gap:1,children:[i("common.avgClose"),jsx(Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsx(Text.numeral,{dp:t.quote_dp,padding:false,coloring:true,intensity:80,children:o})})},zi=t=>{let{item:e}=t,{t:o}=useTranslation();return jsx(Statistic,{label:jsx(Text,{children:o("positions.history.column.timeOpened")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},align:"end",children:jsx(Text.formatted,{intensity:80,formatString:"yyyy-MM-dd HH:mm:ss",rule:"date",children:e.open_timestamp})})},Wi=t=>{let{item:e}=t,{t:o}=useTranslation(),i=e.position_status=="closed"&&e.close_timestamp?jsx(Text.formatted,{intensity:80,formatString:"yyyy-MM-dd HH:mm:ss",rule:"date",children:e.close_timestamp}):"--";return jsx(Statistic,{label:jsx(Text,{children:o("positions.history.column.timeClosed")}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},align:"end",children:i})},Ui=t=>{let{t:e}=useTranslation();return jsxs(Flex,{justify:"end",className:"oui-text-2xs oui-w-full oui-py-2 oui-gap-1 oui-gap-1",children:[jsxs(Text,{intensity:36,children:[e("funding.fundingFee"),": "]}),jsx(nt,{fee:-t.item.accumulated_funding_fee,symbol:t.item.symbol,start_t:t.item.open_timestamp.toString(),end_t:t.item.close_timestamp?.toString()})]})};var Xe=t=>jsxs(Flex,{direction:"column",width:"100%",gap:2,itemAlign:"start",className:t.classNames?.root,children:[jsx(ka,{...t}),jsx(Divider,{intensity:6,className:"oui-w-full"}),jsx(Ba,{...t})]}),ka=t=>{let{t:e}=useTranslation(),o=()=>{let{item:i}=t;modal.alert({title:e("positions.history.column.netPnl"),message:jsxs(Flex,{direction:"column",width:"100%",gap:2,className:"oui-text-2xs oui-text-base-contrast-54",children:[jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:e("common.realizedPnl")}),jsx(Text,{color:i.realized_pnl>=0?"profit":"lose",children:commifyOptional(i.realized_pnl)})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:e("funding.fundingFee")}),jsx(Text,{color:i.accumulated_funding_fee>0?"lose":"profit",children:commifyOptional(-i.accumulated_funding_fee)})]}),jsxs(Flex,{justify:"between",width:"100%",gap:2,children:[jsx(Text,{intensity:54,children:e("positions.history.netPnl.tradingFee")}),jsx(Text,{color:i.trading_fee>0?"lose":"profit",children:commifyOptional(-i.trading_fee)})]})]})});};return jsxs(Flex,{gap:1,width:"100%",children:[jsxs(Flex,{direction:"column",itemAlign:"start",className:"oui-flex-1",gap:1,children:[jsx(Oi,{...t}),jsx(Ai,{...t})]}),jsxs(Flex,{direction:"column",itemAlign:"end",className:"oui-flex-1",children:[jsx(Text,{size:"2xs",intensity:36,children:e("positions.history.column.netPnl")}),jsxs(Flex,{gapX:1,children:[jsx("button",{onClick:o,children:jsx(Text.numeral,{size:"xs",coloring:true,children:t.item.netPnL??"--"})}),jsx(rt,{position:t.item,sharePnLConfig:t.sharePnLConfig,modalId:SharePnLBottomSheetId,iconSize:12,isPositionHistory:true})]})]})]})},Ba=t=>jsxs("div",{className:"oui-w-full",children:[jsxs(Grid,{cols:3,rows:2,width:"100%",gap:0,className:"oui-grid-cols-[1fr,1fr,135px]",children:[jsx(ki,{...t}),jsx(Bi,{...t}),jsx(zi,{...t}),jsx(Hi,{...t}),jsx(Ei,{...t}),jsx(Wi,{...t})]}),jsx(Ui,{...t})]});var Ye=t=>{let e=A();return {...t,...e}};var Je=t=>{let e=Ye(t);return jsx(Xe,{...e})};var to=t=>{let{onSymbolChange:e,pagination:o,pnlNotionalDecimalPrecision:i}=t,r=qi({onSymbolChange:e,pnlNotionalDecimalPrecision:i,sharePnLConfig:t.sharePnLConfig}),{t:n}=useTranslation(),a=useMemo(()=>({1:n("common.select.1d"),7:n("common.select.7d"),30:n("common.select.30d"),90:n("common.select.90d")}),[n]);return jsxs(Flex,{direction:"column",width:"100%",height:"100%",itemAlign:"start",children:[jsxs(Flex,{gap:3,children:[t.filterItems.length>0&&jsx(DataFilter,{items:t.filterItems,onFilter:s=>{t.onFilter(s);}}),[1,7,30,90].map(s=>jsxs("button",{className:"oui-relative oui-px-2 oui-py-[2px] oui-text-sm",children:[jsx("div",{className:"oui-z-10",children:jsx(Text.gradient,{color:t.filterDays===s?"brand":void 0,className:cn("oui-whitespace-nowrap oui-break-normal",t.filterDays!==s?"oui-text-base-contrast-54":""),children:a[s]||`${s}D`})}),jsx("div",{className:"oui-absolute oui-inset-0 oui-rounded oui-opacity-[.12] oui-gradient-primary",onClick:()=>{t.updateFilterDays(s);}})]},`item-${s}`))]}),jsx(AuthGuardDataTable,{loading:t.isLoading,id:"oui-desktop-positions-content",columns:r,bordered:true,dataSource:t.dataSource,generatedRowKey:s=>`${s.symbol}_${s.position_id}`,renderRowContainer:(s,l,c)=>jsx(xt,{symbol:s.symbol,children:c}),manualPagination:false,pagination:o,testIds:{body:"oui-testid-dataList-positionHistory-tab-body"},classNames:{root:"!oui-h-[calc(100%_-_49px)]"}})]})},eo=t=>jsxs(Grid,{cols:1,rows:2,className:"oui-w-full oui-grid-rows-[auto,1fr]",gap:1,children:[jsx(Flex,{gap:2,p:2,className:"oui-rounded-b-xl oui-bg-base-9",children:jsx(DataFilter,{className:"oui-border-none oui-py-0",items:t.filterItems,onFilter:e=>{t.onFilter(e);}})}),jsx(ListView,{className:cn("oui-hide-scrollbar oui-w-full oui-space-y-0 oui-overflow-y-hidden",t.classNames?.root),contentClassName:cn("!oui-space-y-1",t.classNames?.content),dataSource:t.dataSource,renderItem:(e,o)=>jsx(xt,{symbol:e.symbol,children:jsx(Je,{item:e,index:o,onSymbolChange:t.onSymbolChange,classNames:{root:t.classNames?.cell},sharePnLConfig:t.sharePnLConfig})})})]});var Va=t=>{let e=oe(t);return jsx(to,{...e,sharePnLConfig:t.sharePnLConfig})},Ga=t=>{let{classNames:e,...o}=t,i=oe(o);return jsx(eo,{...i,classNames:e,sharePnLConfig:t.sharePnLConfig})};var Gi=t=>{let{t:e}=useTranslation();return useMemo(()=>[{title:e("common.time"),dataIndex:"timestamp",fixed:"left",width:202,render:i=>jsx(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=>jsx(Text,{children:i})},{title:e("positions.Liquidation.column.insFundTransfer"),dataIndex:"transfer_amount_to_insurance_fund",width:202,render:i=>jsx(Text,{children:commifyOptional(i)})},{title:e("common.symbol"),dataIndex:"Symbol",width:202,render:(i,r)=>jsx(Flex,{direction:"column",itemAlign:"start",children:r.positions_by_perp?.map(n=>jsx(Text.formatted,{rule:"symbol",formatString:"base-quote",children:n.symbol}))})},{title:`${e("common.price")} (USDC)`,dataIndex:"Price_(USDC)",width:202,render:(i,r)=>jsx(Flex,{direction:"column",itemAlign:"start",children:r.positions_by_perp?.map(n=>jsx(oo,{value:n.transfer_price,type:"quote"}))})},{title:e("common.quantity"),dataIndex:"Quantity",width:202,render:(i,r)=>jsx(Flex,{direction:"column",itemAlign:"start",children:r.positions_by_perp?.map(n=>jsx(oo,{value:n.position_qty,type:"base"}))})},{title:e("positions.Liquidation.column.liquidationFee"),dataIndex:"abs_liquidation_fee",width:202,render:(i,r)=>jsx(Flex,{direction:"column",itemAlign:"start",children:r.positions_by_perp?.map(n=>jsx(oo,{value:n.abs_liquidation_fee,type:"quote"}))})}],[e])},oo=t=>jsx(Text,{children:commifyOptional(t.value)});var Ki=t=>{let{t:e}=useTranslation();return jsxs(Flex,{width:"100%",justify:"between",children:[jsxs(Flex,{gap:1,children:[jsx(Text,{size:"2xs",intensity:36,children:e("common.price")}),jsx(Text,{size:"2xs",intensity:20,children:"(USDC)"})]}),jsx(Text,{size:"2xs",intensity:80,children:commifyOptional(t.transfer_price)})]})},Xi=t=>{let{t:e}=useTranslation();return jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text,{size:"2xs",intensity:36,children:e("common.quantity")}),jsx(Text,{size:"2xs",intensity:80,children:commifyOptional(t.position_qty)})]})},Yi=t=>{let{t:e}=useTranslation();return jsxs(Flex,{width:"100%",justify:"between",children:[jsx(Text,{size:"2xs",intensity:36,children:e("positions.Liquidation.column.liquidationFee")}),jsx(Text,{size:"2xs",intensity:80,children:commifyOptional(t.abs_liquidation_fee)})]})};var ro=t=>jsxs(Flex,{direction:"column",width:"100%",gap:2,itemAlign:"start",className:t.classNames?.root,children:[jsx(tl,{...t}),jsx(el,{...t})]},t.item.timestamp),tl=t=>{let{t:e}=useTranslation();return jsxs(Flex,{gap:1,width:"100%",children:[jsxs(Flex,{direction:"column",itemAlign:"start",className:"oui-flex-1",gap:1,children:[jsx(Text.formatted,{size:"2xs",intensity:36,rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:t.item.timestamp}),jsxs(Flex,{gap:1,children:[jsx(Text,{size:"2xs",intensity:36,children:`${e("positions.Liquidation.column.liquidationId")}:`}),jsx(Text,{size:"2xs",intensity:80,children:` ${t.item.liquidation_id}`})]})]}),jsxs(Flex,{direction:"column",itemAlign:"end",className:"oui-flex-1",children:[jsx(Text,{size:"2xs",intensity:36,children:`${e("positions.Liquidation.column.insFundTransfer")}:`}),jsx(Text,{intensity:80,size:"xs",children:commifyOptional(t.item.transfer_amount_to_insurance_fund)})]})]})},el=t=>jsx(Flex,{direction:"column",width:"100%",children:t.item.positions_by_perp?.map((e,o)=>jsx(ol,{isLast:o===t.item.positions_by_perp.length-1,...e},`${o}-${e.symbol}`))}),ol=t=>jsxs(Flex,{width:"100%",itemAlign:"start",className:cn("oui-border-t-[1px] oui-border-line-6 oui-pt-2",!t.isLast&&"oui-pb-2"),children:[jsx(Text.formatted,{rule:"symbol",formatString:"base-quote",size:"xs",intensity:80,className:"oui-flex-1",children:t.symbol}),jsxs(Grid,{cols:1,rows:3,width:"100%",gap:1,className:"oui-flex-1",children:[jsx(Ki,{...t}),jsx(Xi,{...t}),jsx(Yi,{...t})]})]},t.key);var so=t=>({...t});var ao=t=>{let{classNames:e,...o}=t,i=so(o);return jsx(ro,{classNames:e,...i})};var mo=t=>{let e=Gi();return jsxs(Flex,{direction:"column",width:"100%",height:"100%",itemAlign:"start",children:[jsxs(Flex,{gap:3,children:[t.filterItems.length>0&&jsx(DataFilter,{items:t.filterItems,onFilter:o=>{t.onFilter(o);}}),[1,7,30,90].map(o=>jsxs("button",{className:"oui-relative oui-px-2 oui-py-[2px] oui-text-sm",children:[jsx("div",{className:"oui-z-10",children:jsx(Text.gradient,{color:t.filterDays===o?"brand":void 0,className:t.filterDays!==o?"oui-text-base-contrast-54":"",children:`${o}D`})}),jsx("div",{className:"oui-absolute oui-inset-0 oui-rounded oui-opacity-[.12] oui-gradient-primary",onClick:()=>{t.updateFilterDays(o);}})]},`item-${o}`))]}),jsx(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)]"}})]})},uo=t=>jsxs(Grid,{cols:1,rows:2,className:"oui-w-full oui-grid-rows-[auto,1fr]",gap:1,children:[jsx(Flex,{gap:2,p:2,className:"oui-rounded-b-xl oui-bg-base-9",children:jsx(DataFilter,{className:"oui-border-none oui-py-0",items:t.filterItems,onFilter:e=>{t.onFilter(e);}})}),jsx(ListView,{className:cn("oui-hide-scrollbar oui-w-full oui-space-y-0 oui-overflow-y-hidden",t.classNames?.root),contentClassName:cn("!oui-space-y-1",t.classNames?.content),dataSource:t.dataSource,loadMore:t.loadMore,renderItem:(e,o)=>jsx(ao,{item:e,index:o,classNames:{root:t.classNames?.cell}})})]});var me=t=>{let{symbol:e,enableLoadMore:o}=t,{page:i,pageSize:r,setPage:n,pagination:a,parsePagination:s}=usePagination({pageSize:10}),{dateRange:l,filterDays:c,updateFilterDays:u,filterItems:m,onFilter:d}=yl();useEffect(()=>{n(1);},[e,l,c]);let[P,{meta:y,isLoading:b,loadMore:_}]=fl({page:o?void 0:i,size:r,symbol:e,start_t:l.from!=null?l.from.getTime():void 0,end_t:l.to!=null?l.to.getTime():void 0});return {dataSource:useDataTap(P,{fallbackData:[]}),isLoading:b,loadMore:_,pagination:s(y),dateRange:l,filterDays:c,updateFilterDays:u,filterItems:m,onFilter:d}},fl=t=>{let e=usePrivateInfiniteQuery(gl(t),{initialSize:1,formatter:a=>a,revalidateOnFocus:true}),o=useMemo(()=>e.data?.[0]?.meta,[e.data?.[0]]),i=useMemo(()=>e.data?.map(a=>a.rows)?.flat(),[e.data]),r=e.isLoading;return [i,{meta:o,isLoading:r,loadMore:()=>{e.setSize(e.size+1);}}]},yl=()=>{let t=Lt({to:W(new Date),from:z(subDays(new Date,89))}),[e,o]=useState(90),[i,r]=useState(t),n=c=>{o(c),r({from:z(subDays(new Date,c-1)),to:W(new Date)});},a=c=>{if(c.name==="dateRange"){let u=Lt(c.value);if(r(u),u.from&&u.to){let m=Math.abs(differenceInDays(u.from,u.to))+1,P={1:{from:z(new Date),to:W(new Date)},7:{from:z(subDays(new Date,6)),to:W(new Date)},30:{from:z(subDays(new Date,29)),to:W(new Date)},90:{from:z(subDays(new Date,89)),to:W(new Date)}}[m];P&&Dt(P.from,u.from)&&Dt(P.to,u.to)?o(m):o(null);}}},{isMobile:s}=useScreen();return {filterItems:useMemo(()=>{let c={type:"range",name:"dateRange",value:i,fromDate:z(subDays(new Date,89)),toDate:W(new Date)};return s?[c]:[c]},[i]),onFilter:a,dateRange:i,filterDays:e,updateFilterDays:n}},gl=t=>(e,o)=>{if(o&&!o.rows?.length)return null;let{symbol:i,size:r=10,page:n,end_t:a,start_t:s}=t,l=new URLSearchParams([["size",r.toString()],["page",`${e+1}`]]);return n&&l.set("page",`${n}`),i&&l.set("symbol",i),a&&l.set("end_t",`${a}`),s&&l.set("start_t",`${s}`),`/v1/liquidations?${l.toString()}`};var xl=t=>{let e=me(t);return jsx(mo,{...e})},bl=t=>{let{classNames:e,...o}=t,i=me(o);return jsx(uo,{classNames:e,...i})};var Cl="MarketCloseConfirmID";registerSimpleDialog(Cl,At,{size:"md",closable:false});
15
17
 
16
- export { Ke as Liquidation, js as LiquidationWidget, oa as MarketCloseConfirmID, Xe as MobileLiquidation, ta as MobileLiquidationWidget, ze as MobilePositionHistory, qs as MobilePositionHistoryWidget, Kr as MobilePositionsWidget, Re as PositionHistory, Ls as PositionHistoryWidget, Gr as PositionsWidget, te as useLiquidationScript, Gt as usePositionHistoryScript };
18
+ export { da as CombinePositionsWidget, nt as FundingFeeButton, Kt as FundingFeeHistoryUI, mo as Liquidation, xl as LiquidationWidget, Cl as MarketCloseConfirmID, uo as MobileLiquidation, bl as MobileLiquidationWidget, eo as MobilePositionHistory, Ga as MobilePositionHistoryWidget, ca as MobilePositionsWidget, to as PositionHistory, Va as PositionHistoryWidget, ua as PositionsWidget, me as useLiquidationScript, oe as usePositionHistoryScript };
17
19
  //# sourceMappingURL=out.js.map
18
20
  //# sourceMappingURL=index.mjs.map