@orderly.network/ui-positions 2.0.0 → 2.0.1-alpha.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.d.mts CHANGED
@@ -1,42 +1,20 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { SharePnLConfig, SharePnLParams } from '@orderly.network/ui-share';
3
+ import { PriceMode } from '@orderly.network/hooks';
3
4
  import { API } from '@orderly.network/types';
4
5
 
5
6
  type PositionsProps = {
6
7
  pnlNotionalDecimalPrecision?: number;
7
8
  sharePnLConfig?: SharePnLConfig & Partial<Omit<SharePnLParams, "position" | "refCode" | "leverage">>;
9
+ symbol?: string;
10
+ calcMode?: PriceMode;
11
+ includedPendingOrder?: boolean;
12
+ onSymbolChange?: (symbol: API.Symbol) => void;
8
13
  };
9
14
 
10
15
  declare const PositionsWidget: (props: PositionsProps) => react_jsx_runtime.JSX.Element;
11
-
12
- type TPSLBuilderOptions = {
13
- position: API.Position;
14
- order?: API.AlgoOrder;
15
- /**
16
- * either show the confirm dialog or not,
17
- * if the Promise reject or return false, cancel the sumbit action
18
- */
19
- onConfirm?: () => Promise<boolean>;
20
- };
21
-
22
- type TPSLProps = {
23
- onCancel?: () => void;
24
- onComplete?: () => void;
25
- };
26
- type PositionTPSLConfirmProps = {
27
- symbol: string;
28
- isPosition: boolean;
29
- qty: number;
30
- tpPrice?: number;
31
- slPrice?: number;
32
- };
33
- declare const PositionTPSLConfirm: (props: PositionTPSLConfirmProps) => react_jsx_runtime.JSX.Element;
34
-
35
- type TPSLWidgetProps = {} & TPSLBuilderOptions & TPSLProps;
36
- declare const TPSLWidget: (props: TPSLWidgetProps) => react_jsx_runtime.JSX.Element;
37
-
38
- declare const TPSLEditorWidget: (props: TPSLWidgetProps) => react_jsx_runtime.JSX.Element;
16
+ declare const MobilePositionsWidget: (props: PositionsProps) => react_jsx_runtime.JSX.Element;
39
17
 
40
18
  declare const MarketCloseConfirmID = "MarketCloseConfirmID";
41
19
 
42
- export { MarketCloseConfirmID, PositionTPSLConfirm, type PositionsProps, PositionsWidget, TPSLEditorWidget, TPSLWidget };
20
+ export { MarketCloseConfirmID, MobilePositionsWidget, type PositionsProps, PositionsWidget };
package/dist/index.d.ts CHANGED
@@ -1,42 +1,20 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { SharePnLConfig, SharePnLParams } from '@orderly.network/ui-share';
3
+ import { PriceMode } from '@orderly.network/hooks';
3
4
  import { API } from '@orderly.network/types';
4
5
 
5
6
  type PositionsProps = {
6
7
  pnlNotionalDecimalPrecision?: number;
7
8
  sharePnLConfig?: SharePnLConfig & Partial<Omit<SharePnLParams, "position" | "refCode" | "leverage">>;
9
+ symbol?: string;
10
+ calcMode?: PriceMode;
11
+ includedPendingOrder?: boolean;
12
+ onSymbolChange?: (symbol: API.Symbol) => void;
8
13
  };
9
14
 
10
15
  declare const PositionsWidget: (props: PositionsProps) => react_jsx_runtime.JSX.Element;
11
-
12
- type TPSLBuilderOptions = {
13
- position: API.Position;
14
- order?: API.AlgoOrder;
15
- /**
16
- * either show the confirm dialog or not,
17
- * if the Promise reject or return false, cancel the sumbit action
18
- */
19
- onConfirm?: () => Promise<boolean>;
20
- };
21
-
22
- type TPSLProps = {
23
- onCancel?: () => void;
24
- onComplete?: () => void;
25
- };
26
- type PositionTPSLConfirmProps = {
27
- symbol: string;
28
- isPosition: boolean;
29
- qty: number;
30
- tpPrice?: number;
31
- slPrice?: number;
32
- };
33
- declare const PositionTPSLConfirm: (props: PositionTPSLConfirmProps) => react_jsx_runtime.JSX.Element;
34
-
35
- type TPSLWidgetProps = {} & TPSLBuilderOptions & TPSLProps;
36
- declare const TPSLWidget: (props: TPSLWidgetProps) => react_jsx_runtime.JSX.Element;
37
-
38
- declare const TPSLEditorWidget: (props: TPSLWidgetProps) => react_jsx_runtime.JSX.Element;
16
+ declare const MobilePositionsWidget: (props: PositionsProps) => react_jsx_runtime.JSX.Element;
39
17
 
40
18
  declare const MarketCloseConfirmID = "MarketCloseConfirmID";
41
19
 
42
- export { MarketCloseConfirmID, PositionTPSLConfirm, type PositionsProps, PositionsWidget, TPSLEditorWidget, TPSLWidget };
20
+ export { MarketCloseConfirmID, MobilePositionsWidget, type PositionsProps, PositionsWidget };
package/dist/index.js CHANGED
@@ -7,13 +7,14 @@ var hooks = require('@orderly.network/hooks');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
  var utils = require('@orderly.network/utils');
9
9
  var uiShare = require('@orderly.network/ui-share');
10
+ var uiTpsl = require('@orderly.network/ui-tpsl');
11
+ var uiConnector = require('@orderly.network/ui-connector');
12
+ var reactApp = require('@orderly.network/react-app');
10
13
 
11
- var fe=react.createContext({}),O=()=>react.useContext(fe),Pe=e=>{let[t,o]=react.useState(Math.abs(e.position.position_qty).toString());react.useEffect(()=>{o(Math.abs(e.position.position_qty).toString());},[e.position.position_qty]);let[i,r]=react.useState(""),[s,a]=react.useState(e.position.position_qty>0?types.OrderSide.SELL:types.OrderSide.BUY),[u,l]=react.useState(types.OrderType.MARKET),x=hooks.useSymbolsInfo(),F=e.position.symbol,m=x?.[F],y=m("quote_dp"),p=m("base_dp"),{helper:g,onSubmit:k,submitting:$}=hooks.useOrderEntry(e.position?.symbol,s,!0),U=(S,I)=>{if(l(S),S===types.OrderType.LIMIT){if(!I)throw new Error("price is required");r(I);}else r("");},b=react.useMemo(()=>{let{position:S}=e;if(!S)return null;let I={order_quantity:t,symbol:e.position.symbol,order_type:u,side:s,reduce_only:!0};return u===types.OrderType.LIMIT&&(I.order_price=i),I},[e.position,i,u,t]),C=S=>{let I=g.calculate({},"order_quantity",S);o(I.order_quantity);},G=S=>{let I=g.calculate({},"order_price",S);r(I.order_price);},K=()=>k(b);return jsxRuntime.jsx(fe.Provider,{value:{quantity:t,price:i,type:u,side:s,position:e.position,updatePriceChange:G,updateQuantity:C,updateOrderType:U,tpslOrder:e.position.algo_order,onSubmit:K,submitting:$,closeOrderData:b,quoteDp:y,baseDp:p},children:e.children})};var ge=react.createContext({}),ye=()=>react.useContext(ge),xe=e=>{let t=hooks.useSymbolsInfo()[e.symbol];return jsxRuntime.jsx(ge.Provider,{value:{base_dp:t("base_dp"),quote_dp:t("quote_dp"),base_tick:t("base_tick"),base:t("base"),quote:t("quote"),symbol:e.symbol},children:e.children})};var Te=()=>{let[e,t]=react.useState(!1),{onSubmit:o,price:i,quantity:r,closeOrderData:s,type:a,submitting:u,quoteDp:l}=O(),{base:x,quote:F}=ye(),m=()=>o().then(g=>{t(!1);},g=>{typeof g=="string"?ui.toast.error(g):ui.toast.error(g.message);}),y=()=>{t(!1);},p=react.useMemo(()=>a===types.OrderType.MARKET?!r:!i||!r,[i,r,a]);return jsxRuntime.jsx(ui.Popover,{open:e,onOpenChange:t,contentProps:{className:"oui-w-[360px] oui-px-5 oui-rounded-xl"},content:a===types.OrderType.MARKET?jsxRuntime.jsx(X,{base:x,quantity:r,onClose:y,onConfirm:m,submitting:u}):jsxRuntime.jsx(Lt,{base:x,quantity:r,price:i,onClose:y,onConfirm:m,submitting:u,quoteDp:l,order:s}),children:jsxRuntime.jsx(ui.Button,{variant:"outlined",size:"sm",color:"secondary",disabled:p,onClick:g=>{g.stopPropagation();},children:"Close"})})},Le=e=>jsxRuntime.jsxs("div",{className:"oui-pb-3 oui-border-b oui-border-line-4 oui-relative oui-w-full",children:[jsxRuntime.jsx(ui.Text,{size:"base",children:e.title}),jsxRuntime.jsx("button",{onClick:e.onClose,className:"oui-absolute oui-right-0 oui-top-0 oui-text-base-contrast-54 hover:oui-text-base-contrast-80 oui-p-2",children:jsxRuntime.jsx(ui.CloseIcon,{size:18,color:"white"})})]}),he=({onCancel:e,onConfirm:t,submitting:o})=>jsxRuntime.jsxs(ui.Flex,{id:"oui-positions-confirm-footer",gap:2,width:"100%",className:"oui-mt-3 oui-pb-1",children:[jsxRuntime.jsx(ui.Button,{id:"oui-positions-confirm-footer-cancel-button",color:"secondary",fullWidth:!0,onClick:e,size:"md",children:"Cancel"}),jsxRuntime.jsx(ui.Button,{id:"oui-positions-confirm-footer-confirm-button",onClick:t,fullWidth:!0,loading:o,size:"md",children:"Confirm"})]}),Tt=e=>{let{quantity:t,price:o,quoteDp:i,side:r}=e;return jsxRuntime.jsxs(ui.Flex,{direction:"column",gap:1,width:"100%",className:"oui-text-sm oui-text-base-contrast-54",py:5,children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui.Text,{children:"Qty."}),jsxRuntime.jsx(ui.Text,{color:r===types.OrderSide.BUY?"success":"danger",children:t})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui.Text,{children:"Price"}),jsxRuntime.jsx(ui.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui.Text,{intensity:54,children:"USDC"}),children:o})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui.Text,{children:"Total"}),jsxRuntime.jsx(ui.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui.Text,{intensity:54,children:"USDC"}),children:new utils.Decimal(o).mul(t).toFixed(i,utils.Decimal.ROUND_DOWN)})]})]})},X=e=>{let t=()=>{(e?.onClose??e.close)?.();};return jsxRuntime.jsxs(ui.Flex,{direction:"column",children:[jsxRuntime.jsx(Le,{onClose:t,title:"Market Close"}),jsxRuntime.jsx(ui.Text,{intensity:54,size:"sm",className:"oui-my-5",children:`You agree closing ${utils.commifyOptional(e.quantity)} ${e.base} position at market price.`}),jsxRuntime.jsx(he,{onCancel:t,onConfirm:async()=>{await e.onConfirm?.(),t();},submitting:e.submitting})]})},Lt=e=>{let{order:t,quoteDp:o,quantity:i,price:r,submitting:s}=e,{side:a}=t,u=()=>{e.onClose();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Le,{onClose:u,title:"Limit close"}),jsxRuntime.jsx(ui.Text,{intensity:54,size:"sm",className:"oui-mt-5",children:`You agree closing ${utils.commify(e.quantity)} ${e.base} position at limit price.`}),jsxRuntime.jsxs(ui.Flex,{gap:2,mb:4,mt:5,justify:"between",children:[jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",formatString:"base-type",size:"base",showIcon:!0,children:t.symbol}),jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Badge,{color:"neutural",size:"xs",children:"Limit"}),jsxRuntime.jsx(ui.Badge,{color:a===types.OrderSide.BUY?"success":"danger",size:"xs",children:a===types.OrderSide.BUY?"Buy":"Sell"})]})]}),jsxRuntime.jsx(ui.Divider,{className:"oui-w-full"}),jsxRuntime.jsx(Tt,{className:"oui-text-sm",price:r,quantity:i,side:t.side,quoteDp:o??2}),jsxRuntime.jsx(he,{onCancel:u,onConfirm:e.onConfirm,submitting:e.submitting})]})};var Ie=e=>{let{type:t,values:o}=e,[i,r]=hooks.useLocalStorage("TP/SL_Mode","Offset%"),s=react.useMemo(()=>{switch(i){case"Offset":return `${t.toLowerCase()}_offset`;case"Offset%":return `${t.toLowerCase()}_offset_percentage`;default:return `${t.toLowerCase()}_pnl`}},[i]),a=react.useMemo(()=>o[i],[o]),u=react.useMemo(()=>[{label:"PnL",value:"PnL",testId:"PnL_menu_item"},{label:"Offset",value:"Offset",testId:"Offset_mneu_item"},{label:"Offset%",value:"Offset%",testId:"Offset%_menu_item"}],[]),l=react.useRef("");return {mode:i,modes:u,formatter:m=>{return {onRenderBefore:(p,g)=>p===""?p:i==="PnL"||i==="Offset"?utils.commify(p):i==="Offset%"?`${new utils.Decimal(p).mul(100).todp(2,4).toString()}${l.current}`:`${p}`,onSendBefore:p=>(i==="Offset%"&&p!==""&&(l.current=p.endsWith(".")?".":"",p=new utils.Decimal(p).div(100).todp(4,4).toString()),p)}},onModeChange:m=>{r(m);},value:a,onValueChange:m=>{e.onChange(s,m);},quote_db:e.quote_dp}};var Oe=e=>{let{mode:t,modes:o,onModeChange:i,onValueChange:r,quote:s,quote_db:a,value:u}=e;return jsxRuntime.jsx(ui.Input,{prefix:t,size:"md",placeholder:t==="Offset%"?"%":s,align:"right",value:u,"data-testid":e.testId,autoComplete:"off",onValueChange:r,formatters:[e.formatter({dp:a,mode:t})],suffix:jsxRuntime.jsx(Ft,{modes:o,onModeChange:l=>i(l.value)})})},Ft=e=>jsxRuntime.jsx(ui.SimpleDropdownMenu,{menu:e.modes,align:"end",size:"xs",className:"oui-min-w-[80px]",onSelect:t=>e.onModeChange(t),children:jsxRuntime.jsx("button",{className:"oui-p-2",children:jsxRuntime.jsx(ui.CaretDownIcon,{size:12,color:"white"})})});var j=e=>{let{testId:t,quote:o,...i}=e,r=Ie(i);return jsxRuntime.jsx(Oe,{...r,testId:t,quote:o})};var Ee=e=>{let{TPSL_OrderEntity:t,symbolInfo:o,onCancel:i,onComplete:r}=e;return jsxRuntime.jsxs("div",{id:"orderly-tp_sl-order-edit-content",children:[!e.isEditing&&jsxRuntime.jsx(Rt,{maxQty:e.maxQty,quantity:e.orderQuantity??e.maxQty,tick:o("base_tick"),onQuantityChange:e.setQuantity,quote:"BTC"}),jsxRuntime.jsx(ui.Divider,{my:4,intensity:8}),jsxRuntime.jsx(At,{sl_pnl:t.sl_pnl,tp_pnl:t.tp_pnl,quote:o("quote"),quote_db:o("quote_dp"),onPriceChange:e.setOrderPrice,onPnLChange:e.setPnL,tp_values:{PnL:`${t.tp_pnl??""}`,Offset:`${t.tp_offset??""}`,"Offset%":`${t.tp_offset_percentage??""}`},sl_values:{PnL:`${t.sl_pnl??""}`,Offset:`${t.sl_offset??""}`,"Offset%":`${t.sl_offset_percentage??""}`},tp_trigger_price:t.tp_trigger_price??"",sl_trigger_price:t.sl_trigger_price??""}),jsxRuntime.jsxs(ui.Grid,{cols:2,gap:3,mt:4,children:[jsxRuntime.jsx(ui.Button,{size:"md",color:"secondary","data-testid":"tpsl-cancel",onClick:()=>{i?.();},children:"Cancel"}),jsxRuntime.jsx(ui.Button,{size:"md","data-testid":"tpsl-confirm",disabled:!e.valid,onClick:()=>{e.onSubmit();},children:"Confirm"})]})]})},Rt=e=>{let t=e.quantity===e.maxQty,o=react.useRef(null),i=()=>{e.onQuantityChange?.(0),o.current?.focus(),setTimeout(()=>{o.current?.setSelectionRange(0,1);},0);};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(ui.Flex,{gap:2,children:[jsxRuntime.jsx("div",{className:"oui-flex-1",children:jsxRuntime.jsx(ui.Input,{ref:o,prefix:"Quantity",size:"md",align:"right",value:t?"":e.quantity,autoComplete:"off",formatters:[ui.inputFormatter.numberFormatter,ui.inputFormatter.currencyFormatter],onValueChange:r=>{e.onQuantityChange?.(r);},suffix:t?jsxRuntime.jsx("button",{className:"oui-text-2xs oui-text-base-contrast-54 oui-px-3",onClick:()=>{i();},children:"Entire position"}):jsxRuntime.jsx("span",{className:"oui-text-2xs oui-text-base-contrast-54 oui-px-3",children:e.quote})})}),jsxRuntime.jsx(ui.Button,{onClick:()=>{let r=t?0:e.maxQty;e.onQuantityChange?.(r),r===0&&i();},variant:"outlined",size:"md",className:ui.cn(t?"oui-border-primary-light oui-text-primary-light hover:oui-bg-primary-light/20":"oui-border-line-12 oui-text-base-contrast-54 hover:oui-bg-base-5"),children:"Position"})]}),jsxRuntime.jsx(ui.Flex,{mt:2,itemAlign:"center",height:"15px",children:jsxRuntime.jsx(ui.Slider.signle,{markCount:5,color:"primaryLight",max:e.maxQty,min:0,step:e.tick,value:e.quantity,onValueChange:r=>{e.onQuantityChange?.(r);}})}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",color:"primaryLight",size:"2xs",children:"0"}),jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",gap:1,children:[jsxRuntime.jsx("button",{className:"oui-leading-none",style:{lineHeight:0},onClick:()=>{e.onQuantityChange?.(e.maxQty);},children:jsxRuntime.jsx(ui.Text,{color:"primaryLight",size:"2xs",children:"Max"})}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",size:"2xs",intensity:54,tick:e.tick,children:e.maxQty})]})]})]})},At=e=>{let t=(o,i)=>{e.onPnLChange(o,i);};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"sm",children:"Task profit"}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:36,children:"Est. PNL:"}),jsxRuntime.jsx(ui.Text.numeral,{size:"2xs",coloring:!0,showIdentifier:!0,children:e.tp_pnl??"-"})]})]}),jsxRuntime.jsxs(ui.Grid,{cols:2,gap:2,pt:2,pb:4,children:[jsxRuntime.jsx(we,{type:"TP",value:e.tp_trigger_price,onValueChange:o=>{e.onPriceChange("tp_trigger_price",o);}}),jsxRuntime.jsx(j,{type:"TP",onChange:t,quote:e.quote,quote_dp:e.quote_db,values:e.tp_values})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"sm",children:"Stop loss"}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:36,children:"Est. PNL:"}),jsxRuntime.jsx(ui.Text.numeral,{size:"2xs",coloring:!0,showIdentifier:!0,children:e.sl_pnl??"-"})]})]}),jsxRuntime.jsxs(ui.Grid,{cols:2,gap:2,pt:2,pb:4,children:[jsxRuntime.jsx(we,{type:"SL",value:e.sl_trigger_price,onValueChange:o=>{e.onPriceChange("sl_trigger_price",o);}}),jsxRuntime.jsx(j,{type:"SL",onChange:t,quote:e.quote,quote_dp:e.quote_db,values:e.sl_values})]})]})]})},we=e=>jsxRuntime.jsx(ui.Input,{prefix:`${e.type} price`,size:"md",placeholder:"USDC",align:"right",autoComplete:"off",value:e.value,onValueChange:e.onValueChange,formatters:[ui.inputFormatter.numberFormatter,ui.inputFormatter.currencyFormatter]}),De=()=>jsxRuntime.jsx(ui.Button,{variant:"outlined",size:"sm",color:"secondary",children:"TP/SL"}),te=e=>{let{symbol:t,tpPrice:o,slPrice:i,qty:r}=e,s=ui.textVariants({size:"xs",intensity:54});return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(ui.Flex,{pt:5,pb:4,children:[jsxRuntime.jsx(ui.Box,{grow:!0,children:jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",size:"base",showIcon:!0,as:"div",children:t})}),jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Badge,{size:"xs",color:"primaryLight",children:"Position"}),jsxRuntime.jsx(ui.Badge,{size:"xs",color:"neutural",children:"TP/SL"})]})]}),jsxRuntime.jsx(ui.Divider,{}),jsxRuntime.jsxs(ui.Flex,{direction:"column",itemAlign:"stretch",gapY:1,pt:4,pb:5,className:s,children:[jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Box,{grow:!0,children:"Qty."}),jsxRuntime.jsx("div",{children:"Entire position"})]}),typeof o=="number"?jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Box,{grow:!0,children:"TP Price"}),jsxRuntime.jsx(ui.Text.numeral,{as:"div",coloring:!0,unit:"USDC",size:"sm",unitClassName:"oui-text-base-contrast-54 oui-ml-1",children:"52.32"})]}):null,jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Box,{grow:!0,children:"SL Price"}),jsxRuntime.jsx(ui.Text.numeral,{as:"div",coloring:!0,unit:"USDC",size:"sm",unitClassName:"oui-text-base-contrast-54 oui-ml-1",children:"52.32"})]}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Box,{grow:!0,children:"Price"}),jsxRuntime.jsx("div",{children:"Market"})]})]}),jsxRuntime.jsx(ui.Box,{py:2,children:jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Checkbox,{id:"disabledConfirm"}),jsxRuntime.jsx("label",{htmlFor:"disabledConfirm",className:ui.textVariants({size:"xs",intensity:54,className:"oui-ml-1"}),children:"Disable order confirmation"})]})})]})};var ke=()=>{let{type:e,quoteDp:t,price:o,updatePriceChange:i,updateOrderType:r,position:s}=O();return jsxRuntime.jsxs(ui.DropdownMenuRoot,{children:[jsxRuntime.jsx(ui.Input,{size:"sm",value:e===types.OrderType.LIMIT?o:"Market",onValueChange:a=>i(a),formatters:[ui.inputFormatter.numberFormatter,...t?[ui.inputFormatter.dpFormatter(t)]:[]],onFocus:a=>{e===types.OrderType.MARKET&&r(types.OrderType.LIMIT,`${s.mark_price}`);},suffix:jsxRuntime.jsx(ui.DropdownMenuTrigger,{asChild:!0,children:jsxRuntime.jsx("button",{className:"oui-px-1 oui-h-full",children:jsxRuntime.jsx(ui.CaretDownIcon,{size:12,color:"white"})})})}),jsxRuntime.jsx(ui.DropdownMenuContent,{align:"end",className:"oui-w-[96px] oui-min-w-[96px]",children:jsxRuntime.jsx(ui.DropdownMenuGroup,{children:jsxRuntime.jsx(ui.DropdownMenuItem,{size:"xs",onSelect:a=>{r(types.OrderType.MARKET);},children:jsxRuntime.jsx("span",{children:"Market"})})})})]})};var Qe=e=>{let[t,o]=react.useState(!1),[i,r]=react.useState(100),{baseDp:s,quoteDp:a,updateQuantity:u,quantity:l,type:x}=O();react.useEffect(()=>{let m=y=>{y.target.closest("[data-popover-root]")||o(!1);};return document.addEventListener("click",m),()=>{document.removeEventListener("click",m);}},[]);let F=m=>{u(`${e.value*(m/100)}`);};return jsxRuntime.jsxs(ui.PopoverRoot,{children:[jsxRuntime.jsx(ui.PopoverTrigger,{children:jsxRuntime.jsx(ui.Input,{size:"sm",onFocus:()=>{o(!0);},formatters:[ui.inputFormatter.numberFormatter,...s?[ui.inputFormatter.dpFormatter(s)]:[]],value:l,onValueChange:m=>{if(u(m),x===types.OrderType.LIMIT){let y=new utils.Decimal(m).div(e.value).mul(100).abs().toFixed(0,utils.Decimal.ROUND_DOWN);r(Math.min(100,Number(y)));}}})}),jsxRuntime.jsx(ui.PopoverContent,{className:"oui-w-[360px] oui-rounded-xl",align:"start",side:"bottom",onOpenAutoFocus:m=>{m.preventDefault();},children:jsxRuntime.jsxs(ui.Flex,{p:1,gap:2,width:"100%",itemAlign:"start",children:[jsxRuntime.jsx(ui.Text,{size:"xs",intensity:98,className:"oui-min-w-[30px]",children:`${i}%`}),jsxRuntime.jsxs(ui.Flex,{direction:"column",width:"100%",gap:2,children:[jsxRuntime.jsx(ui.Slider,{markCount:4,value:[i],onValueChange:m=>{let y=Array.from(m.values());r(y[0]),F(y[0]);}}),jsxRuntime.jsx(ro,{onClick:m=>{r(m*100),F(m*100);}})]})]})})]})},ro=e=>jsxRuntime.jsx(ui.Flex,{gap:2,width:"100%",children:[{label:"0%",value:0},{label:"25%",value:.25},{label:"50%",value:.5},{label:"75%",value:.75},{label:"Max",value:1}].map((o,i)=>jsxRuntime.jsx(ui.Button,{variant:"outlined",color:"secondary",size:"xs",onClick:r=>{r.stopPropagation(),e.onClick(o.value);},className:"oui-w-1/5",children:o.label},i))});var We=(e,t)=>jsxRuntime.jsx(ui.Text.numeral,{dp:t?.symbolInfo?.("base_dp"),rm:utils.Decimal.ROUND_DOWN,padding:!1,coloring:!0,children:e}),Ve=(e,t)=>jsxRuntime.jsx(Qe,{value:t.position_qty}),$e=e=>jsxRuntime.jsx(ke,{});var se=e=>jsxRuntime.jsx("button",{type:"button",onClick:t=>{t.stopPropagation(),ui.modal.show(uiShare.SharePnLDialogId,{pnl:{position:e.position,refCode:e.refCode,leverage:e.leverage,...e.sharePnLConfig}});},children:jsxRuntime.jsx(ui.ShareIcon,{color:"white",size:16})});var Ge=e=>{let{sharePnLConfig:t,position:o}=e,{getFirstRefCode:i}=hooks.useReferralInfo(),r=react.useMemo(()=>i()?.code,[i]),s=hooks.useSymbolLeverage(e.position.symbol);return {position:o,refCode:r,leverage:s,sharePnLConfig:t}};var ae=e=>{let t=Ge(e);return jsxRuntime.jsx(se,{...t})};var He=e=>{let{stopLossPrice:t,takeProfitPrice:o}=e,{tpslOrder:i,position:r}=O();return jsxRuntime.jsx(xo,{stopLossPrice:t,takeProfitPrice:o,direction:"column",order:i,position:r,tooltip:!0})},Ye=e=>{let{qty:t,price:o,entryPrice:i,orderSide:r,orderType:s,symbolInfo:a}=e,u=hooks.utils.priceToPnl({qty:t,price:o,entryPrice:i,orderSide:r,orderType:s},{symbol:a}),l=s===types.AlgoOrderType.TAKE_PROFIT?"TP":"SL";return jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Text,{intensity:54,className:"oui-mr-1",children:`${l} PnL:`}),jsxRuntime.jsx(ui.Text.formatted,{rule:"price",className:u===0?"oui-text-base-contrast-36":u>0?"oui-text-trade-profit oui-gap-0":"oui-text-trade-loss oui-gap-0",prefix:jsxRuntime.jsx(ui.Text,{children:u===0?"":u>0?"+":"-"}),suffix:jsxRuntime.jsx(ui.Text,{intensity:36,className:"oui-ml-1",children:"USDC"}),children:`${Math.abs(u)}`})]})},xo=e=>{let{direction:t="row",order:o,position:i}=e,r=hooks.useSymbolsInfo(),s=react.useMemo(()=>{let l=[];if(!e.tooltip||!o||!i)return;let x=o.quantity;return x===0&&o.child_orders[0].type==="CLOSE_POSITION"&&(x=i.position_qty),e.takeProfitPrice&&l.push(jsxRuntime.jsx(Ye,{qty:x,price:e.takeProfitPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.TAKE_PROFIT,symbolInfo:r[o.symbol]()},"tp")),e.stopLossPrice&&l.push(jsxRuntime.jsx(Ye,{qty:x,price:e.stopLossPrice,entryPrice:i.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.STOP_LOSS,symbolInfo:r[o.symbol]()},"sl")),jsxRuntime.jsx("div",{children:l})},[e.takeProfitPrice,e.stopLossPrice,i?.average_open_price,o?.side,o?.quantity,o?.algo_type]),a=react.useMemo(()=>{let l=[];return o?.symbol?(e.takeProfitPrice&&l.push(jsxRuntime.jsx(ui.Text.formatted,{className:ui.cn("oui-text-trade-profit oui-gap-0 oui-decoration-white/20"),rule:"price",precision:r[o.symbol]("quote_dp",2),children:e.takeProfitPrice,prefix:!e.stopLossPrice||t==="column"?jsxRuntime.jsx(ui.Text,{intensity:54,children:"TP\xA0-\xA0"}):""},"tp")),e.stopLossPrice&&l.push(jsxRuntime.jsx(ui.Text.formatted,{className:ui.cn("oui-text-trade-loss oui-gap-0 oui-decoration-white/20 "),rule:"price",precision:r[o.symbol]("quote_dp",2),children:e.stopLossPrice,prefix:!e.takeProfitPrice||t==="column"?jsxRuntime.jsx(ui.Text,{intensity:54,children:"SL\xA0-\xA0"}):""},"sl")),l.length===0?jsxRuntime.jsx(ui.Text,{children:"-"}):(l.length===2&&t==="row"&&l.splice(1,0,jsxRuntime.jsx(ui.Text,{children:"/"},"split")),l)):jsxRuntime.jsx("span",{children:"-"})},[e.takeProfitPrice,e.stopLossPrice,o?.symbol]),u=jsxRuntime.jsx("div",{className:ui.cn("oui-inline-flex oui-text-base-contrast-36",e.direction==="column"?"oui-flex-col":"oui-flex-row oui-gap-1",e.className),children:a});return e.tooltip?jsxRuntime.jsx(ui.Tooltip,{content:s,children:u}):u};var Xe=e=>{let{pnlNotionalDecimalPrecision:t,sharePnLConfig:o}=e;return react.useMemo(()=>[{title:"Instrument",dataIndex:"symbol",fixed:"left",width:120,onSort:(r,s,a)=>a==="asc"?r.symbol.localeCompare(s.symbol):s.symbol.localeCompare(r.symbol),render:r=>jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",onClick:s=>{},children:r})},{title:"Quantity",dataIndex:"position_qty",onSort:!0,width:100,render:We},{title:"Avg. open",className:"orderly-h-[48px]",width:120,onSort:!0,dataIndex:"average_open_price",render:(r,s)=>jsxRuntime.jsx(ui.Text.numeral,{dp:s?.symbolInfo?.("quote_dp"),rm:utils.Decimal.ROUND_DOWN,children:r})},{title:"Mark price",dataIndex:"mark_price",width:120,onSort:!0,className:"orderly-h-[48px]",render:(r,s)=>jsxRuntime.jsx(ui.Text.numeral,{dp:s?.symbolInfo?.("quote_dp"),rm:utils.Decimal.ROUND_DOWN,children:r})},{title:"Liq. price",width:100,onSort:!0,hint:"Estimated price at which your position will be liquidated. Prices are estimated and depend on multiple factors across all positions.",dataIndex:"est_liq_price",render:(r,s)=>Number(r)===0?"--":jsxRuntime.jsx(ui.Text.numeral,{dp:s?.symbolInfo?.("quote_dp"),rm:utils.Decimal.ROUND_DOWN,children:r})},{title:"Unreal. PnL",dataIndex:"unrealized_pnl",width:150,onSort:!0,rule:"price",numeralProps:{coloring:!0},render:(r,s)=>jsxRuntime.jsxs(ui.Flex,{gap:2,children:[jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Text.numeral,{dp:e.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:!0,className:"orderly-font-semibold",children:r}),jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",dp:e.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:!0,className:"orderly-font-semibold",prefix:"(",suffix:")",children:s.unrealized_pnl_ROI})]}),jsxRuntime.jsx(ae,{position:s,sharePnLConfig:e.sharePnLConfig})]})},{title:"TP/SL",dataIndex:"__",width:150,render:(r,s)=>jsxRuntime.jsx(He,{stopLossPrice:s.sl_trigger_price,takeProfitPrice:s.tp_trigger_price})},{title:"Est. total",dataIndex:"notional",className:"orderly-h-[48px]",width:100,onSort:!0},{title:"Margin",dataIndex:"mm",onSort:!0,width:100,rule:"price"},{title:"Qty.",dataIndex:"close_qty",width:100,fixed:"right",render:Ve},{title:"Price",dataIndex:"close_price",width:100,fixed:"right",render:$e},{title:"",dataIndex:"close_position",align:"right",width:160,fixed:"right",render:r=>jsxRuntime.jsxs("div",{className:"oui-flex oui-space-x-2",children:[jsxRuntime.jsx(Te,{}),jsxRuntime.jsx(De,{})]})}],[t,o])};var Ze=e=>{let{pnlNotionalDecimalPrecision:t,sharePnLConfig:o}=e,i=Xe({pnlNotionalDecimalPrecision:t,sharePnLConfig:o});return jsxRuntime.jsx("div",{children:jsxRuntime.jsx(ui.DataTable,{loading:e.isLoading,id:"oui-desktop-positions-content",classNames:{header:"oui-text-base-contrast-36",body:"oui-text-base-contrast-80"},columns:i,bordered:!0,dataSource:e.dataSource,generatedRowKey:r=>r.symbol,renderRowContainer:(r,s,a)=>jsxRuntime.jsx(xe,{symbol:r.symbol,children:jsxRuntime.jsx(Pe,{position:r,children:a})})})})};var je=()=>{let[e,t,{isLoading:o}]=hooks.usePositionStream();return {dataSource:e?.rows,isLoading:o}};var To=e=>{let t=je();return jsxRuntime.jsx(Ze,{...t,pnlNotionalDecimalPrecision:e.pnlNotionalDecimalPrecision,sharePnLConfig:e.sharePnLConfig})};var ot=e=>{let{position:t,order:o}=e,i=!!o,r=i?o.symbol:t.symbol,s=hooks.useSymbolsInfo(),[a,{submit:u,setValue:l,validate:x,errors:F}]=hooks.useTPSLOrder({symbol:r,position_qty:t.position_qty,average_open_price:t.average_open_price},{defaultOrder:o}),m=b=>{l("quantity",b);},y=(b,C)=>{l(b,C);},p=(b,C)=>{l(b,C);},g=react.useMemo(()=>t.position_qty,[t.position_qty]),k=react.useMemo(()=>{let b=o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL?g:o?.quantity,C=0;if(Number(a.quantity)!==b&&(C=1),o){let G=o.child_orders.find(S=>S.algo_type===types.AlgoOrderType.TAKE_PROFIT),K=o.child_orders.find(S=>S.algo_type===types.AlgoOrderType.STOP_LOSS);G?.trigger_price!==Number(a.tp_trigger_price)&&typeof typeof a.tp_trigger_price<"u"&&(C=2),K?.trigger_price!==Number(a.sl_trigger_price)&&typeof a.sl_trigger_price<"u"&&(C=3);}return C===1&&!a.tp_trigger_price&&!a.sl_trigger_price&&(C=-1),C},[a.tp_trigger_price,a.sl_trigger_price,a.quantity,o]),$=react.useMemo(()=>o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL&&Number(a.quantity)<g&&!a.tp_trigger_price&&!a.sl_trigger_price?!1:k>0&&!!a.quantity,[a.quantity,g,k]),U=async()=>Promise.resolve().then(()=>typeof e.onConfirm!="function"?!0:e.onConfirm()).then(b=>{if(b)return u()});return {isEditing:i,symbolInfo:s[r],maxQty:g,setQuantity:m,orderQuantity:a.quantity,isPosition:a.quantity===t.position_qty,TPSL_OrderEntity:a,setOrderValue:l,setPnL:p,setOrderPrice:y,onSubmit:U,valid:$}};var ce=e=>{let{onCancel:t,...o}=e,i=ot(o);return jsxRuntime.jsx(Ee,{...i,onCancel:t})};var rt=e=>{let{open:t,needConfirm:o,...i}=e;return jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(ui.SimpleDialog,{open:t,children:jsxRuntime.jsx(ce,{...i,onConfirm:()=>o?ui.modal.confirm({content:jsxRuntime.jsx(te,{symbol:"PERP_ETH_USDC",isPosition:!1,qty:0})}):Promise.resolve(!0)})})})};var it=e=>{let[t,o]=hooks.useLocalStorage("orderly_order_confirm",!0),[i,r]=react.useState(!1);return {open:i,needConfirm:t}};var Bo=e=>{let t=it();return jsxRuntime.jsx(rt,{...e,...t})};var Mo="MarketCloseConfirmID";ui.registerSimpleDialog(Mo,X,{size:"md",closable:!1});
14
+ var Qe=react.createContext({}),T=()=>react.useContext(Qe),pe=e=>{let[t,o]=react.useState(Math.abs(e.position.position_qty).toString());react.useEffect(()=>{o(Math.abs(e.position.position_qty).toString());},[e.position.position_qty]);let[r,i]=react.useState(""),[n,c]=react.useState(e.position.position_qty>0?types.OrderSide.SELL:types.OrderSide.BUY),[s,a]=react.useState(void 0),[f,_]=react.useState(types.OrderType.MARKET),N=hooks.useSymbolsInfo(),S=e.position.symbol,y=N?.[S],l=y("quote_dp"),m=y("base_dp"),F=y("base_tick"),{helper:h,onSubmit:g,submitting:v}=hooks.useOrderEntry_deprecated(e.position?.symbol,n,!0),$=(I,w)=>{if(_(I),I===types.OrderType.LIMIT){if(!w)throw new Error("price is required");i(w);}else i("");},q=react.useMemo(()=>{let{position:I}=e;if(!I)return null;let w={order_quantity:t,symbol:e.position.symbol,order_type:f,side:n,reduce_only:!0};return f===types.OrderType.LIMIT&&(w.order_price=r),w},[e.position,r,f,t]),ue=I=>{let w=h.calculate({},"order_quantity",I);o(w.order_quantity);},te=I=>{let w=h.calculate({},"order_price",I);i(w.order_price);};react.useEffect(()=>{let I=q;h.validator(I).then(w=>{a(w);});},[q]);let K=()=>g(q);return jsxRuntime.jsx(Qe.Provider,{value:{quantity:t,price:r,type:f,side:n,position:e.position,updatePriceChange:te,updateQuantity:ue,updateOrderType:$,tpslOrder:e.position.algo_order,onSubmit:K,submitting:v,closeOrderData:q,quoteDp:l,baseDp:m,baseTick:F,errors:s},children:e.children})};var Ve=react.createContext({}),D=()=>react.useContext(Ve),de=e=>{let t=hooks.useSymbolsInfo()[e.symbol];return jsxRuntime.jsx(Ve.Provider,{value:{base_dp:t("base_dp"),quote_dp:t("quote_dp"),base_tick:t("base_tick"),base:t("base"),quote:t("quote"),symbol:e.symbol},children:e.children})};var Xe=()=>{let[e,t]=react.useState(!1),{onSubmit:o,price:r,quantity:i,closeOrderData:n,type:c,submitting:s,quoteDp:a,errors:f}=T(),{base:_,quote:N}=D(),S=()=>o().then(m=>{t(!1);},m=>{typeof m=="string"?ui.toast.error(m):ui.toast.error(m.message);}),y=()=>{t(!1);},l=react.useMemo(()=>c===types.OrderType.MARKET?!i:!r||!i,[r,i,c]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Button,{variant:"outlined",size:"sm",color:"secondary",disabled:l,onClick:m=>{m.stopPropagation();let F=f?.order_quantity?.message,h=f?.order_price?.message;if(F||h){ui.toast.error(F??h);return}t(!0);},children:"Close"}),jsxRuntime.jsx(ui.SimpleDialog,{open:e,onOpenChange:t,size:"sm",children:c===types.OrderType.MARKET?jsxRuntime.jsx(Y,{base:_,quantity:i,onClose:y,onConfirm:S,submitting:s,classNames:{root:"oui-items-start"},hideCloseIcon:!0}):jsxRuntime.jsx(Pe,{base:_,quantity:i,price:r,onClose:y,onConfirm:S,submitting:s,quoteDp:a,order:n,hideCloseIcon:!0})})]})},Je=e=>{let{hideCloseIcon:t=!1}=e;return jsxRuntime.jsxs("div",{className:"oui-pb-3 oui-border-b oui-border-line-4 oui-relative oui-w-full",children:[jsxRuntime.jsx(ui.Text,{size:"base",children:e.title}),!t&&jsxRuntime.jsx("button",{onClick:e.onClose,className:"oui-absolute oui-right-0 oui-top-0 oui-text-base-contrast-54 hover:oui-text-base-contrast-80 oui-p-2",children:jsxRuntime.jsx(ui.CloseIcon,{size:18,color:"white"})})]})},Ze=({onCancel:e,onConfirm:t,submitting:o})=>jsxRuntime.jsxs(ui.Flex,{id:"oui-positions-confirm-footer",gap:2,width:"100%",className:"oui-mt-3 oui-pb-1",children:[jsxRuntime.jsx(ui.Button,{id:"oui-positions-confirm-footer-cancel-button",color:"secondary",fullWidth:!0,onClick:e,size:"md",children:"Cancel"}),jsxRuntime.jsx(ui.ThrottledButton,{id:"oui-positions-confirm-footer-confirm-button",onClick:t,fullWidth:!0,loading:o,size:"md",children:"Confirm"})]}),no=e=>{let{quantity:t,price:o,quoteDp:r,side:i}=e,n=react.useMemo(()=>o&&t?new utils.Decimal(o).mul(t).toFixed(r,utils.Decimal.ROUND_DOWN):"--",[o,t]);return jsxRuntime.jsxs(ui.Flex,{direction:"column",gap:1,width:"100%",className:"oui-text-sm oui-text-base-contrast-54",py:5,children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui.Text,{children:"Qty."}),jsxRuntime.jsx(ui.Text,{color:i===types.OrderSide.BUY?"success":"danger",children:t})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui.Text,{children:"Price"}),jsxRuntime.jsx(ui.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui.Text,{intensity:54,children:"USDC"}),children:o})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",width:"100%",gap:1,children:[jsxRuntime.jsx(ui.Text,{children:"Est. Total"}),jsxRuntime.jsx(ui.Text.formatted,{intensity:98,suffix:jsxRuntime.jsx(ui.Text,{intensity:54,children:"USDC"}),children:n})]})]})},Y=e=>{let t=()=>{(e?.onClose??e.close)?.();};return jsxRuntime.jsxs(ui.Flex,{direction:"column",className:e.classNames?.root,children:[jsxRuntime.jsx(Je,{onClose:t,title:"Market Close",hideCloseIcon:e.hideCloseIcon}),jsxRuntime.jsx(ui.Text,{intensity:54,size:"sm",className:"oui-my-5",children:`You agree closing ${utils.commifyOptional(e.quantity)} ${e.base} position at market price.`}),jsxRuntime.jsx(Ze,{onCancel:t,onConfirm:async()=>{await e.onConfirm?.(),t();},submitting:e.submitting})]})},Pe=e=>{let{order:t,quoteDp:o,quantity:r,price:i,submitting:n}=e,{side:c}=t,s=()=>{e.onClose?.();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Je,{onClose:s,title:"Limit Close",hideCloseIcon:e.hideCloseIcon}),jsxRuntime.jsx(ui.Text,{intensity:54,size:"sm",className:"oui-mt-5",children:`You agree closing ${utils.commify(e.quantity)} ${e.base} position at limit price.`}),jsxRuntime.jsxs(ui.Flex,{gap:2,mb:4,mt:5,justify:"between",children:[jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",formatString:"base-type",size:"base",showIcon:!0,children:t.symbol}),jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Badge,{color:"neutral",size:"xs",children:"Limit"}),jsxRuntime.jsx(ui.Badge,{color:c===types.OrderSide.BUY?"success":"danger",size:"xs",children:c===types.OrderSide.BUY?"Buy":"Sell"})]})]}),jsxRuntime.jsx(ui.Divider,{className:"oui-w-full"}),jsxRuntime.jsx(no,{className:"oui-text-sm",price:i,quantity:r,side:t.side,quoteDp:o??2}),jsxRuntime.jsx(Ze,{onCancel:s,onConfirm:e.onConfirm,submitting:e.submitting})]})};var tt=()=>{let{type:e,quoteDp:t,price:o,updatePriceChange:r,updateOrderType:i,position:n}=T(),[c,s]=react.useState(!1);return jsxRuntime.jsxs(ui.DropdownMenuRoot,{children:[jsxRuntime.jsx(ui.Input,{size:"sm",value:e===types.OrderType.LIMIT?o:"Market",onValueChange:a=>r(a),formatters:[ui.inputFormatter.numberFormatter,...t?[ui.inputFormatter.dpFormatter(t)]:[]],onFocus:a=>{e===types.OrderType.MARKET&&i(types.OrderType.LIMIT,`${n.mark_price}`),s(!0);},onBlur:a=>{setTimeout(()=>{s(!1);},100);},suffix:jsxRuntime.jsx(ui.DropdownMenuTrigger,{asChild:!0,children:jsxRuntime.jsx("button",{className:"oui-px-1 oui-h-full",children:jsxRuntime.jsx(ui.CaretDownIcon,{size:12,color:"white"})})}),classNames:{root:ui.cn("oui-outline-line-12 focus-within:oui-outline-primary-light")}}),jsxRuntime.jsx(ui.DropdownMenuContent,{align:"end",className:"oui-w-[96px] oui-min-w-[96px]",onCloseAutoFocus:a=>a.preventDefault(),children:jsxRuntime.jsx(ui.DropdownMenuGroup,{children:jsxRuntime.jsx(ui.DropdownMenuItem,{size:"xs",onSelect:a=>{i(types.OrderType.MARKET);},children:jsxRuntime.jsx("span",{children:"Market"})})})})]})};var nt=e=>{let[t,o]=react.useState(!1),[r,i]=react.useState(100),{baseDp:n,quoteDp:c,updateQuantity:s,quantity:a,type:f,errors:_,baseTick:N}=T();react.useEffect(()=>{let l=m=>{m.target.closest("[data-popover-root]")||o(!1);};return document.addEventListener("click",l),()=>{document.removeEventListener("click",l);}},[]);let S=l=>{y(`${e.value*(l/100)}`);},y=l=>{if(N&&N>0){let m=hooks.utils.formatNumber(l,N)??l;s(m);}};return jsxRuntime.jsxs(ui.PopoverRoot,{children:[jsxRuntime.jsx(ui.PopoverTrigger,{children:jsxRuntime.jsx(ui.Input,{size:"sm",onFocus:()=>{o(!0);},classNames:{root:"oui-outline-line-12 "},formatters:[ui.inputFormatter.numberFormatter,...n?[ui.inputFormatter.dpFormatter(n)]:[]],value:a,onBlur:l=>y(l.target.value),onValueChange:l=>{if(s(l),l=="0"||l==""){i(0);return}let m=new utils.Decimal(l).div(e.value).mul(100).abs().toFixed(0,utils.Decimal.ROUND_DOWN);i(Math.min(100,Number(m)));}})}),jsxRuntime.jsx(ui.PopoverContent,{className:"oui-w-[360px] oui-rounded-xl",align:"start",side:"bottom",onOpenAutoFocus:l=>{l.preventDefault();},children:jsxRuntime.jsxs(ui.Flex,{p:1,gap:2,width:"100%",itemAlign:"start",children:[jsxRuntime.jsx(ui.Text,{size:"xs",intensity:98,className:"oui-min-w-[30px]",children:`${r}%`}),jsxRuntime.jsxs(ui.Flex,{direction:"column",width:"100%",gap:2,children:[jsxRuntime.jsx(ui.Slider,{markCount:4,value:[r],onValueChange:l=>{let m=Array.from(l.values());i(m[0]),S(m[0]);}}),jsxRuntime.jsx(wo,{onClick:l=>{i(l*100),S(l*100);}})]})]})})]})},wo=e=>jsxRuntime.jsx(ui.Flex,{gap:2,width:"100%",children:[{label:"0%",value:0},{label:"25%",value:.25},{label:"50%",value:.5},{label:"75%",value:.75},{label:"Max",value:1}].map((o,r)=>jsxRuntime.jsx(ui.Button,{variant:"outlined",color:"secondary",size:"xs",onClick:i=>{i.stopPropagation(),e.onClick(o.value);},className:"oui-w-1/5",children:o.label},r))});var st=(e,t)=>{let o=D();return jsxRuntime.jsx(ui.Text.numeral,{dp:o.base_dp,rm:utils.Decimal.ROUND_DOWN,padding:!1,coloring:!0,children:e})},at=(e,t)=>jsxRuntime.jsx(nt,{value:t.position_qty}),lt=e=>jsxRuntime.jsx(tt,{});var Se=e=>e.sharePnLConfig==null?jsxRuntime.jsx(jsxRuntime.Fragment,{}):jsxRuntime.jsx("button",{type:"button",onClick:t=>{t.stopPropagation(),ui.modal.show(e.modalId,{pnl:{position:e.position,refCode:e.refCode,leverage:e.leverage,...e.sharePnLConfig}});},children:jsxRuntime.jsx(ui.ShareIcon,{color:"white",opacity:.54,size:e.iconSize??16})});var mt=e=>{let{sharePnLConfig:t,position:o,modalId:r,iconSize:i}=e,{getFirstRefCode:n}=hooks.useReferralInfo(),c=react.useMemo(()=>n()?.code,[n]),s=hooks.useSymbolLeverage(e.position.symbol);return {iconSize:i,position:o,refCode:c,leverage:s,sharePnLConfig:t,modalId:r}};var X=e=>{let t=mt(e);return jsxRuntime.jsx(Se,{...t})};var pt=e=>{let{stopLossPrice:t,takeProfitPrice:o}=e,{tpslOrder:r,position:i}=T();return jsxRuntime.jsx(Ao,{stopLossPrice:t,takeProfitPrice:o,direction:"column",order:r,position:i,tooltip:!0})},ct=e=>{let{qty:t,price:o,entryPrice:r,orderSide:i,orderType:n,symbolInfo:c}=e,s=hooks.utils.priceToPnl({qty:t,price:o,entryPrice:r,orderSide:i,orderType:n},{symbol:c}),a=n===types.AlgoOrderType.TAKE_PROFIT?"TP":"SL";return jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Text,{intensity:54,className:"oui-mr-1",children:`${a} PnL:`}),jsxRuntime.jsx(ui.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.Text,{children:s===0?"":s>0?"+":"-"}),suffix:jsxRuntime.jsx(ui.Text,{intensity:36,className:"oui-ml-1",children:"USDC"}),children:`${Math.abs(s)}`})]})},Ao=e=>{let{direction:t="row",order:o,position:r}=e,i=hooks.useSymbolsInfo(),n=react.useMemo(()=>{let a=[];if(!e.tooltip||!o||!r)return;let f=o.quantity;return f===0&&o.child_orders[0].type==="CLOSE_POSITION"&&(f=r.position_qty),e.takeProfitPrice&&a.push(jsxRuntime.jsx(ct,{qty:f,price:e.takeProfitPrice,entryPrice:r.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.TAKE_PROFIT,symbolInfo:i[o.symbol]()},"tp")),e.stopLossPrice&&a.push(jsxRuntime.jsx(ct,{qty:f,price:e.stopLossPrice,entryPrice:r.average_open_price,orderSide:o.side,orderType:types.AlgoOrderType.STOP_LOSS,symbolInfo:i[o.symbol]()},"sl")),jsxRuntime.jsx("div",{children:a})},[e.takeProfitPrice,e.stopLossPrice,r?.average_open_price,o?.side,o?.quantity,o?.algo_type]),c=react.useMemo(()=>{let a=[];return o?.symbol?(e.takeProfitPrice&&a.push(jsxRuntime.jsx(ui.Text.formatted,{className:ui.cn("oui-text-trade-profit oui-gap-0 oui-decoration-white/20"),rule:"price",dp:i[o.symbol]("quote_dp",2),children:e.takeProfitPrice,prefix:!e.stopLossPrice||t==="column"?jsxRuntime.jsx(ui.Text,{intensity:54,children:"TP\xA0-\xA0"}):""},"tp")),e.stopLossPrice&&a.push(jsxRuntime.jsx(ui.Text.formatted,{className:ui.cn("oui-text-trade-loss oui-gap-0 oui-decoration-white/20 "),rule:"price",dp:i[o.symbol]("quote_dp",2),children:e.stopLossPrice,prefix:!e.takeProfitPrice||t==="column"?jsxRuntime.jsx(ui.Text,{intensity:54,children:"SL\xA0-\xA0"}):""},"sl")),a.length===0?jsxRuntime.jsx(ui.Text,{children:"-"}):(a.length===2&&t==="row"&&a.splice(1,0,jsxRuntime.jsx(ui.Text,{children:"/"},"split")),a)):jsxRuntime.jsx("span",{children:"-"})},[e.takeProfitPrice,e.stopLossPrice,o?.symbol]),s=jsxRuntime.jsx("div",{className:ui.cn("oui-inline-flex oui-text-base-contrast-36",e.direction==="column"?"oui-flex-col":"oui-flex-row oui-gap-1",e.className),children:c});return e.tooltip?jsxRuntime.jsx(ui.Tooltip,{content:n,children:s}):s};var dt=()=>{let{position:e,baseDp:t,quoteDp:o,tpslOrder:r}=T();return jsxRuntime.jsx(uiTpsl.PositionTPSLPopover,{position:e,order:r,label:"TP/SL",baseDP:t,quoteDP:o,isEditing:!1})};var Pt=e=>{let[t,o]=hooks.useLocalStorage("unPnlPriceBasis","markPrice");return jsxRuntime.jsxs(ui.Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-items-start",children:[jsxRuntime.jsx(ui.Text,{children:"Current unrealized profit or loss on your open positions across all widgets calculated using Mark Price."}),jsxRuntime.jsx(ui.Divider,{className:"oui-w-full"}),jsxRuntime.jsx("div",{className:"oui-mb-0",children:"Unrealized PnL Price Basis"}),jsxRuntime.jsx(Ko,{value:t,onValueChange:o})]})},Ko=e=>{let{value:t,onValueChange:o}=e;return jsxRuntime.jsxs(ui.Flex,{gap:2,children:[jsxRuntime.jsx(ft,{sel:t==="markPrice",label:"Mark price",value:"markPrice",onCheckChange:o}),jsxRuntime.jsx(ft,{sel:t==="lastPrice",label:"Last price",value:"lastPrice",onCheckChange:o})]})},ft=e=>{let{sel:t,label:o,value:r,onCheckChange:i}=e;return jsxRuntime.jsxs(ui.Flex,{onClick:n=>{i(r),n.stopPropagation();},gap:1,className:"oui-cursor-pointer",children:[t?jsxRuntime.jsx(Go,{}):jsxRuntime.jsx(Ho,{}),jsxRuntime.jsx(ui.Text,{size:"xs",intensity:t?98:54,children:o})]})},Go=()=>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"})]}),Ho=()=>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 ne=e=>{let{tick:t="quote_dp",...o}=e,r=D();if(!r)throw new Error("NumeralWithCtx must be used inside SymbolProvider");return jsxRuntime.jsx(ui.Text.numeral,{as:"span",...o,dp:r[t]})};var yt=e=>{let{pnlNotionalDecimalPrecision:t,sharePnLConfig:o}=e;return react.useMemo(()=>[{title:"Instrument",dataIndex:"symbol",fixed:"left",width:140,onSort:(i,n)=>i.symbol.localeCompare(n.symbol),render:(i,n)=>jsxRuntime.jsxs(ui.Flex,{gap:2,children:[jsxRuntime.jsx(ui.Box,{width:4,height:20,className:ui.cn("oui-rounded-[1px]",n.position_qty>0?"oui-bg-trade-profit":"oui-bg-trade-loss")}),jsxRuntime.jsx(ui.Text.formatted,{formatString:"base-type",className:"oui-cursor-pointer",onClick:c=>{e.onSymbolChange?.({symbol:i}),c.stopPropagation(),c.preventDefault();},children:`${i.split("_")[1]}-PERP`})]})},{title:"Quantity",dataIndex:"position_qty",onSort:(i,n)=>i.position_qty-n.position_qty,width:120,className:"oui-pl-6",render:st},{title:"Avg. open",className:"oui-h-[48px]",width:120,onSort:!0,dataIndex:"average_open_price",render:(i,n)=>jsxRuntime.jsx(ne,{rm:utils.Decimal.ROUND_DOWN,children:i})},{title:"Mark price",dataIndex:"mark_price",width:120,onSort:!0,className:"oui-h-[48px]",render:(i,n)=>jsxRuntime.jsx(ne,{rm:utils.Decimal.ROUND_DOWN,children:i})},{title:jsxRuntime.jsx(ui.Tooltip,{className:"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-54 oui-p-3 oui-bg-base-8",content:"Estimated price at which your position will be liquidated. Prices are estimated and depend on multiple factors across all positions.",children:jsxRuntime.jsx(ui.Text,{children:"Liq. price"})}),width:100,onSort:!0,dataIndex:"est_liq_price",render:(i,n)=>Number(i)===0?"--":jsxRuntime.jsx(ne,{rm:utils.Decimal.ROUND_DOWN,className:Number(i)>0?"oui-text-warning-light":"",children:i??"--"})},{title:jsxRuntime.jsx(ui.HoverCard,{content:jsxRuntime.jsx(Pt,{}),side:"top",align:"center",className:"oui-max-w-[280px] oui-text-2xs",children:jsxRuntime.jsx(ui.Text,{children:"Unreal. PnL"})}),dataIndex:"unrealized_pnl",width:150,onSort:!0,rule:"price",numeralProps:{coloring:!0},render:(i,n)=>jsxRuntime.jsxs(ui.Flex,{gap:2,children:[jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Text.numeral,{dp:e.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:!0,className:"oui-font-semibold",children:i}),jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",dp:e.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:!0,className:"oui-font-semibold",prefix:"(",suffix:")",children:n.unrealized_pnl_ROI})]}),jsxRuntime.jsx(X,{position:n,sharePnLConfig:e.sharePnLConfig,modalId:uiShare.SharePnLDialogId})]})},{title:"TP/SL",dataIndex:"__",width:150,render:(i,n)=>jsxRuntime.jsx(pt,{stopLossPrice:n.sl_trigger_price,takeProfitPrice:n.tp_trigger_price})},{title:"Est. total",dataIndex:"notional",className:"oui-h-[48px]",width:100,onSort:!0,render:i=>jsxRuntime.jsx(ui.Text.numeral,{dp:t,children:i})},{title:jsxRuntime.jsx(ui.Tooltip,{className:"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-54 oui-p-3 oui-bg-base-8",content:jsxRuntime.jsxs(ui.Flex,{direction:"column",gap:3,className:"oui-text-base-contrast-54 oui-bg-base-8 oui-rounded-sm",children:[jsxRuntime.jsx("span",{children:"The minimum equity to keep your position. "}),jsxRuntime.jsx(ui.Divider,{className:"oui-w-full"}),jsxRuntime.jsx("span",{children:"Margin = Position size * Mark price * MMR"})]}),children:jsxRuntime.jsx(ui.Text,{children:"Margin"})}),dataIndex:"mm",onSort:!0,width:100,rule:"price",render:i=>jsxRuntime.jsx(ui.Text.numeral,{children:i})},{title:"Qty.",dataIndex:"close_qty",width:100,fixed:"right",render:at},{title:"Price",dataIndex:"close_price",width:100,fixed:"right",render:lt},{title:"",dataIndex:"close_position",align:"right",width:160,fixed:"right",render:i=>jsxRuntime.jsxs(ui.Flex,{gapX:2,justify:"end",children:[jsxRuntime.jsx(Xe,{}),jsxRuntime.jsx(dt,{})]})}],[t,o])};var Ct=e=>{let{item:t}=e,o=t.position_qty>0;return jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",formatString:"base-type",size:"2xs",suffix:jsxRuntime.jsx(ui.Badge,{color:o?"success":"danger",size:"xs",children:o?"Buy":"Sell"}),showIcon:!0,onClick:()=>{e.onSymbolChange?.({symbol:t.symbol});},children:t.symbol})},bt=e=>{let{item:t}=e;return jsxRuntime.jsxs(ui.Flex,{gap:3,children:[jsxRuntime.jsxs(ui.Flex,{direction:"column",className:"oui-text-2xs",itemAlign:"end",children:[jsxRuntime.jsxs(ui.Text,{intensity:36,children:["Unreal. PnL",jsxRuntime.jsx(ui.Text,{intensity:20,children:"(USDC)"})]}),jsxRuntime.jsx(ui.Text.numeral,{size:"xs",dp:e.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,coloring:!0,className:"orderly-font-semibold",suffix:jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",dp:e.pnlNotionalDecimalPrecision,rm:utils.Decimal.ROUND_DOWN,prefix:"(",suffix:")",className:ui.cn("oui-ml-1",t.unrealized_pnl_ROI>0?"oui-text-success-darken":"oui-text-danger-darken"),children:t.unrealized_pnl_ROI}),children:t.unrealized_pnl})]}),jsxRuntime.jsx(X,{position:t,sharePnLConfig:e.sharePnLConfig,modalId:uiShare.SharePnLBottomSheetId,iconSize:12})]})},St=e=>{let{item:t}=e;return jsxRuntime.jsx(ui.Statistic,{label:"Qty.",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui.Text.numeral,{dp:e.base_dp,padding:!1,coloring:!0,children:t.position_qty})})},ht=e=>{let{item:t}=e;return jsxRuntime.jsx(ui.Statistic,{label:jsxRuntime.jsxs(ui.Text,{children:["Margin",jsxRuntime.jsx(ui.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui.Text.numeral,{dp:e.quote_dp,intensity:80,children:t.mm})})},Tt=e=>{let{item:t}=e;return jsxRuntime.jsx(ui.Statistic,{align:"end",label:jsxRuntime.jsxs(ui.Text,{children:["Notional",jsxRuntime.jsx(ui.Text,{intensity:20,children:"(USDC)"})]}),classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui.Text.numeral,{dp:e.quote_dp,intensity:80,children:t.notional})})},_t=e=>{let{item:t}=e;return jsxRuntime.jsx(ui.Statistic,{label:"Avg. open",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui.Text.numeral,{dp:e.quote_dp,rm:utils.Decimal.ROUND_DOWN,intensity:80,children:t.average_open_price})})},Nt=e=>{let{item:t}=e;return jsxRuntime.jsx(ui.Statistic,{label:"Mark price",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui.Text.numeral,{dp:e.quote_dp,rm:utils.Decimal.ROUND_DOWN,intensity:80,children:t.mark_price})})},wt=e=>{let{item:t}=e,o=t.est_liq_price&&t.est_liq_price>0?t.est_liq_price:"-";return jsxRuntime.jsx(ui.Statistic,{label:"Liq. price",align:"end",classNames:{root:"oui-text-xs",label:"oui-text-2xs"},children:jsxRuntime.jsx(ui.Text.numeral,{dp:e.quote_dp,rm:utils.Decimal.ROUND_DOWN,color:"warning",children:o})})},Lt=e=>{let{item:t}=e;return t.tp_trigger_price==null&&t.sl_trigger_price==null?jsxRuntime.jsx(jsxRuntime.Fragment,{}):jsxRuntime.jsxs(ui.Flex,{className:"oui-text-2xs oui-text-base-contrast-36",children:[jsxRuntime.jsx(ui.Text,{children:"TP/SL:\xA0"}),jsxRuntime.jsxs(ui.Flex,{className:"oui-gap-[2px]",children:[t.tp_trigger_price&&jsxRuntime.jsx(ui.Text.numeral,{color:"buy",children:t.tp_trigger_price}),t.sl_trigger_price&&"/",t.sl_trigger_price&&jsxRuntime.jsx(ui.Text.numeral,{color:"sell",children:t.sl_trigger_price})]})]})};var we=e=>{let{item:t,sheetOpen:o,setSheetOpen:r,dialogOpen:i,setDialogOpen:n,updatePriceChange:c,base:s,quantity:a,price:f,onClose:_,onConfirm:N,submitting:S,quote_dp:y,closeOrderData:l,onCloseDialog:m}=e,F=t.position_qty>0,h=g=>{if(e.baseTick&&e.baseTick>0){let v=hooks.utils.formatNumber(g,e.baseTick)??g;e.updateQuantity(v);}};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:()=>{c("limit"),r(!0);},children:"Limit Close"}),o&&jsxRuntime.jsx(ui.SimpleSheet,{title:"Limit close",open:o,onOpenChange:r,children:jsxRuntime.jsxs(ui.Flex,{direction:"column",gap:3,width:"100%",itemAlign:"start",className:"oui-text-sm",children:[jsxRuntime.jsxs(ui.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",showIcon:!0,children:t.symbol}),jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Badge,{color:"neutral",size:"xs",children:"Limit"}),F&&jsxRuntime.jsx(ui.Badge,{color:"success",size:"xs",children:"Buy"}),!F&&jsxRuntime.jsx(ui.Badge,{color:"danger",size:"xs",children:"Sell"})]})]}),jsxRuntime.jsx(ui.Divider,{className:"oui-w-full"}),jsxRuntime.jsxs(ui.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui.Text,{intensity:54,children:"Last price"}),jsxRuntime.jsx(ui.Text.numeral,{dp:e.item?.symbolInfo?.quote_dp,suffix:jsxRuntime.jsx(ui.Text,{intensity:36,children:"USDC"}),children:e.curMarkPrice})]}),jsxRuntime.jsxs(ui.Flex,{width:"100%",direction:"column",gap:2,children:[jsxRuntime.jsx(ui.Input.tooltip,{prefix:"Price",suffix:e.quote,align:"right",fullWidth:!0,autoComplete:"off",formatters:[ui.inputFormatter.numberFormatter,ui.inputFormatter.dpFormatter(e.quote_dp)],triggerClassName:"oui-w-full",tooltip:e.errors?.order_price?.message,color:e.errors?.order_price?.message?"danger":void 0,value:e.price,onValueChange:g=>e.updatePriceChange(g),classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui.cn("oui-outline-line-12 oui-w-full",e.errors?.order_price?.message?"oui-outline-danger":void 0)}}),jsxRuntime.jsx(ui.Input,{prefix:"Quantity",suffix:e.base,align:"right",fullWidth:!0,autoComplete:"off",formatters:[ui.inputFormatter.numberFormatter,ui.inputFormatter.dpFormatter(e.base_dp)],value:e.quantity,onBlur:g=>h(g.target.value),onValueChange:g=>{e.updateQuantity(g);let v=new utils.Decimal(g).div(e.item.position_qty).mul(100).toDecimalPlaces(2,utils.Decimal.ROUND_DOWN).toNumber();e.setSliderValue(v);},classNames:{prefix:"oui-text-base-contrast-54",suffix:"oui-text-base-contrast-54",root:ui.cn("oui-outline-line-12 oui-w-full")}}),jsxRuntime.jsx(ui.Slider,{markCount:4,value:[e.sliderValue],color:"primaryLight",onValueChange:g=>{e.setSliderValue(g[0]);let v=new utils.Decimal(g[0]).div(100).mul(e.item.position_qty).toFixed(e.base_dp,utils.Decimal.ROUND_DOWN);h(v);}}),jsxRuntime.jsxs(ui.Flex,{width:"100%",justify:"between",children:[jsxRuntime.jsx(ui.Text,{color:"primaryLight",size:"2xs",children:`${e.sliderValue}%`}),jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Text,{size:"2xs",color:"primaryLight",children:"Max"}),jsxRuntime.jsx(ui.Text.numeral,{intensity:54,size:"2xs",children:Math.abs(e.item.position_qty)})]})]})]}),jsxRuntime.jsxs(ui.Flex,{width:"100%",gap:3,mt:2,children:[jsxRuntime.jsx(ui.Button,{fullWidth:!0,color:"secondary",onClick:g=>{_();},children:"Cancel"}),jsxRuntime.jsx(ui.ThrottledButton,{fullWidth:!0,onClick:g=>{g.stopPropagation(),g.preventDefault();let v=e.errors,$=v?.order_quantity?.message,q=v?.order_price?.message;if($||q){ui.toast.error($??q);return}n(!0);},children:"Confirm"})]})]})}),i&&jsxRuntime.jsx(ui.SimpleDialog,{open:i,onOpenChange:n,size:"xs",children:jsxRuntime.jsx(Pe,{base:s,quantity:a,price:f,onClose:m,onConfirm:N,submitting:S,quoteDp:y,order:l,hideCloseIcon:!0})})]})};var ve=e=>{let{state:t}=e,[o,r]=react.useState(!1),[i,n]=react.useState(!1),{onSubmit:c,price:s,quantity:a,closeOrderData:f,submitting:_,type:N,updatePriceChange:S,updateOrderType:y,updateQuantity:l,errors:m,baseTick:F}=T(),h=react.useRef(!1),[g,v]=react.useState(100),$=()=>c().then(oe=>{r(!1),n(!1);},oe=>{typeof oe=="string"?ui.toast.error(oe):ui.toast.error(oe.message);}),q=()=>{r(!1);},ue=()=>{n(!1);},te=hooks.useMarkPricesStream(),K=react.useMemo(()=>te?.data?.[t.item.symbol]??"--",[te]),{quote_dp:I,base_dp:w,base:At,quote:Et}=D();return react.useEffect(()=>{!h.current&&K&&o&&(h.current=!0,y(types.OrderType.LIMIT,`${K}`));},[h,K,o]),react.useEffect(()=>{o||(y(types.OrderType.MARKET),h.current=!1);},[o]),{...t,sheetOpen:o,setSheetOpen:r,curMarkPrice:K,quote_dp:I,base_dp:w,base:At,quote:Et,baseTick:F,onClose:q,onConfirm:$,price:s,quantity:a,closeOrderData:f,submitting:_,updatePriceChange:S,updateQuantity:l,errors:m,sliderValue:g,setSliderValue:v,dialogOpen:i,setDialogOpen:n,onCloseDialog:ue}};var Ie=e=>{let t=ve(e);return jsxRuntime.jsx(we,{...t})};var Be=e=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:t=>{t.stopPropagation(),t.preventDefault(),e.updateOrderType(types.OrderType.MARKET),e.setDialogOpen(!0);},children:"Market Close"}),jsxRuntime.jsx(ui.SimpleDialog,{open:e.dialogOpen,onOpenChange:e.setDialogOpen,size:"xs",children:jsxRuntime.jsx(Y,{base:e.base,quantity:e.quantity,onClose:e.onClose,onConfirm:e.onConfirm,submitting:e.submitting,hideCloseIcon:!0})})]});var Oe=e=>{let t=D(),[o,r]=react.useState(!1),{onSubmit:i,price:n,quantity:c,closeOrderData:s,submitting:a,type:f,updatePriceChange:_,updateOrderType:N,updateQuantity:S}=T();return {...e,...t,dialogOpen:o,setDialogOpen:r,onSubmit:i,quantity:c,onClose:()=>{r(!1);},onConfirm:()=>i().then(m=>{r(!1);},m=>{typeof m=="string"?ui.toast.error(m):ui.toast.error(m.message);}),submitting:a,updateOrderType:N,updateQuantity:S}};var Fe=e=>{let t=Oe(e);return jsxRuntime.jsx(Be,{...t})};var ke=e=>jsxRuntime.jsx(ui.Button,{variant:"outlined",color:"secondary",size:"sm",className:"oui-border-base-contrast-36",onClick:t=>{t.stopPropagation(),t.preventDefault(),e.openTP_SL();},children:"TP/SL"});var qe=e=>{let t=hooks.useSymbolsInfo()[e.state.item.symbol]();return {openTP_SL:()=>{ui.modal.sheet({title:"TP/SL",content:jsxRuntime.jsx(uiTpsl.PositionTPSLSheet,{position:e.state.item,symbolInfo:t})});},...e,...t}};var Me=e=>{let t=qe(e);return jsxRuntime.jsx(ke,{...t})};var Re=e=>{let{className:t,...o}=e;return jsxRuntime.jsxs(ui.Flex,{direction:"column",width:"100%",gap:2,p:2,r:"xl",itemAlign:"start",className:ui.cn(t,"oui-bg-base-9"),children:[jsxRuntime.jsx(qi,{...o}),jsxRuntime.jsx(ui.Divider,{intensity:6,className:"oui-w-full"}),jsxRuntime.jsx(Mi,{...o}),jsxRuntime.jsx(Lt,{...o}),jsxRuntime.jsx(Ri,{...o})]})},qi=e=>jsxRuntime.jsxs(ui.Flex,{justify:"between",width:"100%",children:[jsxRuntime.jsx(Ct,{...e}),jsxRuntime.jsx(bt,{...e})]}),Mi=e=>jsxRuntime.jsxs(ui.Grid,{cols:3,rows:2,gap:2,width:"100%",children:[jsxRuntime.jsx(St,{...e}),jsxRuntime.jsx(ht,{...e}),jsxRuntime.jsx(Tt,{...e}),jsxRuntime.jsx(_t,{...e}),jsxRuntime.jsx(Nt,{...e}),jsxRuntime.jsx(wt,{...e})]}),Ri=e=>jsxRuntime.jsxs(ui.Grid,{width:"100%",gap:2,cols:3,rows:1,children:[jsxRuntime.jsx(Me,{state:e}),jsxRuntime.jsx(Ie,{state:e}),jsxRuntime.jsx(Fe,{state:e})]});var ze=e=>{let t=D();return {...e,...t}};var We=e=>{let t=ze(e);return jsxRuntime.jsx(Re,{...t,className:e.className})};var Rt=e=>{let{pnlNotionalDecimalPrecision:t,sharePnLConfig:o,pagination:r}=e,i=yt({pnlNotionalDecimalPrecision:t,sharePnLConfig:o,onSymbolChange:e.onSymbolChange});return jsxRuntime.jsx(uiConnector.AuthGuardTableView,{loading:e.isLoading,id:"oui-desktop-positions-content",columns:i,bordered:!0,dataSource:e.dataSource,generatedRowKey:n=>n.symbol,renderRowContainer:(n,c,s)=>jsxRuntime.jsx(de,{symbol:n.symbol,children:jsxRuntime.jsx(pe,{position:n,children:s})}),manualPagination:!1,pagination:r})},zt=e=>{let{pnlNotionalDecimalPrecision:t,sharePnLConfig:o}=e;return jsxRuntime.jsx(ui.ListView,{className:"oui-w-full oui-hide-scrollbar oui-overflow-y-hidden oui-space-y-0",contentClassName:"!oui-space-y-1",dataSource:e.dataSource,renderItem:(r,i)=>jsxRuntime.jsx(de,{symbol:r.symbol,children:jsxRuntime.jsx(pe,{position:r,children:jsxRuntime.jsx(We,{item:r,index:i,pnlNotionalDecimalPrecision:t,sharePnLConfig:o,onSymbolChange:e.onSymbolChange})})})})};var Ae=e=>{let{symbol:t,calcMode:o,includedPendingOrder:r,pnlNotionalDecimalPrecision:i,sharePnLConfig:n,onSymbolChange:c}=e,{page:s,pageSize:a,setPage:f,setPageSize:_}=ui.usePagination({pageSize:50}),[N,S,{isLoading:y}]=hooks.usePositionStream(t,{calcMode:o,includedPendingOrder:r}),l=reactApp.useDataTap(N?.rows)??void 0,m=react.useMemo(()=>({page:s,pageSize:a,count:l?.length,onPageChange:f,onPageSizeChange:_}),[s,a,f,_,l]);return {dataSource:l,isLoading:y,pnlNotionalDecimalPrecision:i,sharePnLConfig:n,symbol:t,onSymbolChange:c,pagination:m}};var $i=e=>{let t=Ae(e);return jsxRuntime.jsx(Rt,{...t})},Ki=e=>{let t=Ae(e);return jsxRuntime.jsx(zt,{...t})};var Hi="MarketCloseConfirmID";ui.registerSimpleDialog(Hi,Y,{size:"md",closable:!1});
12
15
 
13
- exports.MarketCloseConfirmID = Mo;
14
- exports.PositionTPSLConfirm = te;
15
- exports.PositionsWidget = To;
16
- exports.TPSLEditorWidget = Bo;
17
- exports.TPSLWidget = ce;
16
+ exports.MarketCloseConfirmID = Hi;
17
+ exports.MobilePositionsWidget = Ki;
18
+ exports.PositionsWidget = $i;
18
19
  //# sourceMappingURL=out.js.map
19
20
  //# sourceMappingURL=index.js.map