@orderly.network/ui-positions
Version:
22 lines (18 loc) • 77.5 kB
JavaScript
'use strict';
var ui$1 = require('@orderly.network/ui');
var br = require('react');
var i18n = require('@orderly.network/i18n');
var types = require('@orderly.network/types');
var utils = require('@orderly.network/utils');
var jsxRuntime = require('react/jsx-runtime');
var hooks = require('@orderly.network/hooks');
var immer = require('immer');
var perp = require('@orderly.network/perp');
var reactApp = require('@orderly.network/react-app');
var uiConnector = require('@orderly.network/ui-connector');
var uiShare = require('@orderly.network/ui-share');
var uiTpsl = require('@orderly.network/ui-tpsl');
var dateFns = require('date-fns');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var br__default = /*#__PURE__*/_interopDefault(br);
var ko=t=>{let{hideCloseIcon:e=false}=t;return jsxRuntime.jsxs("div",{className:"oui-relative oui-w-full oui-border-b oui-border-line-4 oui-pb-3",children:[jsxRuntime.jsx(ui$1.Text,{size:"base",children:t.title}),!e&&jsxRuntime.jsx("button",{onClick:t.onClose,className:"oui-absolute oui-right-0 oui-top-0 oui-p-2 oui-text-base-contrast-54 hover:oui-text-base-contrast-80",children:jsxRuntime.jsx(ui$1.CloseIcon,{size:18,color:"white"})})]})},se=t=>{let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{id:"oui-positions-confirm-footer",gap:2,width:"100%",className:"oui-mt-3 oui-pb-1",children:[jsxRuntime.jsx(ui$1.Button,{id:"oui-positions-confirm-footer-cancel-button",color:"secondary",fullWidth:true,onClick:t.onCancel,size:"md",children:e("common.cancel")}),jsxRuntime.jsx(ui$1.ThrottledButton,{id:"oui-positions-confirm-footer-confirm-button",onClick:t.onConfirm,fullWidth:true,loading:t.submitting,disabled:t.disabled,size:"md",children:e("common.confirm")})]})},vn=t=>{let{quantity:e,price:o,quoteDp:i,side:r}=t,{t:n}=i18n.useTranslation(),a=br.useMemo(()=>o&&e?new utils.Decimal(o).mul(e).toFixed(i,utils.Decimal.ROUND_DOWN):"--",[o,e]);return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:1,width:"100%",className:"oui-text-sm oui-text-base-contrast-54",py:5,children:[jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui$1.Text,{children:n("common.qty")}),jsxRuntime.jsx(ui$1.Text,{color:r===types.OrderSide.BUY?"success":"danger",children:e})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui$1.Text,{children:n("common.price")}),jsxRuntime.jsx(ui$1.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"USDC"}),children:o})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui$1.Text,{children:n("common.notional")}),jsxRuntime.jsx(ui$1.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui$1.Text,{intensity:54,children:"USDC"}),children:a})]})]})},Nt=t=>{let{t:e}=i18n.useTranslation(),o=()=>{(t?.onClose??t.close)?.();};return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",className:t.classNames?.root,children:[jsxRuntime.jsx(ko,{onClose:o,title:e("positions.marketClose"),hideCloseIcon:t.hideCloseIcon}),jsxRuntime.jsx(ui$1.Text,{intensity:54,size:"sm",className:"oui-my-5",children:e("positions.marketClose.description",{quantity:utils.commifyOptional(t.quantity),base:t.base})}),jsxRuntime.jsx(se,{onCancel:o,onConfirm:async()=>{await t.onConfirm?.(),o();},submitting:t.submitting})]})},ae=t=>{let{order:e,quoteDp:o,quantity:i,price:r}=t,{side:n}=e,{t:a}=i18n.useTranslation(),s=()=>{t.onClose?.();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ko,{onClose:s,title:a("positions.limitClose"),hideCloseIcon:t.hideCloseIcon}),jsxRuntime.jsx(ui$1.Box,{mt:5,children:jsxRuntime.jsx(ui$1.Text,{intensity:54,size:"sm",children:a("positions.limitClose.description",{quantity:utils.commify(t.quantity),base:t.base})})}),jsxRuntime.jsxs(ui$1.Flex,{gap:2,mb:4,mt:5,justify:"between",children:[jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-type",size:"base",showIcon:true,children:e.symbol}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Badge,{color:"neutral",size:"xs",children:a("orderEntry.orderType.limit")}),jsxRuntime.jsx(ui$1.Badge,{color:n===types.OrderSide.BUY?"success":"danger",size:"xs",children:n===types.OrderSide.BUY?a("common.buy"):a("common.sell")})]})]}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsx(vn,{className:"oui-text-sm",price:r,quantity:i,side:e.side,quoteDp:o??2}),jsxRuntime.jsx(se,{onCancel:s,onConfirm:t.onConfirm,submitting:t.submitting})]})};var Oe=br.createContext({}),Y=()=>br.useContext(Oe);function Ho(t,e){let o=br.useRef(),i=br.useRef(e);i.current=e,br.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();}},[]),br.useEffect(()=>{o.current?.observe(t.current);},[]);}var Bo=t=>{let e=br.useRef(null),{onEndReached:o}=t;return Ho(e,()=>{o?.();}),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t.children,jsxRuntime.jsx("div",{ref:e,className:"oui-relative oui-invisible oui-h-[25px] oui-bg-red-400 oui-top-[-300px]"})]})};var le=({total:t,symbol:e,start_t:o,end_t:i})=>{let{t:r}=i18n.useTranslation(),{isMobile:n}=ui$1.useScreen(),{isLoading:a,data:s,setSize:l}=hooks.usePrivateInfiniteQuery((d,g)=>g&&!g.length?null:`/v1/funding_fee/history?page=${d}&symbol=${e}&start_t=${o}&end_t=${i}`,{revalidateFirstPage:false}),m=br.useCallback(()=>{l(d=>d+1);},[l]),u=br.useMemo(()=>Array.isArray(s)?s.flat().map(d=>({...d,funding_fee:-d.funding_fee})):[],[s]),c=br.useMemo(()=>n?jsxRuntime.jsx(Un,{data:u??types.EMPTY_LIST,isLoading:a,loadMore:m}):jsxRuntime.jsx(Qn,{data:u??types.EMPTY_LIST,isLoading:a,loadMore:m}),[n,u,a]);return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs(ui$1.Grid,{cols:2,gapX:3,className:"oui-sticky oui-top-0 oui-z-10 oui-bg-base-8 oui-py-4",children:[jsxRuntime.jsx("div",{className:"oui-rounded-lg oui-border oui-border-line-6 oui-bg-base-9 oui-p-3",children:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:1,itemAlign:"start",children:[jsxRuntime.jsx("span",{className:"oui-text-2xs oui-text-base-contrast-36",children:r("common.symbol")}),jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",className:"oui-font-semibold",intensity:98,children:e})]})}),jsxRuntime.jsx("div",{className:"oui-rounded-lg oui-border oui-border-line-6 oui-bg-base-9 oui-p-3",children:jsxRuntime.jsx(ui$1.Statistic,{label:`${r("funding.fundingFee")} (USDC)`,valueProps:{ignoreDP:true,coloring:true,showIdentifier:true},children:t})})]}),c]})},Qn=({isLoading:t,data:e,loadMore:o})=>{let{t:i}=i18n.useTranslation(),r=br.useMemo(()=>[{title:i("common.time"),dataIndex:"created_time",width:120,render:n=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",children:n})},{title:i("funding.fundingRate"),dataIndex:"funding_rate",formatter:n=>new utils.Decimal(n).mul(100).toString(),render:n=>jsxRuntime.jsx("span",{children:`${n}%`})},{title:i("funding.paymentType"),dataIndex:"payment_type",formatter:n=>i(n==="Pay"?"funding.paymentType.paid":"funding.paymentType.received"),render:n=>jsxRuntime.jsx("span",{children:n})},{title:`${i("funding.fundingFee")} (USDC)`,dataIndex:"funding_fee",render:n=>jsxRuntime.jsx(ui$1.Text.numeral,{rule:"price",coloring:true,showIdentifier:true,ignoreDP:true,children:n})}],[i]);return jsxRuntime.jsx("div",{className:"oui-h-[calc(80vh_-_132px_-_8px)] oui-overflow-y-auto",children:jsxRuntime.jsx(Bo,{onEndReached:o,children:jsxRuntime.jsx(ui$1.DataTable,{classNames:{root:ui$1.cn("oui-h-auto oui-bg-base-8 oui-text-sm")},columns:r,dataSource:e??types.EMPTY_LIST,loading:t})})})},Un=({data:t,isLoading:e,loadMore:o})=>{let i=br.useCallback(r=>jsxRuntime.jsx($n,{item:r}),[]);return jsxRuntime.jsx("div",{className:"oui-h-[calc(80vh_-_104px)] oui-overflow-y-auto",children:jsxRuntime.jsx(ui$1.ListView,{dataSource:t,renderItem:i,isLoading:e,contentClassName:"oui-space-y-0",loadMore:o})})},$n=({item:t})=>{let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"oui-flex oui-flex-col oui-space-y-2 oui-border-t oui-border-line-6 oui-py-2",children:[jsxRuntime.jsxs(ui$1.Flex,{justify:"between",children:[jsxRuntime.jsx(ui$1.Statistic,{label:e("funding.fundingRate"),classNames:{label:"oui-text-2xs"},valueProps:{ignoreDP:true,rule:"percentages",className:"oui-text-xs"},children:t.funding_rate}),jsxRuntime.jsx(ui$1.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})]}),jsxRuntime.jsxs(ui$1.Flex,{justify:"between",children:[jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",className:"oui-text-base-contrast-36",size:"2xs",children:t.created_time}),jsxRuntime.jsx(ui$1.Text,{size:"sm",intensity:80,children:t.payment_type==="Pay"?e("funding.paymentType.paid"):e("funding.paymentType.received")})]})]})};var lt=({fee:t,symbol:e,start_t:o,end_t:i})=>{let{t:r}=i18n.useTranslation(),[n,{setTrue:a,setFalse:s}]=hooks.useBoolean(false),{isMobile:l}=ui$1.useScreen();return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{onClick:a,children:jsxRuntime.jsx(ui$1.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?jsxRuntime.jsx(ui$1.SimpleSheet,{open:n,onOpenChange:s,title:r("funding.fundingFee"),classNames:{body:"oui-max-h-[80vh] oui-py-0"},children:jsxRuntime.jsx(le,{total:t,symbol:e,start_t:o,end_t:i})}):jsxRuntime.jsx(ui$1.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:jsxRuntime.jsx(le,{total:t,symbol:e,start_t:o,end_t:i})})]})};var rr=(t,e)=>{let o=hooks.useConfig("apiBaseUrl");return i=>(r,n,a)=>{try{return i(r,async l=>{let m=Array.isArray(l)?l[0]:l,u=`${o}${m}`,c=t.signer,d={method:"GET",url:m},g=await c.sign(d,utils.getTimestamp()),p=Array.isArray(e)?e:[e];return Promise.all(p.map(x=>n(u,{headers:{...g,"orderly-account-id":x}})))},a)}catch(s){throw s}}},Uo=(t,e)=>{let{formatter:o,accountId:i,...r}=e||{},{state:n,account:a}=hooks.useAccount(),s=Array.isArray(e?.use)?e?.use??[]:[],l=Array.isArray(i)?i:[i],m=l.filter(Boolean).length&&(n.status>=types.AccountStatusEnum.EnableTrading||n.status===types.AccountStatusEnum.EnableTradingWithoutConnected);return hooks.useSWR(()=>m?[t,l]:null,(u,c)=>hooks.fetcher(u,c,{formatter:o}),{...r,use:[...s,rr(a,l)],onError:()=>{}})};var $o=t=>{let{symbol:e,calcMode:o,includedPendingOrder:i,pnlNotionalDecimalPrecision:r,sharePnLConfig:n,onSymbolChange:a,selectedAccount:s}=t,{pagination:l,setPage:m}=ui$1.usePagination({pageSize:50});br.useEffect(()=>{m(1);},[e]);let u=hooks.useSymbolsInfo(),{state:c}=hooks.useAccount(),[d,,{isLoading:g}]=hooks.usePositionStream(e,{calcMode:o,includedPendingOrder:i}),{data:p=[],isLoading:x,mutate:F}=hooks.usePrivateQuery("/v1/client/aggregate/positions",{errorRetryCount:3}),{data:M=[],isLoading:T}=Uo("/v1/client/info",{accountId:p.map(L=>L.account_id),revalidateOnFocus:false}),f=immer.produce(p.filter(L=>L.account_id!==c.mainAccountId),L=>{for(let b of L){let ot=u[b.symbol],it=perp.positions.notional(b.position_qty,b.mark_price),h=M.find($t=>$t.account_id===b.account_id),H=perp.positions.MMR({baseMMR:ot?.("base_mmr"),baseIMR:ot?.("base_imr"),IMRFactor:h?.imr_factor[b.symbol]??0,positionNotional:it,IMR_factor_power:4/5}),te=perp.positions.maintenanceMargin({positionQty:b.position_qty,markPrice:b.mark_price,MMR:H}),ee=perp.positions.unrealizedPnL({qty:b.position_qty,openPrice:b?.average_open_price,markPrice:b.mark_price}),oe=perp.account.IMR({maxLeverage:h?.max_leverage??1,baseIMR:ot?.("base_imr"),IMR_Factor:h?.imr_factor[b.symbol]??0,positionNotional:it,ordersNotional:0,IMR_factor_power:4/5}),ie=perp.positions.unrealizedPnLROI({positionQty:b.position_qty,openPrice:b.average_open_price,IMR:oe,unrealizedPnL:ee}),Ut=0,ne=0;b.index_price&&(Ut=perp.positions.unrealizedPnL({qty:b.position_qty,openPrice:b?.average_open_price,markPrice:b.index_price}),ne=perp.positions.unrealizedPnLROI({positionQty:b.position_qty,openPrice:b.average_open_price,IMR:oe,unrealizedPnL:Ut})),b.mmr=H,b.mm=te,b.notional=it,b.unrealized_pnl=ee,b.unrealized_pnl_ROI=ie,b.unrealized_pnl_ROI_index=ne;}}),N=reactApp.useDataTap([...d?.rows,...f].filter(L=>L.position_qty!==0))??[],O=br.useMemo(()=>!s||s==="All accounts"?N:N.filter(L=>s==="Main accounts"?L.account_id===c.mainAccountId||!L.account_id:L.account_id===s),[N,s,c.mainAccountId]),z=br.useMemo(()=>xr(O,{mainAccountId:c.mainAccountId,subAccounts:c.subAccounts}),[O,c.mainAccountId,c.subAccounts]),et=br.useMemo(()=>g||x||T,[g,x,T]);return {tableData:z,isLoading:et,pnlNotionalDecimalPrecision:r,sharePnLConfig:n,symbol:e,onSymbolChange:a,pagination:l,mutatePositions:F}},xr=(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.i18n.t("common.mainAccount"):s?.description||ui$1.formatAddress(s?.id||""),children:[n]});}return {expanded:Array.from(r.keys()),dataSource:Array.from(r.values())}};var Qe=t=>{let{symbol:e,calcMode:o,includedPendingOrder:i,pnlNotionalDecimalPrecision:r,sharePnLConfig:n,onSymbolChange:a}=t,{pagination:s,setPage:l}=ui$1.usePagination({pageSize:50});br__default.default.useEffect(()=>{l(1);},[e]);let[m,,{isLoading:u}]=hooks.usePositionStream(e,{calcMode:o,includedPendingOrder:i});return {dataSource:reactApp.useDataTap(m?.rows,{fallbackData:[]})??void 0,isLoading:u,pnlNotionalDecimalPrecision:r,sharePnLConfig:n,symbol:e,onSymbolChange:a,pagination:s}};var Ue=br.createContext({}),W=()=>br.useContext(Ue);var St=t=>{let{symbol:e,children:o}=t,i=hooks.useSymbolsInfo()[e],r=br.useMemo(()=>({symbol:e,base_dp:i("base_dp"),quote_dp:i("quote_dp"),base_tick:i("base_tick"),quote_tick:i("quote_tick"),base:i("base"),quote:i("quote"),origin:i(),quote_max:i("quote_max"),quote_min:i("quote_min")}),[e,i]);return jsxRuntime.jsx(Ue.Provider,{value:r,children:o})};var me=t=>{let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui$1.Slider,{showTip:true,markCount:4,value:[t.value],color:"primary",onValueChange:o=>{t.onValueChange(o[0]);}}),jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{color:"primary",size:"2xs",children:`${t.value}%`}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,onClick:t.onMax,className:"oui-cursor-pointer",children:[jsxRuntime.jsx(ui$1.Text,{size:"2xs",color:"primary",children:e("common.max")}),jsxRuntime.jsx(ui$1.Text.numeral,{intensity:54,size:"2xs",dp:t.base_dp,padding:false,children:t.max})]})]})]})};var Ke=t=>{let{base:e,base_dp:o,quote:i,quote_dp:r,sheetOpen:n,setSheetOpen:a,dialogOpen:s,setDialogOpen:l,quantity:m,price:u,submitting:c,priceErrorMsg:d,quantityErrorMsg:g,disabled:p,isMarketClose:x,position:F,maxQty:M,isBuy:T}=t,{t:f}=i18n.useTranslation(),N=f(x?"positions.marketClose":"positions.limitClose"),O=f(x?"orderEntry.orderType.market":"orderEntry.orderType.limit"),z=T?jsxRuntime.jsx(ui$1.Badge,{color:"success",size:"xs",children:f("common.buy")}):jsxRuntime.jsx(ui$1.Badge,{color:"danger",size:"xs",children:f("common.sell")}),et=jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",showIcon:true,children:F.symbol}),jsxRuntime.jsxs(ui$1.Flex,{gap:1,children:[jsxRuntime.jsx(ui$1.Badge,{color:"neutral",size:"xs",children:O}),z]})]}),L=jsxRuntime.jsxs(ui$1.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,children:f("common.lastPrice")}),jsxRuntime.jsx(ui$1.Text.numeral,{dp:r,suffix:jsxRuntime.jsxs(ui$1.Text,{intensity:36,children:[" ",i]}),children:F.mark_price})]}),b=!x&&jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsxs(ui$1.Flex,{width:"100%",direction:"column",gap:2,children:[jsxRuntime.jsx(ui$1.Input.tooltip,{prefix:f("common.price"),suffix:i,align:"right",fullWidth:true,autoComplete:"off",formatters:[ui$1.inputFormatter.numberFormatter,ui$1.inputFormatter.dpFormatter(r)],triggerClassName:"oui-w-full",tooltip:d,color:d?"danger":void 0,value:u,onValueChange:t.updatePriceChange,classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui$1.cn("oui-w-full oui-outline-line-12",d?"oui-outline-danger":void 0)}}),jsxRuntime.jsx(ui$1.Input.tooltip,{prefix:f("common.quantity"),suffix:e,align:"right",fullWidth:true,autoComplete:"off",formatters:[ui$1.inputFormatter.numberFormatter,ui$1.inputFormatter.dpFormatter(o)],triggerClassName:"oui-w-full",tooltip:g,color:g?"danger":void 0,value:m,onBlur:()=>t.formatQuantityToBaseTick(m),onValueChange:t.updateQuantity,classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui$1.cn("oui-w-full oui-outline-line-12",g?"oui-outline-danger":void 0)}})]})}),ot=jsxRuntime.jsx(me,{value:t.sliderValue,onValueChange:t.onSliderValueChange,base_dp:o,max:M,onMax:t.onMax}),it=jsxRuntime.jsxs(ui$1.Flex,{width:"100%",gap:3,mt:2,children:[jsxRuntime.jsx(ui$1.Button,{fullWidth:true,color:"secondary",onClick:t.onCloseSheet,children:f("common.cancel")}),jsxRuntime.jsx(ui$1.ThrottledButton,{fullWidth:true,disabled:c||p,loading:c,onClick:h=>{h.stopPropagation(),h.preventDefault(),t.onDoubleConfirm();},children:f("common.confirm")})]});return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui$1.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:h=>{h.stopPropagation(),h.preventDefault(),a(true);},children:N}),jsxRuntime.jsx(ui$1.SimpleSheet,{title:N,open:n,onOpenChange:a,children:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:3,width:"100%",itemAlign:"start",className:"oui-text-sm",children:[et,jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),L,b,ot,it]})}),jsxRuntime.jsx(ui$1.SimpleDialog,{open:s,onOpenChange:l,size:"xs",children:x?jsxRuntime.jsx(Nt,{base:e,quantity:m,submitting:c,onClose:t.onCloseDialog,onConfirm:t.onConfirm,hideCloseIcon:true}):jsxRuntime.jsx(ae,{base:e,quoteDp:r,quantity:m,price:u,submitting:c,order:t.closeOrderData,onClose:t.onCloseDialog,onConfirm:t.onConfirm,hideCloseIcon:true})})]})};var Xe=t=>{let{position:e,base:o,base_dp:i,quote_dp:r,price:n,quantity:a,submitting:s,dialogOpen:l,setDialogOpen:m,isMarketClose:u,popoverOpen:c,setPopoverOpen:d,maxQty:g,quantityErrorMsg:p,priceErrorMsg:x,isEntirePosition:F}=t,{t:M}=i18n.useTranslation(),T=jsxRuntime.jsxs(ui$1.Flex,{width:"100%",gap:2,mb:1,children:[jsxRuntime.jsx(ui$1.Input.tooltip,{ref:t.quantityInputRef,prefix:M("common.quantity"),suffix:F?jsxRuntime.jsx(ui$1.Text,{size:"2xs",intensity:54,className:"oui-cursor-pointer oui-px-3",onClick:t.onEntirePosition,children:M("tpsl.entirePosition")}):o,align:"right",size:"md",fullWidth:true,autoComplete:"off",formatters:[ui$1.inputFormatter.numberFormatter,ui$1.inputFormatter.dpFormatter(i)],triggerClassName:"oui-w-full",tooltip:p,color:p?"danger":void 0,value:F?"":a,onBlur:()=>t.formatQuantityToBaseTick(a),onValueChange:t.updateQuantity,classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui$1.cn("oui-w-full oui-outline-line-12",p?"oui-outline-danger":void 0)}}),jsxRuntime.jsx(ui$1.Button,{onClick:t.onMax,size:"md",variant:"outlined",className:ui$1.cn("oui-text-2xs",F?"oui-border-primary-light oui-text-primary-light hover:oui-bg-primary-light/20":"oui-border-line-12 oui-bg-base-6 oui-text-base-contrast-54 hover:oui-bg-base-5"),children:M("common.position")})]}),f=jsxRuntime.jsx(ui$1.Select.options,{variant:"text",size:"md",options:[{label:M("orderEntry.orderType.limit"),value:types.OrderType.LIMIT},{label:M("orderEntry.orderType.market"),value:types.OrderType.MARKET}],classNames:{trigger:"oui-w-[--radix-select-content-available-width]"},value:t.type,onValueChange:z=>{t.updateOrderType(z);},contentProps:{align:"end",className:"oui-border oui-border-line-6"}}),N=u,O=jsxRuntime.jsx(ui$1.Input.tooltip,{suffix:f,size:"md",fullWidth:true,autoComplete:"off",formatters:[ui$1.inputFormatter.numberFormatter,ui$1.inputFormatter.dpFormatter(r)],triggerClassName:"oui-w-full",tooltip:x,color:x?"danger":void 0,value:n,onValueChange:t.updatePriceChange,placeholder:N?"--":"",disabled:N,classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui$1.cn("oui-w-full oui-outline-line-12",x?"oui-outline-danger":void 0,N?"focus-within:oui-outline-line-12":void 0)}});return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(ui$1.PopoverRoot,{open:c,onOpenChange:d,children:[jsxRuntime.jsx(ui$1.PopoverTrigger,{asChild:true,onClick:()=>{d(true);},children:jsxRuntime.jsx(ui$1.Button,{variant:"outlined",size:"sm",color:"secondary",children:M("positions.column.close")})}),jsxRuntime.jsx(ui$1.PopoverContent,{className:ui$1.cn("oui-w-[360px] oui-p-5",c?"oui-visible":"oui-invisible"),align:"end",side:"top",onOpenAutoFocus:z=>z.preventDefault(),children:jsxRuntime.jsxs(ui$1.Flex,{gapY:2,direction:"column",children:[T,jsxRuntime.jsx(me,{value:t.sliderValue,onValueChange:t.onSliderValueChange,base_dp:i,max:g,onMax:t.onMax}),jsxRuntime.jsx(ui$1.Divider,{my:2,intensity:8,className:"oui-w-full"}),O,jsxRuntime.jsx(se,{onConfirm:t.onDoubleConfirm,onCancel:t.onClosePopover,submitting:s,disabled:t.disabled})]})})]}),jsxRuntime.jsx(ui$1.SimpleDialog,{open:l,onOpenChange:m,size:"sm",children:u?jsxRuntime.jsx(Nt,{base:o,quantity:a,submitting:s,onClose:t.onCloseDialog,onConfirm:t.onConfirm,classNames:{root:"oui-items-start"},hideCloseIcon:true}):jsxRuntime.jsx(ae,{base:o,quoteDp:r,quantity:a,price:n,submitting:s,order:t.closeOrderData,onClose:t.onCloseDialog,onConfirm:t.onConfirm,hideCloseIcon:true})})]})};var Ye=t=>{let[e,o]=br.useState(false),[i,r]=br.useState(false),[n,a]=br.useState(false),[s,l]=br.useState(100),m=br.useRef(null),[u]=hooks.useLocalStorage("orderly_order_confirm",true),{position:c,onSubmit:d,price:g,quantity:p,closeOrderData:x,submitting:F,updatePriceChange:M,updateOrderType:T,updateQuantity:f,errors:N,baseTick:O,type:z}=Y(),{quote_dp:et,base_dp:L,base:b,quote:ot}=W(),{parseErrorMsg:it}=reactApp.useOrderEntryFormErrorMsg(N),h=c.position_qty>0,H=Math.abs(c.position_qty),te=t.type||z,ee=te===types.OrderType.MARKET,oe=H?.toString()===p.toString();br.useEffect(()=>{e&&T(t.type);},[t.type,e]);let{priceErrorMsg:ie,quantityErrorMsg:Ut}=br.useMemo(()=>({priceErrorMsg:it("order_price"),quantityErrorMsg:it("order_quantity")}),[N]),ne=!!(ie||Ut),$t=br.useCallback(gt=>{if(O&&O>0){let Vt=hooks.utils.formatNumber(gt,O)??gt;f(Vt);}},[O,f]),pn=br.useCallback(gt=>{l(gt);let Vt=new utils.Decimal(gt).div(100).mul(H).toFixed(L,utils.Decimal.ROUND_DOWN);$t(Vt);},[H,L,$t]);br.useEffect(()=>{let gt=Math.min(Number(p||0),H),Vt=new utils.Decimal(gt).div(H).mul(100).toDecimalPlaces(2,utils.Decimal.ROUND_DOWN).toNumber();l(Vt);},[p]);let fn=br.useCallback(()=>{f(H?.toString());},[H,f]),Me=br.useCallback(()=>d().then(gt=>{o(false),r(false),a(false);}),[d]),yn=br.useCallback(()=>u?(r(true),Promise.resolve()):Me(),[Me,u]),gn=br.useCallback(()=>{o(false);},[]),xn=br.useCallback(()=>{r(false);},[]),bn=br.useCallback(()=>{a(false);},[]),Pn=br.useCallback(()=>{f("0"),m.current?.focus(),setTimeout(()=>{m.current?.setSelectionRange(0,1);},0);},[f]);return {position:c,closeOrderData:x,quote_dp:et,base_dp:L,base:b,quote:ot,price:g,quantity:p,submitting:F,onConfirm:Me,onDoubleConfirm:yn,updatePriceChange:M,updateQuantity:f,formatQuantityToBaseTick:$t,updateOrderType:T,sliderValue:s,onSliderValueChange:pn,priceErrorMsg:ie,quantityErrorMsg:Ut,disabled:ne,isMarketClose:ee,maxQty:H,onMax:fn,isBuy:h,isEntirePosition:oe,type:te,quantityInputRef:m,onEntirePosition:Pn,sheetOpen:e,onCloseSheet:gn,setSheetOpen:o,dialogOpen:i,setDialogOpen:r,onCloseDialog:xn,popoverOpen:n,setPopoverOpen:a,onClosePopover:bn}};var Mt=t=>{let e=Ye(t),{isMobile:o}=ui$1.useScreen();return o?jsxRuntime.jsx(Ke,{...e}):jsxRuntime.jsx(Xe,{...e})};var Tt=()=>{let{position:t,baseDp:e,quoteDp:o,tpslOrder:i}=Y(),{isMobile:r}=ui$1.useScreen();return jsxRuntime.jsx(ui$1.EditIcon,{onClick:()=>{let a=r?uiTpsl.TPSLDetailSheetId:uiTpsl.TPSLDetailDialogId;ui$1.modal.show(a,{order:i,position:t,baseDP:e,quoteDP:o});},opacity:1,className:"oui-cursor-pointer oui-text-base-contrast-54",size:16})},mt=t=>{let{position:e,baseDp:o,quoteDp:i,tpslOrder:r}=Y(),[n]=hooks.useLocalStorage("orderly_order_confirm",true),{t:a}=i18n.useTranslation(),{isMobile:s}=ui$1.useScreen(),l=()=>{let m=s?uiTpsl.TPSLSheetId:uiTpsl.TPSLDialogId,u={symbol:e.symbol,baseDP:o,quoteDP:i,isEditing:false,positionType:t.positionType};ui$1.modal.show(m,u);};return jsxRuntime.jsx(ui$1.Text,{className:ui$1.cn("oui-text-base-contrast oui-cursor-pointer",s&&"oui-text-base-contrast-80"),onClick:l,children:a("tpsl.add")})},be=({symbol:t})=>t?jsxRuntime.jsxs("div",{className:"oui-flex oui-h-[18px] oui-items-center oui-gap-1 oui-rounded oui-bg-white/[0.06] oui-px-2 oui-text-2xs oui-font-semibold oui-text-base-contrast-36",children:[jsxRuntime.jsx(ui$1.Text,{children:"Cross"}),jsxRuntime.jsx(ss,{symbol:t})]}):null,ss=({symbol:t})=>{let e=hooks.useSymbolLeverage(t);return jsxRuntime.jsx(ui$1.Text.numeral,{dp:0,size:"2xs",unit:"X",children:e!=="-"?e:"--"})};var ri=t=>{let e=W();return jsxRuntime.jsx(ui$1.Text.numeral,{dp:e.base_dp,rm:utils.Decimal.ROUND_DOWN,padding:false,coloring:true,children:t})};var Pe=t=>{let{tick:e="quote_dp",children:o,...i}=t,r=W();if(!r)throw new Error("NumeralWithCtx must be used inside SymbolProvider");return jsxRuntime.jsx(ui$1.Text.numeral,{as:"span",dp:r[e],...i,children:o})};var ai=t=>{let{orderNum:e,tpTriggerPrice:o,slTriggerPrice:i,direction:r="column"}=t,{partialTPSLOrder:n,quoteDp:a,baseDp:s}=Y(),l=hooks.useSymbolsInfo(),{t:m}=i18n.useTranslation(),u=br.useMemo(()=>{let d=[];return n?.symbol?(o&&d.push(jsxRuntime.jsx(ui$1.Text.formatted,{className:ui$1.cn("oui-text-trade-profit oui-gap-0 oui-decoration-white/20"),rule:"price",dp:l[n.symbol]("quote_dp",2),children:o,prefix:!i||r==="column"?jsxRuntime.jsx(ui$1.Text,{intensity:54,children:`${m("tpsl.tp")} - `}):""},"tp")),i&&d.push(jsxRuntime.jsx(ui$1.Text.formatted,{className:ui$1.cn("oui-text-trade-loss oui-gap-0 oui-decoration-white/20 "),rule:"price",dp:l[n.symbol]("quote_dp",2),prefix:jsxRuntime.jsx(ui$1.Text,{intensity:54,children:`${m("tpsl.sl")} - `}),children:i},"sl")),d.length===0?jsxRuntime.jsx(mt,{positionType:types.PositionType.PARTIAL}):(d.length===2&&r==="row"&&d.splice(1,0,jsxRuntime.jsx(ui$1.Text,{children:"/"},"split")),d)):jsxRuntime.jsx(mt,{positionType:types.PositionType.PARTIAL})},[o,i,n?.symbol,m]),c=Array.isArray(u)?!!u.length:!u;return jsxRuntime.jsxs(ui$1.Flex,{className:"oui-gap-[6px]",children:[jsxRuntime.jsx("div",{className:ui$1.cn("oui-inline-flex oui-text-base-contrast-36",r==="column"?"oui-flex-col":"oui-flex-row oui-gap-1"),children:u}),c&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(ui$1.Text,{className:"oui-text-base-contrast-54",children:["(",e,")"]}),jsxRuntime.jsx(Tt,{})]})]})};var eo=t=>{if(t.sharePnLConfig==null)return jsxRuntime.jsx(jsxRuntime.Fragment,{});let{position:e}=t,o=hooks.useSymbolsInfo(),{data:i}=hooks.useAccountInfo(),r=()=>{let n=t.isPositionHistory?(()=>{let a=e.netPnL||0,s=Math.abs(e.avg_open_price),l=Math.abs(e.closed_position_qty),m;if(a!==0&&l!==0&&s!==0&&i&&typeof t.leverage=="number"){let u=o[e.symbol],c=u("base_imr"),d=i.imr_factor[e.symbol]||1;if(c){let g=perp.positions.notional(l,s),p=perp.account.IMR({maxLeverage:i.max_leverage,baseIMR:c,IMR_Factor:d,positionNotional:g,ordersNotional:0,IMR_factor_power:4/5}),x=perp.positions.unrealizedPnLROI({positionQty:l,openPrice:s,IMR:p,unrealizedPnL:a});m=new utils.Decimal(x*100).toFixed(2,utils.Decimal.ROUND_DOWN);}}return {side:e.side,pnl:a,roi:m,openPrice:s,closePrice:Math.abs(e.avg_close_price),openTime:e.open_timestamp,closeTime:e.close_timestamp,quantity:e.closed_position_qty}})():{side:e.position_qty>0?"LONG":"SHORT",pnl:e.unrealized_pnl,roi:new utils.Decimal(e.unrealized_pnl_ROI*100).toFixed(2,utils.Decimal.ROUND_DOWN),openPrice:Math.abs(e.average_open_price),markPrice:e.mark_price,openTime:e.timestamp,quantity:e.position_qty};ui$1.modal.show(t.modalId,{pnl:{entity:{symbol:e.symbol,...n},refCode:t.refCode,...t.sharePnLConfig}});};return jsxRuntime.jsx("button",{type:"button",onClick:n=>{n.stopPropagation(),r();},children:jsxRuntime.jsx(ui$1.ShareIcon,{color:"white",opacity:.54,size:t.iconSize??16})})};var ui=t=>{let{sharePnLConfig:e,position:o,modalId:i,iconSize:r,isPositionHistory:n}=t,{getFirstRefCode:a}=hooks.useReferralInfo(),s=br.useMemo(()=>a()?.code,[a]),l=hooks.useSymbolLeverage(t.position.symbol);return {iconSize:r,position:o,refCode:s,leverage:l,sharePnLConfig:e,modalId:i,isPositionHistory:n}};var dt=t=>{let e=ui(t);return jsxRuntime.jsx(eo,{...e})};var fi=t=>{let{stopLossPrice:e,takeProfitPrice:o}=t,{tpslOrder:i,position:r}=Y();return jsxRuntime.jsx(qs,{stopLossPrice:e,takeProfitPrice:o,direction:"column",order:i,position:r,tooltip:true})},di=t=>{let{qty:e,price:o,entryPrice:i,orderSide:r,orderType:n,symbolInfo:a}=t,s=hooks.utils.priceToPnl({qty:e,price:o,entryPrice:i,orderSide:r,orderType:n},{symbol:a}),l=n===types.AlgoOrderType.TAKE_PROFIT?"TP":"SL";return jsxRuntime.jsxs(ui$1.Flex,{children:[jsxRuntime.jsx(ui$1.Text,{intensity:54,className:"oui-mr-1",children:`${l} PnL:`}),jsxRuntime.jsx(ui$1.Text.formatted,{rule:"price",className:s===0?"oui-text-base-contrast-36":s>0?"oui-text-trade-profit oui-gap-0":"oui-text-trade-loss oui-gap-0",prefix:jsxRuntime.jsx(ui$1.Text,{children:s===0?"":s>0?"+":"-"}),suffix:jsxRuntime.jsx(ui$1.Text,{intensity:36,className:"oui-ml-1",children:"USDC"}),children:`${Math.abs(s)}`})]})},qs=t=>{let{direction:e="row",order:o,position:i}=t,r=hooks.useSymbolsInfo(),{t:n}=i18n.useTranslation(),a=br.useMemo(()=>{let u=[];if(!t.tooltip||!o||!i)return;let c=o.quantity;return c===0&&o.child_orders[0].type==="CLOSE_POSITION"&&(c=i.position_qty),t.takeProfitPrice&&u.push(jsxRuntime.jsx(di,{qty:c,price:t.takeProfitPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.TAKE_PROFIT,symbolInfo:r[o.symbol]()},"tp")),t.stopLossPrice&&u.push(jsxRuntime.jsx(di,{qty:c,price:t.stopLossPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.STOP_LOSS,symbolInfo:r[o.symbol]()},"sl")),jsxRuntime.jsx("div",{children:u})},[t.takeProfitPrice,t.stopLossPrice,i?.average_open_price,o?.side,o?.quantity,o?.algo_type]),s=br.useMemo(()=>{let u=[];if(!o?.symbol)return jsxRuntime.jsx(mt,{positionType:types.PositionType.FULL});return t.takeProfitPrice&&u.push(jsxRuntime.jsx(ui$1.Text.formatted,{className:ui$1.cn("oui-text-trade-profit oui-gap-0 oui-decoration-white/20"),rule:"price",dp:r[o.symbol]("quote_dp",2),children:t.takeProfitPrice,prefix:!t.stopLossPrice||e==="column"?jsxRuntime.jsx(ui$1.Text,{intensity:54,children:`${n("tpsl.tp")} - `}):""},"tp")),t.stopLossPrice&&u.push(jsxRuntime.jsx(ui$1.Text.formatted,{className:ui$1.cn("oui-text-trade-loss oui-gap-0 oui-decoration-white/20 "),rule:"price",dp:r[o.symbol]("quote_dp",2),children:t.stopLossPrice,prefix:!t.takeProfitPrice||e==="column"?jsxRuntime.jsx(ui$1.Text,{intensity:54,children:`${n("tpsl.sl")} - `}):""},"sl")),u.length===0?jsxRuntime.jsx(mt,{positionType:types.PositionType.FULL}):(u.length===2&&e==="row"&&u.splice(1,0,jsxRuntime.jsx(ui$1.Text,{children:"/"},"split")),u)},[t.takeProfitPrice,t.stopLossPrice,o?.symbol,n]),l=jsxRuntime.jsx("div",{className:ui$1.cn("oui-inline-flex oui-text-base-contrast-36",t.direction==="column"?"oui-flex-col":"oui-flex-row oui-gap-1",t.className),children:s}),m=Array.isArray(s)?!!s.length:!s;return t.tooltip?jsxRuntime.jsxs(ui$1.Flex,{gapX:2,children:[jsxRuntime.jsx(ui$1.Tooltip,{content:a,children:l}),m&&jsxRuntime.jsx(Tt,{})]}):l};var Pi=t=>{let[e,o]=hooks.useLocalStorage("unPnlPriceBasis","markPrice"),{t:i}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-items-start",children:[jsxRuntime.jsx(ui$1.Text,{children:i("positions.column.unrealPnl.tooltip")}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsx("div",{className:"oui-mb-0",children:i("positions.column.unrealPnl.priceBasis")}),jsxRuntime.jsx(As,{value:e,onValueChange:o})]})},As=t=>{let{value:e,onValueChange:o}=t,{t:i}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{gap:2,children:[jsxRuntime.jsx(gi,{sel:e==="markPrice",label:i("common.markPrice"),value:"markPrice",onCheckChange:o}),jsxRuntime.jsx(gi,{sel:e==="lastPrice",label:i("common.lastPrice"),value:"lastPrice",onCheckChange:o})]})},gi=t=>{let{sel:e,label:o,value:i,onCheckChange:r}=t;return jsxRuntime.jsxs(ui$1.Flex,{onClick:n=>{r(i),n.stopPropagation();},gap:1,className:"oui-cursor-pointer",children:[e?jsxRuntime.jsx(Os,{}):jsxRuntime.jsx(ks,{}),jsxRuntime.jsx(ui$1.Text,{size:"xs",intensity:e?98:54,children:o})]})},Os=()=>jsxRuntime.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"oui-fill-white",children:[jsxRuntime.jsx("path",{d:"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667",fill:"#fff",fillOpacity:".36"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8",r:"3.333"})]}),ks=()=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntime.jsx("path",{d:"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667",fill:"#fff",fillOpacity:".54"})});var ro=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:i}=t,{t:r}=i18n.useTranslation(),n=br.useRef(Date.now().toString());return br.useMemo(()=>[{title:r("common.symbol"),dataIndex:"symbol",fixed:"left",width:140,onSort:(s,l)=>s.symbol.localeCompare(l.symbol),render:(s,l)=>jsxRuntime.jsxs(ui$1.Flex,{gap:2,children:[jsxRuntime.jsx(ui$1.Box,{width:4,height:20,className:ui$1.cn("oui-h-[38px] oui-rounded-[1px]",l.position_qty>0?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsxRuntime.jsxs(ui$1.Flex,{direction:"column",itemAlign:"start",children:[jsxRuntime.jsx(ui$1.Text.formatted,{formatString:"base-type",className:"oui-cursor-pointer",onClick:m=>{i?.({symbol:s}),m.stopPropagation(),m.preventDefault();},children:`${s.split("_")[1]}-PERP`}),jsxRuntime.jsx(be,{symbol:s})]})]})},{title:r("common.quantity"),dataIndex:"position_qty",onSort:(s,l)=>s.position_qty-l.position_qty,width:120,className:"oui-pl-6",render:ri},{title:r("common.avgOpen"),className:"oui-h-[48px]",width:120,onSort:true,dataIndex:"average_open_price",render:s=>jsxRuntime.jsx(Pe,{rm:utils.Decimal.ROUND_DOWN,children:s})},{title:r("common.markPrice"),dataIndex:"mark_price",width:120,onSort:true,className:"oui-h-[48px]",render:s=>jsxRuntime.jsx(Pe,{rm:utils.Decimal.ROUND_DOWN,children:s})},{title:jsxRuntime.jsx(ui$1.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:jsxRuntime.jsx(ui$1.Text,{children:r("positions.column.liqPrice")})}),width:100,onSort:true,dataIndex:"est_liq_price",render:s=>Number(s)===0?"--":jsxRuntime.jsx(Pe,{rm:utils.Decimal.ROUND_DOWN,className:Number(s)>0?"oui-text-warning-light":"",children:s??"--"})},{title:jsxRuntime.jsx(ui$1.HoverCard,{content:jsxRuntime.jsx(Pi,{}),side:"top",align:"center",className:"oui-max-w-[280px] oui-text-2xs",children:jsxRuntime.jsx(ui$1.Text,{children:r("common.unrealizedPnl")})}),dataIndex:"unrealized_pnl",width:180,onSort:true,rule:"price",numeralProps:{coloring:true},render:(s,l)=>jsxRuntime.jsxs(ui$1.Flex,{gap:2,children:[jsxRuntime.jsxs(ui$1.Flex,{children:[jsxRuntime.jsx(ui$1.Text.numeral,{dp:e,rm:utils.Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",children:s}),jsxRuntime.jsx(ui$1.Text.numeral,{rule:"percentages",dp:e,rm:utils.Decimal.ROUND_DOWN,coloring:true,className:"oui-font-semibold",prefix:"(",suffix:")",children:l.unrealized_pnl_ROI})]}),jsxRuntime.jsx(dt,{position:l,sharePnLConfig:o,modalId:uiShare.SharePnLDialogId})]})},{title:r("common.fullTPSL"),dataIndex:"full_tpsl",width:150,render:(s,l)=>jsxRuntime.jsx(fi,{stopLossPrice:l.full_tp_sl?.sl_trigger_price,takeProfitPrice:l.full_tp_sl?.tp_trigger_price})},{title:r("common.partialTPSL"),dataIndex:"partial_tpsl",width:150,render:(s,l)=>jsxRuntime.jsx(ai,{orderNum:l.partial_tp_sl?.order_num,tpTriggerPrice:l.partial_tp_sl?.tp_trigger_price,slTriggerPrice:l.partial_tp_sl?.sl_trigger_price})},{title:r("common.notional"),dataIndex:"notional",className:"oui-h-[48px]",width:100,onSort:true,render:s=>jsxRuntime.jsx(ui$1.Text.numeral,{dp:e,children:s})},{title:jsxRuntime.jsx(ui$1.Tooltip,{className:"oui-max-w-[280px] oui-bg-base-8 oui-p-3 oui-text-2xs oui-text-base-contrast-54",content:jsxRuntime.jsxs(ui$1.Flex,{direction:"column",gap:3,className:"oui-rounded-sm oui-bg-base-8 oui-text-base-contrast-54",children:[jsxRuntime.jsx("span",{children:r("positions.column.margin.tooltip")}),jsxRuntime.jsx(ui$1.Divider,{className:"oui-w-full"}),jsxRuntime.jsx("span",{children:r("positions.column.margin.formula")})]}),children:jsxRuntime.jsx(ui$1.Text,{children:r("positions.column.margin")})}),dataIndex:"mm",onSort:true,width:100,rule:"price",render:s=>jsxRuntime.jsx(ui$1.Text.numeral,{children:s})},{title:r("funding.fundingFee"),dataIndex:"fundingFee",width:100,render:(s,l)=>jsxRuntime.jsx(lt,{fee:s,symbol:l.symbol,start_t:l.timestamp.toString(),end_t:n.current})},{title:null,dataIndex:"close_position",align:"right",width:70,fixed:"right",render(){return jsxRuntime.jsx(ui$1.Flex,{gapX:2,justify:"end",children:jsxRuntime.jsx(Mt,{})})}}],[e,o,r])};var Si=t=>{let{item:e}=t,o=e.position_qty>0,{t:i}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Text.formatted,{rule:"symbol",formatString:"base-type",size:"2xs",suffix:jsxRuntime.jsxs("div",{className:"oui-flex oui-items-center oui-gap-1",children:[jsxRuntime.jsx(ui$1.Badge,{color:o?"success":"danger",size:"xs",children:i(o?"common.long":"common.short")}),jsxRuntime.jsx(be,{symbol:e.symbol})]}),showIcon:true,onClick:()=>{t.onSymbolChange?.({symbol:e.symbol});},children:e.symbol})},Ti=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsxs(ui$1.Flex,{gap:3,children:[jsxRuntime.jsxs(ui$1.Flex,{direction:"column",className:"oui-text-2xs",itemAlign:"end",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(ui$1.Text,{intensity:36,children:o("common.unrealizedPnl")}),jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),jsxRuntime.jsx(ui$1.Text.numeral,{size:"xs",dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:true,className:"orderly-font-semibold",suffix:jsxRuntime.jsx(ui$1.Text.numeral,{rule:"percentages",dp:t.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,prefix:"(",suffix:")",className:ui$1.cn("oui-ml-1",e.unrealized_pnl_ROI>0?"oui-text-success-darken":"oui-text-danger-darken"),children:e.unrealized_pnl_ROI}),children:e.unrealized_pnl})]}),jsxRuntime.jsx(dt,{position:e,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.SharePnLBottomSheetId,iconSize:12})]})},Fi=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:o("common.qty"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.base_dp,padding:false,coloring:true,children:e.position_qty})})},wi=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:jsxRuntime.jsxs("span",{children:[o("positions.column.margin"),jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,intensity:80,children:e.mm})})},Ii=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{align:"end",label:jsxRuntime.jsxs("span",{children:[o("common.notional"),jsxRuntime.jsx(ui$1.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,intensity:80,children:e.notional})})},vi=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:o("common.avgOpen"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,rm:utils.Decimal.ROUND_DOWN,intensity:80,children:e.average_open_price})})},Di=t=>{let{item:e}=t,{t:o}=i18n.useTranslation();return jsxRuntime.jsx(ui$1.Statistic,{label:o("common.markPrice"),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,rm:utils.Decimal.ROUND_DOWN,intensity:80,children:e.mark_price})})},Ni=t=>{let{item:e}=t,{t:o}=i18n.useTranslation(),i=e.est_liq_price&&e.est_liq_price>0?e.est_liq_price:"-";return jsxRuntime.jsx(ui$1.Statistic,{label:o("positions.column.liqPrice"),align:"end",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui$1.Text.numeral,{dp:t.quote_dp,rm:utils.Decimal.ROUND_DOWN,color:"warning",children:i})})},Li=t=>{let{item:e}=t,{t:o}=i18n.useTranslation(),i=br.useMemo(()=>e.full_tp_sl?.tp_trigger_price==null&&e.full_tp_sl?.sl_trigger_price==null?jsxRuntime.jsx(mt,{positionType:types.PositionType.FULL}):jsxRuntime.jsxs(ui$1.Flex,{className:"oui-gap-[2px]",children:[e.full_tp_sl?.tp_trigger_price&&jsxRuntime.jsx(ui$1.Text.numeral,{color:"buy",children:e.full_tp_sl.tp_trigger_price}),e.full_tp_sl?.sl_trigger_price&&"/",e.full_tp_sl?.sl_trigger_price&&jsxRuntime.jsx(ui$1.Text.numeral,{color:"sell",children:e.full_tp_sl.sl_trigger_price}),jsxRuntime.jsx(Tt,{})]}),[e.full_tp_sl]),r=br.useMemo(()=>e.partial_tp_sl?.tp_trigger_price==null&&e.partial_tp_sl?.sl_trigger_price==null?jsxRuntime.jsx(mt,{positionType:types.PositionType.PARTIAL}):jsxRuntime.jsxs(ui$1.Flex,{className:"oui-gap-[2px]",itemAlign:"center",children:[e.partial_tp_sl?.tp_trigger_price&&jsxRuntime.jsx(ui$1.Text.numeral,{color:"buy",children:e.partial_tp_sl.tp_trigger_price}),e.partial_tp_sl?.sl_trigger_price&&"/",e.partial_tp_sl?.sl_trigger_price&&jsxRuntime.jsx(ui$1.Text.numeral,{color:"sell",children:e.partial_tp_sl.sl_trigger_price}),jsxRuntime.jsx(ui$1.Text,{children:`(${e.partial_tp_sl?.order_num})`}),jsxRuntime.jsx(Tt,{})]}),[e.partial_tp_sl]);return jsxRuntime.jsxs(ui$1.Grid,{cols:2,rows:1,gap:2,width:"100%",children:[jsxRuntime.jsxs(ui$1.Flex,{className:"oui-text-2xs oui-text-base-contrast-36",direction:"column",itemAlign:"start",children:[jsxRuntime.jsxs(ui$1.Text,{children:[o("common.fullTPSL"),": "]}),i]}),jsxRuntime.jsxs(ui$1.Flex,{className:"oui-text-2xs oui-text-base-contrast-36 oui-grid-cols-end",direction:"column",itemAlign:"end",children:[jsxRuntime.jsxs(ui$1.Text,{children:[o("common.partialTPSL"),": "]}),r]})]})},qi=t=>{let{t:e}=i18n.useTranslation(),o=br.useRef(Date.now().toString());return jsxRuntime.jsxs(ui$1.Flex,{justify:"end",className:"oui-w-full oui-text-2xs",children:[jsxRuntime.jsxs(ui$1.Text,{intensity:36,children:[e("funding.fundingFee"),": "]}),jsxRuntime.jsx(lt,{fee:t.item.fundingFee,symbol:t.item.symbol,start_t:t.item.timestamp.toString(),end_t:o.current})]})};var so=t=>{let{className:e,...o}=t,i=jsxRuntime.jsxs(ui$1.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(Si,{...t}),jsxRuntime.jsx(Ti,{...t})]}),r=jsxRuntime.jsxs(ui$1.Grid,{cols:3,rows:2,gap:2,width:"100%",children:[jsxRuntime.jsx(Fi,{...t}),jsxRuntime.jsx(wi,{...t}),jsxRuntime.jsx(Ii,{...t}),jsxRuntime.jsx(vi,{...t}),jsxRuntime.jsx(Di,{...t}),jsxRuntime.jsx(Ni,{...t})]}),n=jsxRuntime.jsxs(ui$1.Grid,{width:"100%",gap:2,cols:2,rows:1,children:[jsxRuntime.jsx(Mt,{type:types.OrderType.LIMIT}),jsxRuntime.jsx(Mt,{type:types.OrderType.MARKET})]});return jsxRuntime.jsxs(ui$1.Flex,{direction:"column",width:"100%",gap:2,p:2,r:"xl",itemAlign:"start",className:ui$1.cn(e,"oui-bg-base-9"),children:[i,jsxRuntime.jsx(ui$1.Divider,{intensity:6,className:"oui-w-full"}),r,jsxRuntime.jsx(Li,{...o}),jsxRuntime.jsx(qi,{...o}),n]})};var ao=t=>{let e=W();return {...t,...e}};var lo=t=>{let e=ao(t);return jsxRuntime.jsx(so,{...e,className:t.className})};var Te=t=>{let{position:e,children:o,mutatePositions:i}=t,{t:r}=i18n.useTranslation(),[n,a]=br.useState(Math.abs(e.position_qty).toString()),[s,l]=br.useState(""),[m,u]=br.useState(types.OrderType.MARKET);br.useEffect(()=>{a(Math.abs(e.position_qty).toString());},[e.position_qty]);let c=e.symbol,d=hooks.useSymbolsInfo(),g=d?.[c],p=g("quote_dp"),x=g("base_dp"),F=g("base_tick"),{side:M,closeOrderData:T,submit:f,isMutating:N,errors:O,calculate:z}=hooks.usePositionClose({position:e,order:{type:m,quantity:n,price:s}}),et=br.useCallback(h=>{let H=z({},"order_quantity",h,e.mark_price,g());a(H.order_quantity);},[z,d,e.mark_price]),L=br.useCallback(h=>{let H=z({},"order_price",h,e.mark_price,g());l(H.order_price);},[z,d,e.mark_price]),b=br.useCallback(h=>{u(h),l(h===types.OrderType.LIMIT?e.mark_price?.toString():"");},[e.mark_price]),ot=br.useCallback(async()=>{if(Number(n)>g("base_max")){ui$1.toast.error(jsxRuntime.jsxs("div",{children:[r("positions.limitClose.errors.exceed.title"),jsxRuntime.jsx("br",{}),jsxRuntime.jsx("div",{className:"oui-break-normal",children:r("positions.limitClose.errors.exceed.description",{quantity:n,symbol:ra(c,"base"),maxQuantity:g("base_max")})})]}));return}return f().then(h=>{if(h.success)return i?.(),h;throw h.message&&ui$1.toast.error(h.message),true}).catch(h=>(h.message&&ui$1.toast.error(h.message),false))},[f]),it=br.useMemo(()=>({quantity:n,price:s,type:m,side:M,position:e,updatePriceChange:L,updateQuantity:et,updateOrderType:b,tpslOrder:e.full_tp_sl?.algo_order,partialTPSLOrder:e.partial_tp_sl?.algo_order,onSubmit:ot,submitting:N,closeOrderData:T,quoteDp:p,baseDp:x,baseTick:F,errors:O}),[n,s,m,M,e,L,et,b,ot,N,T,p,x,F,O]);return jsxRuntime.jsx(Oe.Provider,{value:it,children:o})};function ra(t,e="base"){let o=t.split("_"),i=o[0],r=o[1],n=o[2];return (e??"base-quote").replace("type",i).replace("base",r).replace("quote",n)}var Ei=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,pagination:i,isLoading:r,dataSource:n,onSymbolChange:a}=t,s=ro({pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:a});return jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{loading:r,id:"oui-desktop-positions-content",columns:s,bordered:true,dataSource:n,generatedRowKey:l=>l.symbol,renderRowContainer:(l,m,u)=>jsxRuntime.jsx(St,{symbol:l.symbol,children:jsxRuntime.jsx(Te,{position:l,children:u})}),manualPagination:false,pagination:i,testIds:{body:"oui-testid-dataList-position-tab-body"}})},zi=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,dataSource:i,onSymbolChange:r}=t;return jsxRuntime.jsx(ui$1.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)=>jsxRuntime.jsx(St,{symbol:n.symbol,children:jsxRuntime.jsx(Te,{position:n,children:jsxRuntime.jsx(lo,{item:n,index:a,pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:r})})})})},Hi=t=>{let{pnlNotionalDecimalPrecision:e,sharePnLConfig:o,pagination:i,isLoading:r,tableData:n,onSymbolChange:a,mutatePositions:s}=t,l=ro({pnlNotionalDecimalPrecision:e,sharePnLConfig:o,onSymbolChange:a}),{dataSource:m=[]}=n;return jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{bordered:true,loading:r,id:"oui-desktop-positions-content",columns:l,dataSource:m,expanded:true,getSubRows:u=>u.children,generatedRowKey:u=>u.id,onCell:(u,c)=>{if((c.children??[]).length>0)return {children:u.id==="symbol"?jsxRuntime.jsx(ui$1.Badge,{color:"neutral",size:"xs",children:c?.description||ui$1.formatAddress(c?.id)}):null}},renderRowContainer:(u,c,d)=>u.symbol?jsxRuntime.jsx(St,{symbol:u.symbol,children:jsxRuntime.jsx(Te,{position:u,mutatePositions:s,children:d})}):d,manualPagination:false,pagination:i,testIds:{body:"oui-testid-dataList-position-tab-body"}})};var ma=t=>{let e=Qe(t);return jsxRuntime.jsx(Ei,{...e})},ca=t=>{let e=Qe(t);return jsxRuntime.jsx(zi,{...e})},da=t=>{let e=$o(t);return jsxRuntime.jsx(Hi,{...e})};var Qi=t=>{let{onSymbolChange:e,pnlNotionalDecimalPrecision:o}=t,{t:i}=i18n.useTranslation();return br.useMemo(()=>[{title:i("common.symbol"),dataIndex:"symbol",fixed:"left",width:200,onSort:(n,a)=>n.symbol.localeCompare(a.symbol),render:(n,a)=>jsxRuntime.jsx(xa,{record:a,onSymbolChange:e})},{title:i("positions.history.column.closed&maxClosed"),dataIndex:"close_maxClose",width:200,render:(n,a)=>jsxRuntime.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)=>jsxRuntime.jsxs(ui$1.Flex,{gapX:1,children:[jsxRuntime.jsx(Pa,{record:a,pnlNotionalDecimalPrecision:o}),jsxRuntime.jsx(dt,{position:a,sharePnLConfig:t.sharePnLConfig,modalId:uiShare.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}=W();return jsxRuntime.jsx(ui$1.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}=W();return jsxRuntime.jsx(ui$1.Text.numeral,{dp:l,padding:false,children:s})}},{title:i("funding.fundingFee"),dataIndex:"accumulated_funding_fee",render:(n,a)=>jsxRuntime.jsx(lt,{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)=>jsxRuntime.jsx(ui$1.Text.formatted,{rule:"date",formatString:"yyyy-MM-dd HH:mm:ss",children:a.open_timestamp})},{title:i("positions.history.column.timeClosed