@orderly.network/ui-tpsl 2.5.3 → 2.6.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,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { API, AlgoOrderRootType, OrderSide } from '@orderly.network/types';
2
+ import { API, AlgoOrderRootType, PositionType, OrderSide, OrderlyOrder, AlgoOrder } from '@orderly.network/types';
3
3
  import { ComputedAlgoOrder } from '@orderly.network/hooks';
4
4
  import { ReactNode } from 'react';
5
5
  import { ButtonProps } from '@orderly.network/ui';
@@ -9,6 +9,7 @@ type TPSLBuilderOptions = {
9
9
  order?: API.AlgoOrder;
10
10
  onTPSLTypeChange?: (type: AlgoOrderRootType) => void;
11
11
  isEditing?: boolean;
12
+ positionType?: PositionType;
12
13
  /**
13
14
  * either show the confirm dialog or not,
14
15
  * if the Promise reject or return false, cancel the submit action
@@ -20,9 +21,12 @@ type TPSLBuilderOptions = {
20
21
  }) => Promise<any>;
21
22
  cancel: () => Promise<any>;
22
23
  }) => Promise<boolean>;
24
+ close?: () => void;
23
25
  };
24
26
 
25
27
  type TPSLProps = {
28
+ close?: () => void;
29
+ onClose?: () => void;
26
30
  onCancel?: () => void;
27
31
  onComplete?: () => void;
28
32
  };
@@ -37,6 +41,7 @@ type PositionTPSLConfirmProps = {
37
41
  quoteDP: number;
38
42
  isEditing?: boolean;
39
43
  isPositionTPSL?: boolean;
44
+ orderInfo: ComputedAlgoOrder;
40
45
  };
41
46
  declare const PositionTPSLConfirm: (props: PositionTPSLConfirmProps) => react_jsx_runtime.JSX.Element;
42
47
 
@@ -44,6 +49,8 @@ type TPSLWidgetProps = {
44
49
  onTPSLTypeChange?: (type: AlgoOrderRootType) => void;
45
50
  } & TPSLBuilderOptions & TPSLProps;
46
51
  declare const TPSLWidget: (props: TPSLWidgetProps) => react_jsx_runtime.JSX.Element;
52
+ declare const TPSLSheetId = "TPSLSheetId";
53
+ declare const TPSLDialogId = "TPSLDialogId";
47
54
 
48
55
  declare const PositionTPSLPopover: (props: {
49
56
  position: API.Position;
@@ -67,4 +74,33 @@ type TPSLSheetProps = {
67
74
  };
68
75
  declare const PositionTPSLSheet: (props: TPSLWidgetProps & TPSLSheetProps) => react_jsx_runtime.JSX.Element;
69
76
 
70
- export { PositionTPSLConfirm, PositionTPSLPopover, PositionTPSLSheet, TPSLWidget, type TPSLWidgetProps };
77
+ type OrderValueKeys = keyof OrderlyOrder;
78
+ type PositionTypeProps = {
79
+ disableSelector?: boolean;
80
+ value: PositionType;
81
+ onChange: (key: OrderValueKeys, value: any) => void;
82
+ };
83
+
84
+ declare const TPSLPositionTypeWidget: (props: PositionTypeProps) => react_jsx_runtime.JSX.Element;
85
+
86
+ type Props = {
87
+ order: OrderlyOrder;
88
+ setOrderValue: (key: string, value: any) => void;
89
+ onSubmit: (formattedOrder: OrderlyOrder) => void;
90
+ onClose: () => void;
91
+ };
92
+ declare const TPSLAdvancedWidget: (props: Props) => react_jsx_runtime.JSX.Element;
93
+ declare const TPSLAdvancedSheetId = "TPSLAdvancedSheetId";
94
+ declare const TPSLAdvancedDialogId = "TPSLAdvancedDialogId";
95
+
96
+ type TPSLDetailProps = {
97
+ position: API.Position;
98
+ order: AlgoOrder;
99
+ baseDP: number;
100
+ quoteDP: number;
101
+ };
102
+ declare const TPSLDetailWidget: (props: TPSLDetailProps) => react_jsx_runtime.JSX.Element;
103
+ declare const TPSLDetailDialogId = "TPSLDetailDialogId ";
104
+ declare const TPSLDetailSheetId = "TPSLDetailSheetId";
105
+
106
+ export { PositionTPSLConfirm, PositionTPSLPopover, PositionTPSLSheet, TPSLAdvancedDialogId, TPSLAdvancedSheetId, TPSLAdvancedWidget, TPSLDetailDialogId, type TPSLDetailProps, TPSLDetailSheetId, TPSLDetailWidget, TPSLDialogId, TPSLPositionTypeWidget, TPSLSheetId, TPSLWidget, type TPSLWidgetProps };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { API, AlgoOrderRootType, OrderSide } from '@orderly.network/types';
2
+ import { API, AlgoOrderRootType, PositionType, OrderSide, OrderlyOrder, AlgoOrder } from '@orderly.network/types';
3
3
  import { ComputedAlgoOrder } from '@orderly.network/hooks';
4
4
  import { ReactNode } from 'react';
5
5
  import { ButtonProps } from '@orderly.network/ui';
@@ -9,6 +9,7 @@ type TPSLBuilderOptions = {
9
9
  order?: API.AlgoOrder;
10
10
  onTPSLTypeChange?: (type: AlgoOrderRootType) => void;
11
11
  isEditing?: boolean;
12
+ positionType?: PositionType;
12
13
  /**
13
14
  * either show the confirm dialog or not,
14
15
  * if the Promise reject or return false, cancel the submit action
@@ -20,9 +21,12 @@ type TPSLBuilderOptions = {
20
21
  }) => Promise<any>;
21
22
  cancel: () => Promise<any>;
22
23
  }) => Promise<boolean>;
24
+ close?: () => void;
23
25
  };
24
26
 
25
27
  type TPSLProps = {
28
+ close?: () => void;
29
+ onClose?: () => void;
26
30
  onCancel?: () => void;
27
31
  onComplete?: () => void;
28
32
  };
@@ -37,6 +41,7 @@ type PositionTPSLConfirmProps = {
37
41
  quoteDP: number;
38
42
  isEditing?: boolean;
39
43
  isPositionTPSL?: boolean;
44
+ orderInfo: ComputedAlgoOrder;
40
45
  };
41
46
  declare const PositionTPSLConfirm: (props: PositionTPSLConfirmProps) => react_jsx_runtime.JSX.Element;
42
47
 
@@ -44,6 +49,8 @@ type TPSLWidgetProps = {
44
49
  onTPSLTypeChange?: (type: AlgoOrderRootType) => void;
45
50
  } & TPSLBuilderOptions & TPSLProps;
46
51
  declare const TPSLWidget: (props: TPSLWidgetProps) => react_jsx_runtime.JSX.Element;
52
+ declare const TPSLSheetId = "TPSLSheetId";
53
+ declare const TPSLDialogId = "TPSLDialogId";
47
54
 
48
55
  declare const PositionTPSLPopover: (props: {
49
56
  position: API.Position;
@@ -67,4 +74,33 @@ type TPSLSheetProps = {
67
74
  };
68
75
  declare const PositionTPSLSheet: (props: TPSLWidgetProps & TPSLSheetProps) => react_jsx_runtime.JSX.Element;
69
76
 
70
- export { PositionTPSLConfirm, PositionTPSLPopover, PositionTPSLSheet, TPSLWidget, type TPSLWidgetProps };
77
+ type OrderValueKeys = keyof OrderlyOrder;
78
+ type PositionTypeProps = {
79
+ disableSelector?: boolean;
80
+ value: PositionType;
81
+ onChange: (key: OrderValueKeys, value: any) => void;
82
+ };
83
+
84
+ declare const TPSLPositionTypeWidget: (props: PositionTypeProps) => react_jsx_runtime.JSX.Element;
85
+
86
+ type Props = {
87
+ order: OrderlyOrder;
88
+ setOrderValue: (key: string, value: any) => void;
89
+ onSubmit: (formattedOrder: OrderlyOrder) => void;
90
+ onClose: () => void;
91
+ };
92
+ declare const TPSLAdvancedWidget: (props: Props) => react_jsx_runtime.JSX.Element;
93
+ declare const TPSLAdvancedSheetId = "TPSLAdvancedSheetId";
94
+ declare const TPSLAdvancedDialogId = "TPSLAdvancedDialogId";
95
+
96
+ type TPSLDetailProps = {
97
+ position: API.Position;
98
+ order: AlgoOrder;
99
+ baseDP: number;
100
+ quoteDP: number;
101
+ };
102
+ declare const TPSLDetailWidget: (props: TPSLDetailProps) => react_jsx_runtime.JSX.Element;
103
+ declare const TPSLDetailDialogId = "TPSLDetailDialogId ";
104
+ declare const TPSLDetailSheetId = "TPSLDetailSheetId";
105
+
106
+ export { PositionTPSLConfirm, PositionTPSLPopover, PositionTPSLSheet, TPSLAdvancedDialogId, TPSLAdvancedSheetId, TPSLAdvancedWidget, TPSLDetailDialogId, type TPSLDetailProps, TPSLDetailSheetId, TPSLDetailWidget, TPSLDialogId, TPSLPositionTypeWidget, TPSLSheetId, TPSLWidget, type TPSLWidgetProps };
package/dist/index.js CHANGED
@@ -1,19 +1,30 @@
1
1
  'use strict';
2
2
 
3
+ var ui = require('@orderly.network/ui');
3
4
  var react = require('react');
4
5
  var hooks = require('@orderly.network/hooks');
5
6
  var i18n = require('@orderly.network/i18n');
6
7
  var reactApp = require('@orderly.network/react-app');
7
8
  var types = require('@orderly.network/types');
8
- var ui = require('@orderly.network/ui');
9
9
  var utils = require('@orderly.network/utils');
10
10
  var jsxRuntime = require('react/jsx-runtime');
11
+ var uiConnector = require('@orderly.network/ui-connector');
12
+ var perp = require('@orderly.network/perp');
11
13
 
12
- var Z=e=>{let{type:t,values:o}=e,[i,a]=hooks.useLocalStorage("TP/SL_Mode","Offset%"),[u,p]=react.useState(true),{t:g}=i18n.useTranslation(),r=react.useMemo(()=>{switch(i){case "Offset":return `${t.toLowerCase()}_offset`;case "Offset%":return `${t.toLowerCase()}_offset_percentage`;default:return `${t.toLowerCase()}_pnl`}},[i]),P=react.useMemo(()=>o[i],[o,i]),_=react.useMemo(()=>[{label:g("tpsl.pnl"),value:"PnL",testId:"PnL_menu_item"},{label:g("tpsl.offset"),value:"Offset",testId:"Offset_mneu_item"},{label:`${g("tpsl.offset")}%`,value:"Offset%",testId:"Offset%_menu_item"}],[g]),m=react.useRef(""),L=c=>{e.onChange(r,c);},T=c=>{let{dp:l=2}=c;return {onRenderBefore:(s,S)=>(s=`${s}`,u&&t==="SL"&&i==="PnL"&&(s=s.startsWith("-")?s:"-"+s),s===""||s==="-"?"":i==="Offset%"?`${new utils.Decimal(s.replace(new RegExp(m.current.replace(".","\\.")+"$"),"")).mul(100).todp(2,4).toString()}${m.current}`:(i==="Offset"&&(s=utils.todpIfNeed(s,l)),`${s}`)),onSendBefore:s=>{if(/^\-?0{2,}$/.test(s))return "0";if(i==="Offset%"){if(s!==""){s=utils.todpIfNeed(s,2);let S=s.match(/\.0{0,2}$/);S?m.current=S[0]:m.current="",s=new utils.Decimal(s).div(100).toString(),s=`${s}${m.current}`;}}else i==="PnL"&&t==="SL"&&u?s=s.startsWith("-")?s:"-"+s:s=utils.todpIfNeed(s,l);return s===""||s==="-"?"":s}}};return {mode:i,modes:_,type:e.type,formatter:T,onModeChange:c=>{a(c);},value:P,pnl:o.PnL,onValueChange:L,quote_dp:e.quote_dp,setFocus:p}};var oe=e=>{let{mode:t,modes:o,onModeChange:i,onValueChange:a,quote:u,quote_dp:p,value:g,pnl:r}=e,{t:P}=i18n.useTranslation(),[_,m]=react.useState(t),[L,T]=react.useState(t==="Offset%"?"%":u),c=react.useMemo(()=>{let l=Number(r);if(isNaN(l)||l===0)return "";if(l>0)return "oui-text-trade-profit";if(l<0)return "oui-text-trade-loss"},[r]);return react.useEffect(()=>{let l=o.find(s=>s.value===t)?.label;m(l),T(t==="Offset%"?"%":u);},[t,o]),jsxRuntime.jsx(ui.Input,{prefix:_,size:{initial:"lg",lg:"md"},placeholder:L,align:"right",value:g,"data-testid":e.testId,autoComplete:"off",onValueChange:a,formatters:[e.formatter({dp:p,mode:t}),ui.inputFormatter.currencyFormatter,ui.inputFormatter.decimalPointFormatter],classNames:{input:c,prefix:"oui-text-base-contrast-54",root:"oui-outline-line-12 focus-within:oui-outline-primary-light"},onFocus:()=>{T(""),e.setFocus(true);},onBlur:()=>{T(t==="Offset%"?"%":u),e.setFocus(false);},suffix:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t==="Offset%"&&!!g&&jsxRuntime.jsx(ui.Text,{size:"2xs",color:"inherit",className:ui.cn("oui-ml-[2px]",c),children:"%"}),jsxRuntime.jsx(ze,{mode:t,modes:o,onModeChange:l=>i(l.value)})]})})},ze=e=>jsxRuntime.jsx(ui.SimpleDropdownMenu,{currentValue:e.mode,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 U=e=>{let{testId:t,quote:o,...i}=e,a=Z(i);return jsxRuntime.jsx(oe,{...a,testId:t,quote:o})};var le=e=>{let{TPSL_OrderEntity:t,symbolInfo:o,onCancel:i,onComplete:a,status:u,errors:p,isPosition:g}=e,{t:r}=i18n.useTranslation(),{parseErrorMsg:P}=reactApp.useOrderEntryFormErrorMsg(p);return jsxRuntime.jsxs("div",{id:"orderly-tp_sl-order-edit-content",children:[(!e.isEditing||e.isEditing&&!e.isPosition)&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Xe,{maxQty:e.maxQty,quantity:e.orderQuantity??e.maxQty,baseTick:o("base_tick"),dp:o("base_dp"),onQuantityChange:e.setQuantity,quote:o("base"),isEditing:e.isEditing,isPosition:g,errorMsg:P("quantity")}),jsxRuntime.jsx(ui.Divider,{my:4,intensity:8})]}),jsxRuntime.jsx(Je,{sl_pnl:t.sl_pnl,tp_pnl:t.tp_pnl,quote:o("quote"),quote_dp:o("quote_dp"),onPriceChange:e.setOrderPrice,onPnLChange:e.setPnL,errors:p,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:r("common.cancel")}),jsxRuntime.jsx(ui.ThrottledButton,{size:"md","data-testid":"tpsl-confirm",disabled:!e.valid||u.isCreateMutating,loading:u.isCreateMutating||u.isUpdateMutating,onClick:()=>{e.onSubmit().then(()=>{a?.();}).catch(_=>{});},children:r("common.confirm")})]})]})},Xe=e=>{let{isPosition:t}=e,o=react.useRef(null),i=ui.convertValueToPercentage(e.quantity,0,e.maxQty)/100,{t:a}=i18n.useTranslation(),u=()=>{e.onQuantityChange?.(0),o.current?.focus(),setTimeout(()=>{o.current?.setSelectionRange(0,1);},0);},p=r=>{if(e.baseTick>0){e.onQuantityChange?.(hooks.utils.formatNumber(r,e.baseTick)??r);}},g=(t?"":e.quantity).toString().length>0?e.errorMsg:void 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.tooltip,{"data-testid":"oui-testid-tpsl-popUp-quantity-input",ref:o,prefix:a("common.quantity"),size:{initial:"lg",lg:"md"},align:"right",value:t?"":e.quantity,autoComplete:"off",classNames:{prefix:"oui-text-base-contrast-54",root:ui.cn("oui-bg-base-5 oui-outline-line-12",g&&"oui-outline-danger")},tooltipProps:{content:{className:"oui-bg-base-6 oui-text-base-contrast-80"},arrow:{className:"oui-fill-base-6"}},tooltip:g,color:g?"danger":void 0,formatters:[ui.inputFormatter.dpFormatter(e.dp),ui.inputFormatter.numberFormatter,ui.inputFormatter.currencyFormatter,ui.inputFormatter.decimalPointFormatter],onValueChange:r=>{e.onQuantityChange?.(r);let P=Number(r);if(P&&P>e.maxQty){let _=t?0:e.maxQty;e.onQuantityChange?.(_),o.current?.blur();}},onBlur:r=>p(r.target.value),suffix:t?jsxRuntime.jsx("button",{className:"oui-text-2xs oui-text-base-contrast-54 oui-px-3",onClick:()=>{u();},children:a("tpsl.entirePosition")}):jsxRuntime.jsx("span",{className:"oui-text-2xs oui-text-base-contrast-54 oui-px-3",children:e.quote})})}),!e.isEditing&&jsxRuntime.jsx(ui.Button,{onClick:()=>{let r=t?0:e.maxQty;e.onQuantityChange?.(r),r===0&&u();},variant:"outlined",className:ui.cn("oui-text-2xs oui-w-[68px] oui-h-[40px] xl:oui-h-[32px]",t?"oui-border-primary-light oui-text-primary-light hover:oui-bg-primary-light/20":"oui-bg-base-6 oui-border-line-12 oui-text-base-contrast-54 hover:oui-bg-base-5"),children:a("common.position")})]}),jsxRuntime.jsx(ui.Flex,{mt:2,itemAlign:"center",height:"15px",children:jsxRuntime.jsx(ui.Slider.single,{markCount:5,color:"primary",max:e.maxQty,min:0,showTip:true,step:e.baseTick,value:e.quantity,onValueCommit:r=>{p(`${r}`);},onValueChange:r=>{e.onQuantityChange?.(r);}})}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",color:"primary",size:"2xs",children:i}),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:"primary",size:"2xs",children:a("common.max")})}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",size:"2xs",intensity:54,tick:e.baseTick,children:e.maxQty})]})]})]})},Je=e=>{let{t}=i18n.useTranslation(),{parseErrorMsg:o}=reactApp.useOrderEntryFormErrorMsg(e.errors),i=(a,u)=>{e.onPnLChange(a,u);};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:80,children:t("tpsl.takeProfit")}),jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:36,children:`(${t("orderEntry.orderType.marketOrder")?.toLowerCase()})`})]}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:36,children:`${t("tpsl.estPnl")}:`}),jsxRuntime.jsx(ui.Text.numeral,{size:"2xs",coloring:true,showIdentifier:true,className:"oui-ml-1",children:e.tp_pnl??"-"})]})]}),jsxRuntime.jsxs(ui.Grid,{cols:2,gap:2,pt:2,pb:4,children:[jsxRuntime.jsx(ie,{type:"TP",value:e.tp_trigger_price,error:o("tp_trigger_price"),onValueChange:a=>{e.onPriceChange("tp_trigger_price",a);},quote_dp:e.quote_dp??2}),jsxRuntime.jsx(U,{type:"TP",onChange:i,quote:e.quote,quote_dp:e.quote_dp,values:e.tp_values})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:80,children:t("tpsl.stopLoss")}),jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:36,children:`(${t("orderEntry.orderType.marketOrder")?.toLowerCase()})`})]}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:36,children:`${t("tpsl.estPnl")}:`}),jsxRuntime.jsx(ui.Text.numeral,{size:"2xs",coloring:true,showIdentifier:true,className:"oui-ml-1",children:e.sl_pnl??"-"})]})]}),jsxRuntime.jsxs(ui.Grid,{cols:2,gap:2,pt:2,pb:4,children:[jsxRuntime.jsx(ie,{type:"SL",value:e.sl_trigger_price,error:o("sl_trigger_price"),onValueChange:a=>{e.onPriceChange("sl_trigger_price",a);},quote_dp:e.quote_dp??2}),jsxRuntime.jsx(U,{type:"SL",onChange:i,quote:e.quote,quote_dp:e.quote_dp,values:e.sl_values})]})]})]})},ie=e=>{let[t,o]=react.useState("USDC"),{t:i}=i18n.useTranslation();return jsxRuntime.jsx(ui.Input.tooltip,{"data-testid":`oui-testid-tpsl-popUp-${e.type.toLowerCase()}-input`,prefix:i("common.markPrice"),size:{initial:"lg",lg:"md"},tooltip:e.error,placeholder:t,align:"right",autoComplete:"off",value:e.value,color:e.error?"danger":void 0,classNames:{prefix:"oui-text-base-contrast-54",root:"oui-outline-line-12 focus-within:oui-outline-primary-light"},onValueChange:e.onValueChange,onFocus:()=>{o("");},onBlur:()=>{o("USDC");},formatters:[ui.inputFormatter.numberFormatter,ui.inputFormatter.dpFormatter(e.quote_dp),ui.inputFormatter.currencyFormatter,ui.inputFormatter.decimalPointFormatter]})},M=e=>{let{symbol:t,tpPrice:o,slPrice:i,qty:a,maxQty:u,side:p,quoteDP:g,baseDP:r,isEditing:P,isPositionTPSL:_}=e,{t:m}=i18n.useTranslation(),[L,T]=hooks.useLocalStorage("orderly_order_confirm",true),c=ui.textVariants({size:"xs",intensity:54}),l=_??a>=u;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[P&&jsxRuntime.jsx(ui.Text,{as:"div",size:"2xs",intensity:80,className:"oui-mb-3",children:`You agree to edit your ${utils.transSymbolformString(t)} order.`}),jsxRuntime.jsxs(ui.Flex,{pb:4,children:[jsxRuntime.jsx(ui.Box,{grow:true,children:jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",formatString:"base-type",size:"base",showIcon:true,as:"div",intensity:80,children:t})}),jsxRuntime.jsxs(ui.Flex,{gap:1,children:[l&&jsxRuntime.jsx(ui.Badge,{size:"xs",color:"primary",children:m("common.position")}),jsxRuntime.jsx(Ze,{tpPrice:o,slPrice:i}),p===types.OrderSide.SELL?jsxRuntime.jsx(ui.Badge,{size:"xs",color:"success",children:m("common.buy")}):jsxRuntime.jsx(ui.Badge,{size:"xs",color:"danger",children:m("common.sell")})]})]}),jsxRuntime.jsx(ui.Divider,{}),jsxRuntime.jsxs(ui.Flex,{direction:"column",itemAlign:"stretch",gapY:1,pt:4,className:ui.cn(c,"oui-pb-4 xl:oui-pb-5"),children:[jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Box,{grow:true,children:m("common.qty")}),jsxRuntime.jsx("div",{children:l?jsxRuntime.jsx("span",{className:"oui-text-base-contrast",children:m("tpsl.entirePosition")}):jsxRuntime.jsx(ui.Text.numeral,{intensity:98,dp:r,padding:false,children:a})})]}),typeof o=="number"&&o>0?jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Box,{grow:true,children:m("tpsl.tpPrice")}),jsxRuntime.jsx(ui.Text.numeral,{as:"div",coloring:true,unit:"USDC",size:"sm",dp:g,unitClassName:"oui-text-base-contrast-54 oui-ml-1",children:o})]}):null,typeof i=="number"&&i>0?jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Box,{grow:true,children:m("tpsl.slPrice")}),jsxRuntime.jsx(ui.Text.numeral,{as:"div",coloring:true,unit:"USDC",size:"sm",dp:g,className:"oui-text-trade-loss",unitClassName:"oui-text-base-contrast-54 oui-ml-1",children:i})]}):null,jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Box,{grow:true,children:m("common.price")}),jsxRuntime.jsx("div",{className:"oui-text-base-contrast",children:m("common.marketPrice")})]})]}),jsxRuntime.jsx(ui.Box,{pt:2,children:jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Checkbox,{id:"disabledConfirm",color:"white",checked:!L,onCheckedChange:s=>{T(!s);}}),jsxRuntime.jsx("label",{htmlFor:"disabledConfirm",className:ui.textVariants({size:"xs",intensity:54,className:"oui-ml-1"}),children:m("orderEntry.disableOrderConfirm")})]})})]})},Ze=e=>{let{tpPrice:t,slPrice:o}=e,{t:i}=i18n.useTranslation();return t&&o?jsxRuntime.jsx(ui.Badge,{size:"xs",color:"neutral",children:i("common.tpsl")}):t?jsxRuntime.jsx(ui.Badge,{size:"xs",color:"neutral",children:i("tpsl.tp")}):o?jsxRuntime.jsx(ui.Badge,{size:"xs",color:"neutral",children:i("tpsl.sl")}):null};var de=e=>{let{position:t,order:o,isEditing:i}=e;if(i&&!o)throw new types.SDKError("order is required when isEditing is true");let a=i?o.symbol:t.symbol,u=hooks.useSymbolsInfo(),p=react.useRef(types.AlgoOrderRootType.TP_SL),[g]=hooks.useLocalStorage("orderly_order_confirm",true),[r,{submit:P,deleteOrder:_,setValue:m,validate:L,errors:T,isCreateMutating:c,isUpdateMutating:l}]=hooks.useTPSLOrder({symbol:a,position_qty:t.position_qty,average_open_price:t.average_open_price},{defaultOrder:o,isEditing:i}),s=y=>{m("quantity",y);},S=(y,N)=>{m(y,N);},h=(y,N)=>{m(y,N);},f=react.useMemo(()=>Math.abs(Number(t.position_qty)),[t.position_qty]),X=react.useMemo(()=>{let y=o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL?f:o?.quantity,N=0;if((Number(r.quantity)!==y||!i&&r.quantity)&&(N=1),o&&i){let Se=o.child_orders.find(D=>D.algo_type===types.AlgoOrderType.TAKE_PROFIT),Ce=o.child_orders.find(D=>D.algo_type===types.AlgoOrderType.STOP_LOSS);Se?.trigger_price!==Number(r.tp_trigger_price)&&typeof typeof r.tp_trigger_price<"u"&&(N=2),Ce?.trigger_price!==Number(r.sl_trigger_price)&&typeof r.sl_trigger_price<"u"&&(N=3);}return N===1&&!r.tp_trigger_price&&!r.sl_trigger_price&&(N=-1),N},[r.tp_trigger_price,r.sl_trigger_price,r.quantity,o,i]),xe=react.useMemo(()=>o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL&&Number(r.quantity)<f&&!r.tp_trigger_price&&!r.sl_trigger_price?false:X>0&&!!r.quantity&&!T,[r.quantity,f,X,T]),V=react.useMemo(()=>i?o&&o.algo_type!==types.AlgoOrderRootType.POSITIONAL_TP_SL?false:r.algo_order_id&&r.quantity==0?true:Number(r.quantity)>=f:Number(r.quantity)>=f,[r.quantity,f,o?.algo_type,i]);react.useEffect(()=>{if(!i&&V){let y=hooks.utils.findTPSLFromOrder(o);!r.tp_trigger_price&&y.tp_trigger_price&&S("tp_trigger_price",y.tp_trigger_price),!r.sl_trigger_price&&y.sl_trigger_price&&S("sl_trigger_price",y.sl_trigger_price);}},[i,V,r]),react.useEffect(()=>{let y=Number(r.quantity)<f?types.AlgoOrderRootType.TP_SL:types.AlgoOrderRootType.POSITIONAL_TP_SL;typeof e.onTPSLTypeChange=="function"&&p.current!==y&&e.onTPSLTypeChange(y),p.current=y;},[r.quantity,f]);let Te=()=>o?.algo_order_id&&o?.symbol?_(o?.algo_order_id,o?.symbol):Promise.reject("order id or symbol is invalid"),Le=async()=>typeof e.onConfirm!="function"||!g?P({accountId:t.account_id}).then(()=>true).catch(y=>{throw y?.message&&ui.toast.error(y.message),false}):e.onConfirm(r,{position:t,submit:P,cancel:Te});return {isEditing:i,symbolInfo:u[a],maxQty:f,setQuantity:s,orderQuantity:r.quantity,isPosition:V,TPSL_OrderEntity:r,setOrderValue:m,setPnL:h,setOrderPrice:S,onSubmit:Le,valid:xe,errors:T,status:{isCreateMutating:c,isUpdateMutating:l}}};var A=e=>{let{onCancel:t,onComplete:o,...i}=e,a=de(i);return jsxRuntime.jsx(le,{...a,onCancel:t,onComplete:o})};var Pt=e=>{let{position:t,order:o,baseDP:i,quoteDP:a,buttonProps:u,isEditing:p}=e,[g,r]=react.useState(false),[P,_]=react.useState(true),[m]=hooks.useLocalStorage("orderly_order_confirm",true),{t:L}=i18n.useTranslation(),T=p?o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL:void 0;return jsxRuntime.jsxs(ui.PopoverRoot,{onOpenChange:c=>{P&&r(c);},open:g,children:[jsxRuntime.jsx(ui.PopoverTrigger,{asChild:true,onClick:()=>{r(true);},children:e.children||jsxRuntime.jsx(ui.Button,{variant:"outlined",size:"sm",color:"secondary",...u,children:e.label})}),jsxRuntime.jsx(ui.PopoverContent,{className:ui.cn("oui-w-[360px]",P?"oui-visible":"oui-invisible"),align:"end",side:"top",children:jsxRuntime.jsx(A,{position:t,order:o,isEditing:p,onComplete:()=>{r(false);},onCancel:()=>{r(false);},onConfirm:(c,l)=>{if(!m)return Promise.resolve(true);_(false);let s=Math.abs(Number(t.position_qty));if(`${c.tp_trigger_price??""}`.length===0&&`${c.sl_trigger_price??""}`.length===0)return ui.modal.confirm({title:L("orders.cancelOrder"),content:L("tpsl.cancelOrder.description"),onOk:()=>l.cancel()}).then(()=>(r(false),_(true),true),()=>(_(true),Promise.reject(false)));let S=p||!!c&&c.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL&&c.quantity===s;return ui.modal.confirm({title:L(S?"orders.editOrder":"tpsl.confirmOrder"),onOk:async()=>{try{let h=await l.submit({accountId:t.account_id});return h.success?h:(h.message&&ui.toast.error(h.message),!1)}catch(h){return h?.message&&ui.toast.error(h.message),false}},classNames:{body:"!oui-pb-0"},content:jsxRuntime.jsx(M,{isPositionTPSL:T,isEditing:S,symbol:c.symbol,qty:Number(c.quantity),maxQty:s,tpPrice:Number(c.tp_trigger_price),slPrice:Number(c.sl_trigger_price),side:c.side,quoteDP:a??2,baseDP:i??2})}).then(()=>(r(false),_(true),true),()=>(_(true),Promise.reject(false)))}})})]})};var St=e=>{let{position:t,order:o,symbolInfo:i,isEditing:a}=e,{resolve:u,hide:p,updateArgs:g}=ui.useModal(),[r]=hooks.useLocalStorage("orderly_order_confirm",true),{t:P}=i18n.useTranslation(),_=a?o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL:void 0,m=l=>{a||g({title:l});},L=()=>{u(),p();},{quote_dp:T,base_dp:c}=i;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Ct,{position:t,symbolInfo:i}),jsxRuntime.jsx(A,{...e,onTPSLTypeChange:l=>{m(l===types.AlgoOrderRootType.TP_SL?P("common.tpsl"):P("tpsl.positionTpsl"));},onComplete:L,onConfirm:(l,s)=>{if(!r)return Promise.resolve(true);let S=Math.abs(Number(t.position_qty)),h=a||!!l&&l.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL&&l.quantity===S;return ui.modal.confirm({title:P(h?"orders.editOrder":"tpsl.confirmOrder"),bodyClassName:"oui-pb-0 lg:oui-pb-0",onOk:async()=>{try{let f=await s.submit({accountId:t.account_id});return f.success?f:(f.message&&ui.toast.error(f.message),!1)}catch(f){return f?.message&&ui.toast.error(f.message),false}},content:jsxRuntime.jsx(M,{isPositionTPSL:_,isEditing:a,symbol:l.symbol,qty:Number(l.quantity),maxQty:S,tpPrice:Number(l.tp_trigger_price),slPrice:Number(l.sl_trigger_price),side:l.side,quoteDP:T??2,baseDP:c??2})}).then(()=>true,f=>(f?.message&&ui.toast.error(f.message),Promise.reject(false)))},onCancel:()=>{p();}})]})};var Ct=e=>{let{position:t,symbolInfo:o}=e,{data:i}=hooks.useMarkPrice(t.symbol),a=ui.useModal(),{t:u}=i18n.useTranslation(),p=react.useMemo(()=>a.args?.title===u("tpsl.positionTpsl"),[a.args?.title,u]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",pb:3,itemAlign:"center",children:[jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",className:"oui-text-xs",showIcon:true,children:t.symbol}),jsxRuntime.jsxs(ui.Flex,{gapX:1,children:[p&&jsxRuntime.jsx(ui.Badge,{size:"xs",color:"primary",children:u("common.position")}),jsxRuntime.jsx(ui.Badge,{size:"xs",color:"neutral",children:u("common.tpsl")}),t.position_qty<0?jsxRuntime.jsx(ui.Badge,{size:"xs",color:"buy",children:u("common.buy")}):jsxRuntime.jsx(ui.Badge,{size:"xs",color:"sell",children:u("common.sell")})]})]}),jsxRuntime.jsx(ui.Divider,{intensity:8}),jsxRuntime.jsxs(ui.Box,{py:3,className:"oui-space-y-1",children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"sm",intensity:54,children:u("common.avgOpen")}),jsxRuntime.jsx(ui.Text.numeral,{className:"oui-text-xs",unit:o.quote,dp:o.quote_dp,unitClassName:"oui-ml-1 oui-text-base-contrast-36",children:t.average_open_price})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"sm",intensity:54,children:u("common.markPrice")}),jsxRuntime.jsx(ui.Text.numeral,{className:"oui-text-xs",unit:o.quote,dp:o.quote_dp,unitClassName:"oui-ml-1 oui-text-base-contrast-36",children:i})]})]})]})};
14
+ var ee=e=>{let{t}=i18n.useTranslation(),{order:o}=e,{symbol:r,side:i}=o,n=hooks.useMarkPrice(r),l=hooks.useIndexPrice(r),a=hooks.useSymbolLeverage(r);return jsxRuntime.jsxs(ui.Flex,{direction:"column",itemAlign:"start",className:ui.cn("oui-w-full oui-gap-3 oui-font-semibold ",e.classNames?.root),children:[jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",className:ui.cn("oui-gap-2 ",e.classNames?.symbol),children:[jsxRuntime.jsxs(ui.Flex,{gap:1,itemAlign:"center",children:[jsxRuntime.jsx(ui.TokenIcon,{symbol:r,className:"oui-w-5 oui-h-5"}),jsxRuntime.jsx(ui.Text.formatted,{className:"oui-break-normal oui-whitespace-nowrap",rule:"symbol",formatString:"base-type",size:"sm",weight:"semibold",intensity:98,children:r})]}),jsxRuntime.jsxs(ui.Text,{size:"2xs",className:"oui-text-base-contrast-36 oui-h-[18px] oui-px-2 oui-bg-base-7 oui-rounded oui-font-semibold",children:[a,"x"]})]}),jsxRuntime.jsxs(ui.Grid,{cols:2,gapX:2,gapY:1,className:ui.cn("oui-w-full oui-gap-x-2 ",e.classNames?.container),children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",className:" oui-text-base-contrast-36",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:t("tpsl.advanced.quantity")}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",className:"oui-text-base-contrast-80",size:"2xs",dp:e.baseDP??2,children:Number(o.order_quantity)})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-text-base-contrast-36",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:t("tpsl.advanced.lastPrice")}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",className:"oui-text-base-contrast-80",size:"2xs",dp:e.quoteDP??2,children:l?.data})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-text-base-contrast-36",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:t("tpsl.advanced.orderPrice")}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",className:"oui-text-base-contrast-80",size:"2xs",dp:e.quoteDP??2,children:Number(o.order_price)})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-text-base-contrast-36",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:t("common.markPrice")}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",className:"oui-text-base-contrast-80",size:"2xs",dp:e.quoteDP??2,children:n?.data})]})]})]})};var _e=e=>{let{t}=i18n.useTranslation(),{tp_pnl:o,sl_pnl:r}=e,i=react.useMemo(()=>{if(o&&r){let n=new utils.Decimal(o).div(r).abs().toNumber().toFixed(2);return jsxRuntime.jsxs(ui.Flex,{gap:1,itemAlign:"center",className:"oui-text-base-contrast-80",children:[jsxRuntime.jsx(ui.Text,{children:n}),jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast-36",children:"x"})]})}return jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast-36",children:"-- x"})},[o,r]);return jsxRuntime.jsxs(ui.Flex,{direction:"column",itemAlign:"start",className:ui.cn("oui-w-full oui-gap-1 oui-text-2xs oui-text-base-contrast-36",e.className),children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-w-full",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:t("tpsl.totalEstTpPnl")}),jsxRuntime.jsx(ui.Text.numeral,{suffix:jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast-36 oui-ml-1",children:"USDC"}),rule:"price",coloring:true,visible:true,size:"2xs",dp:2,children:o?Number(o):"--"})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-w-full",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:t("tpsl.totalEstSlPnl")}),r?jsxRuntime.jsx(ui.Text.numeral,{suffix:jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast-36 oui-ml-1",children:"USDC"}),coloring:true,visible:true,size:"2xs",dp:2,children:Number(r)}):jsxRuntime.jsx(ui.Text,{size:"2xs",children:"-- USDC"})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-w-full",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:t("tpsl.riskRewardRatio")}),jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast-80",size:"2xs",children:i})]})]})};var Me=e=>({disableOrderTypeSelector:e.disableOrderTypeSelector,values:e.values,onChange:e.onChange,type:e.type,quote_dp:e.quote_dp,positionType:e.positionType,errors:e.errors,hideOrderPrice:e.hideOrderPrice,rootOrderPrice:e.rootOrderPrice,symbol:e.symbol});var yt=e=>{let{type:t,values:o}=e,[r,i]=hooks.useLocalStorage("TP/SL_Mode","Offset%"),[n,l]=react.useState(true),{t:a}=i18n.useTranslation(),s=react.useMemo(()=>{switch(r){case "Offset":return `${t.toLowerCase()}_offset`;case "Offset%":return `${t.toLowerCase()}_offset_percentage`;default:return `${t.toLowerCase()}_pnl`}},[r]),d=react.useMemo(()=>o[r],[o,r]),O=react.useMemo(()=>[{label:a("tpsl.pnl"),value:"PnL",testId:"PnL_menu_item"},{label:a("tpsl.offset"),value:"Offset",testId:"Offset_mneu_item"},{label:`${a("tpsl.offset")}%`,value:"Offset%",testId:"Offset%_menu_item"}],[a]),c=react.useRef(""),m=T=>{e.onChange(s,T);},f=T=>{let{dp:g=2}=T;return {onRenderBefore:(u,x)=>(u=`${u}`,n&&t==="SL"&&r==="PnL"&&(u=u.startsWith("-")?u:"-"+u),u===""||u==="-"?"":r==="Offset%"?`${new utils.Decimal(u.replace(new RegExp(c.current.replace(".","\\.")+"$"),"")).mul(100).todp(2,4).toString()}${c.current}`:(r==="Offset"&&(u=utils.todpIfNeed(u,g)),`${u}`)),onSendBefore:u=>{if(/^\-?0{2,}$/.test(u))return "0";if(r==="Offset%"){if(u!==""){u=utils.todpIfNeed(u,2);let x=u.match(/\.0{0,2}$/);x?c.current=x[0]:c.current="",u=new utils.Decimal(u).div(100).toString(),u=`${u}${c.current}`;}}else r==="PnL"&&t==="SL"&&n?u=u.startsWith("-")?u:"-"+u:u=utils.todpIfNeed(u,g);return u===""||u==="-"?"":u}}};return {mode:r,modes:O,type:e.type,formatter:f,onModeChange:T=>{i(T);},value:d,pnl:o.PnL,onValueChange:m,quote_dp:e.quote_dp,setFocus:l}};var bt=e=>{let{mode:t,modes:o,onModeChange:r,onValueChange:i,quote:n,quote_dp:l,value:a,pnl:s}=e,{t:d}=i18n.useTranslation(),[O,c]=react.useState(t),[m,f]=react.useState(t==="Offset%"?"%":n),T=react.useMemo(()=>{let g=Number(s);if(isNaN(g)||g===0)return "";if(g>0)return "oui-text-trade-profit";if(g<0)return "oui-text-trade-loss"},[s]);return react.useEffect(()=>{let g=o.find(u=>u.value===t)?.label;c(g),f(t==="Offset%"?"%":n);},[t,o]),jsxRuntime.jsx(ui.Input,{prefix:O,size:{initial:"lg",lg:"md"},placeholder:m,align:"right",value:a,"data-testid":e.testId,autoComplete:"off",onValueChange:i,formatters:[e.formatter({dp:l,mode:t}),ui.inputFormatter.currencyFormatter,ui.inputFormatter.decimalPointFormatter],classNames:{input:ui.cn("oui-text-2xs",T),prefix:"oui-text-base-contrast-54 oui-text-2xs",root:"oui-outline-line-12 focus-within:oui-outline-primary-light"},onFocus:()=>{f(""),e.setFocus(true);},onBlur:()=>{f(t==="Offset%"?"%":n),e.setFocus(false);},suffix:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t==="Offset%"&&!!a&&jsxRuntime.jsx(ui.Text,{size:"2xs",color:"inherit",className:ui.cn("oui-ml-[2px]",T),children:"%"}),jsxRuntime.jsx(Qr,{mode:t,modes:o,onModeChange:g=>r(g.value)})]})})},Qr=e=>jsxRuntime.jsx(ui.SimpleDropdownMenu,{currentValue:e.mode,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 Ot=e=>{let{testId:t,quote:o,...r}=e,i=yt(r);return jsxRuntime.jsx(bt,{...i,testId:t,quote:o})};var Lt=e=>{let{t}=i18n.useTranslation(),o=[{label:t("orderEntry.orderType.limitOrder"),value:types.OrderType.LIMIT},{label:t("orderEntry.orderType.marketOrder"),value:types.OrderType.MARKET}];return jsxRuntime.jsx(ui.Select.options,{value:e.type,options:o,disabled:e.disabled,onValueChange:e.onChange,size:"xs",classNames:{trigger:"oui-bg-transparent oui-w-auto oui-outline-line-1 oui-input-root oui-bg-base-6 oui-h-10 lg:oui-h-8 oui-outline-line-12 "},valueFormatter:(r,i)=>{let n={[types.OrderType.LIMIT]:t("orderEntry.orderType.limit"),[types.OrderType.MARKET]:t("common.marketPrice")}[r];return jsxRuntime.jsx(ui.Text,{size:"2xs",children:n})}})};var ze=e=>{let{t}=i18n.useTranslation(),{parseErrorMsg:o}=reactApp.useOrderEntryFormErrorMsg(e.errors),{values:r,positionType:i}=e,n=hooks.useSymbolLeverage(e.symbol),l=react.useMemo(()=>{let a=null;if(!e.rootOrderPrice||!r.trigger_price&&!r.order_price)return null;let s=new utils.Decimal(0);if(r.order_type===types.OrderType.MARKET){if(!r.trigger_price)return null;s=new utils.Decimal(r.trigger_price);}else if(r.order_type===types.OrderType.LIMIT){if(!r.order_price)return null;s=new utils.Decimal(r.order_price);}let d=new utils.Decimal(e.rootOrderPrice);return a=s.minus(d).div(d).mul(n).abs().mul(100).mul(e.type==="tp"?1:-1).toNumber(),a},[r,e.rootOrderPrice,n,e.type]);return jsxRuntime.jsxs(ui.Flex,{direction:"column",itemAlign:"start",justify:"start",className:"oui-w-full",children:[jsxRuntime.jsxs(ui.Flex,{className:"oui-w-full",itemAlign:"center",justify:"start",children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":`oui-testid-orderEntry-${e.type}-enable-checkBox`,id:`enable_${e.type}`,color:"white",checked:r.enable,onCheckedChange:a=>{e.onChange(`${e.type}_enable`,!!a);}}),jsxRuntime.jsx("label",{htmlFor:`enable_${e.type}`,className:"oui-ml-1 oui-cursor-pointer oui-text-sm oui-text-base-contrast-36",children:e.type==="tp"?t("tpsl.advanced.TP.label"):t("tpsl.advanced.SL.label")})]}),jsxRuntime.jsxs(ui.Flex,{direction:"column",gap:2,itemAlign:"start",className:ui.cn("oui-w-full oui-pt-2",r.enable?"":"oui-hidden"),children:[jsxRuntime.jsxs(ui.Flex,{direction:"column",itemAlign:"start",className:"oui-w-full oui-gap-0.5",children:[jsxRuntime.jsx(ui.Text,{className:"oui-text-2xs oui-text-base-contrast-54",children:t("tpsl.advanced.triggerPrice")}),jsxRuntime.jsxs(ui.Grid,{cols:2,gap:2,className:"oui-w-full oui-px-0.5",children:[jsxRuntime.jsx(Ue,{type:`${e.type} price`,value:r.trigger_price,error:o(`${e.type}_trigger_price`),onValueChange:a=>{e.onChange(`${e.type}_trigger_price`,a);},quote_dp:e.quote_dp}),jsxRuntime.jsx(Ot,{type:e.type==="tp"?"TP":"SL",onChange:(a,s)=>{e.onChange(a,s);},quote:"USDC",quote_dp:2,values:r})]})]}),jsxRuntime.jsxs(ui.Flex,{direction:"column",className:ui.cn("oui-w-full oui-gap-0.5",e.hideOrderPrice?"oui-hidden":""),itemAlign:"start",children:[jsxRuntime.jsx(ui.Text,{className:"oui-text-2xs oui-text-base-contrast-54",children:t("tpsl.advanced.orderPrice")}),jsxRuntime.jsxs(ui.Grid,{cols:2,gap:2,className:"oui-w-full oui-px-0.5",children:[jsxRuntime.jsx(Ue,{disabled:i===types.PositionType.FULL||r.order_type===types.OrderType.MARKET,type:"order price",label:r.order_type===types.OrderType.LIMIT?t("tpsl.advanced.limit"):t("tpsl.advanced.market"),value:r.order_price,error:o(`${e.type}_order_price`),onValueChange:a=>{e.onChange(`${e.type}_order_price`,a);},quote_dp:e.quote_dp}),jsxRuntime.jsx(Lt,{disabled:i===types.PositionType.FULL||e.disableOrderTypeSelector,type:r.order_type,onChange:a=>{e.onChange(`${e.type}_order_type`,a);}})]})]})]}),jsxRuntime.jsx(to,{price:r.order_type===types.OrderType.MARKET?r.trigger_price:r.order_price,orderType:r.order_type,pnl:r.PnL,roi:l,dp:e.quote_dp,className:"oui-mt-1"})]})},to=e=>{let{t}=i18n.useTranslation(),{price:o,pnl:r,roi:i,dp:n,className:l,orderType:a}=e;return !i||!o||!r?null:jsxRuntime.jsx(ui.Text,{className:ui.cn("oui-text-2xs oui-text-base-contrast-36",l),children:jsxRuntime.jsx(i18n.Trans,{i18nKey:"tpsl.advanced.ROI",components:[jsxRuntime.jsx(react.Fragment,{children:jsxRuntime.jsx(ui.Text.numeral,{className:"oui-px-1 oui-text-base-contrast",dp:n,suffix:jsxRuntime.jsx(ui.Text,{className:"oui-pl-0.5",children:"USDC"}),children:o})},"price"),jsxRuntime.jsx(react.Fragment,{children:jsxRuntime.jsx(ui.Text,{className:"oui-px-1 oui-text-base-contrast",children:a===types.OrderType.MARKET?t("common.market"):t("common.limit")})},"orderType"),jsxRuntime.jsx(react.Fragment,{children:jsxRuntime.jsx(ui.Text.numeral,{coloring:true,className:"oui-whitespace-nowrap oui-px-1",dp:2,suffix:jsxRuntime.jsx(ui.Text,{className:"oui-pl-0.5",children:"USDC"}),children:r})},"pnl"),jsxRuntime.jsx(react.Fragment,{children:jsxRuntime.jsx(ui.Text.numeral,{coloring:true,className:"oui-whitespace-nowrap oui-px-1",dp:2,suffix:"%",children:i})},"roi")]})})};var oe=e=>{let t=Me(e);return jsxRuntime.jsx(ze,{...t})};var ht=e=>({value:e.value,onChange:e.onChange,disableSelector:e.disableSelector});var ao="position_type",vt=e=>{let{t}=i18n.useTranslation(),o=[{label:t("tpsl.positionType.partial"),value:types.PositionType.PARTIAL},{label:t("tpsl.positionType.full"),value:types.PositionType.FULL}];return jsxRuntime.jsxs(ui.Flex,{gap:1,itemAlign:"center",justify:"start",children:[jsxRuntime.jsx(ui.Tooltip,{className:"oui-w-[280px] oui-p-3",content:e.value===types.PositionType.FULL?t("tpsl.positionType.full.tips"):t("tpsl.positionType.partial.tips"),children:jsxRuntime.jsx(ui.ExclamationFillIcon,{className:"oui-cursor-pointer oui-text-base-contrast-54",size:12})}),e.disableSelector?e.value===types.PositionType.FULL?jsxRuntime.jsx(ui.Text,{className:"oui-text-2xs oui-font-semibold oui-text-base-contrast-54",children:t("tpsl.positionType.full")}):jsxRuntime.jsx(ui.Text,{className:"oui-text-2xs oui-font-semibold oui-text-base-contrast-54",children:t("tpsl.positionType.partial")}):jsxRuntime.jsx(ui.Select.options,{value:e.value,options:o,onValueChange:r=>{e.onChange(ao,r);},size:"xs",classNames:{trigger:" oui-bg-transparent oui-border-0 oui-w-auto oui-px-0"},contentProps:{className:" oui-bg-base-8 oui-border-0"}})]})};var ie=e=>{let t=ht(e);return jsxRuntime.jsx(vt,{...t})};var Et=e=>{let{TPSL_OrderEntity:t,symbolInfo:o,onCancel:r,onComplete:i,status:n,errors:l,valid:a,position:s,setValues:d,onClose:O,isEditing:c}=e,{t:m}=i18n.useTranslation(),{isMobile:f}=ui.useScreen(),{parseErrorMsg:T}=reactApp.useOrderEntryFormErrorMsg(l),g=()=>t.position_type===types.PositionType.FULL?null:jsxRuntime.jsx(ui.Box,{className:"oui-px-0.5",children:jsxRuntime.jsx(No,{maxQty:e.maxQty,quantity:e.orderQuantity??e.maxQty,baseTick:o("base_tick"),dp:o("base_dp"),onQuantityChange:e.setQuantity,quote:o("base"),isEditing:e.isEditing,errorMsg:T("quantity")})});return jsxRuntime.jsxs("div",{id:"orderly-tp_sl-order-edit-content",children:[jsxRuntime.jsxs(ui.ScrollArea,{className:ui.cn(f&&"oui-h-[calc(100vh-200px)]"),children:[jsxRuntime.jsx(ee,{baseDP:o("base_dp"),quoteDP:o("quote_dp"),classNames:{root:"oui-mb-3",container:"oui-gap-x-[30px]"},order:{symbol:s.symbol,order_quantity:s.position_qty.toString(),order_price:s.average_open_price.toString()}}),jsxRuntime.jsxs(ui.Flex,{direction:"column",justify:"start",itemAlign:"start",gap:3,className:"oui-w-full oui-mb-3",children:[!c&&jsxRuntime.jsx(ie,{disableSelector:true,value:t.position_type??types.PositionType.PARTIAL,onChange:(u,x)=>{x===types.PositionType.FULL?d({position_type:x,quantity:Math.abs(s.position_qty).toString(),tp_order_price:"",tp_order_type:types.OrderType.MARKET,tp_trigger_price:"",sl_order_price:"",sl_order_type:types.OrderType.MARKET,sl_trigger_price:""}):d({position_type:x,quantity:"",tp_order_price:"",tp_order_type:types.OrderType.MARKET,tp_trigger_price:"",sl_order_price:"",sl_order_type:types.OrderType.MARKET,sl_trigger_price:""});}}),t.position_type===types.PositionType.FULL&&jsxRuntime.jsx(ui.Text,{className:"oui-text-warning oui-text-2xs",children:m("tpsl.positionType.full.tips.market")})]}),g(),jsxRuntime.jsxs(ui.Flex,{direction:"column",itemAlign:"start",justify:"start",gap:6,className:"oui-w-full oui-mt-3",children:[jsxRuntime.jsx(oe,{symbol:s.symbol,rootOrderPrice:s.average_open_price.toString(),type:"tp",values:{enable:t.tp_enable??true,trigger_price:t.tp_trigger_price?.toString()??void 0,PnL:t.tp_pnl?.toString()??void 0,Offset:t.tp_offset?.toString()??void 0,"Offset%":t.tp_offset_percentage?.toString()??void 0,order_price:t.tp_order_price?.toString()??void 0,order_type:t.tp_order_type??types.OrderType.MARKET},hideOrderPrice:t.position_type===types.PositionType.FULL,errors:l,disableOrderTypeSelector:c,quote_dp:o("quote_dp"),positionType:t.position_type??types.PositionType.PARTIAL,onChange:(u,x)=>{e.setOrderValue(u,x);}}),jsxRuntime.jsx(oe,{symbol:s.symbol,rootOrderPrice:s.average_open_price.toString(),type:"sl",values:{enable:t.sl_enable??true,trigger_price:t.sl_trigger_price?.toString()??void 0,PnL:t.sl_pnl?.toString()??void 0,Offset:t.sl_offset?.toString()??void 0,"Offset%":t.sl_offset_percentage?.toString()??void 0,order_price:t.sl_order_price?.toString()??void 0,order_type:t.sl_order_type??types.OrderType.MARKET},hideOrderPrice:t.position_type===types.PositionType.FULL,errors:l,quote_dp:o("quote_dp"),positionType:t.position_type??types.PositionType.PARTIAL,disableOrderTypeSelector:c,onChange:(u,x)=>{e.setOrderValue(u,x);}})]}),jsxRuntime.jsx(_e,{tp_pnl:t.tp_pnl,sl_pnl:t.sl_pnl,className:"oui-my-3"})]}),jsxRuntime.jsxs(ui.Grid,{cols:2,gap:3,mt:4,children:[jsxRuntime.jsx(ui.Button,{size:"md",color:"secondary","data-testid":"tpsl-cancel",onClick:()=>{e.close?.();},children:m("common.cancel")}),jsxRuntime.jsx(ui.ThrottledButton,{size:"md","data-testid":"tpsl-confirm",disabled:!e.valid||n.isCreateMutating,loading:n.isCreateMutating||n.isUpdateMutating,onClick:()=>{e.onSubmit().then(()=>{e.close?.(),i?.();}).catch(u=>{});},children:m("common.confirm")})]})]})},No=e=>{let t=react.useRef(null),o=ui.convertValueToPercentage(e.quantity,0,e.maxQty)/100,{t:r}=i18n.useTranslation(),i=l=>{let a=l;Number(l)>e.maxQty&&(a=e.maxQty.toString()),e.baseTick>0&&e.onQuantityChange?.(hooks.utils.formatNumber(a,e.baseTick)??l);},n=e.quantity.toString().length>0?e.errorMsg:void 0;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Flex,{gap:2,children:jsxRuntime.jsx("div",{className:"oui-flex-1",children:jsxRuntime.jsx(ui.Input.tooltip,{"data-testid":"oui-testid-tpsl-popUp-quantity-input",ref:t,prefix:r("common.quantity"),size:{initial:"md",lg:"sm"},align:"right",value:e.quantity,autoComplete:"off",classNames:{prefix:"oui-text-base-contrast-54",root:ui.cn("oui-bg-base-5 oui-outline-line-12",n&&"oui-outline-danger")},tooltipProps:{content:{className:"oui-bg-base-6 oui-text-base-contrast-80"},arrow:{className:"oui-fill-base-6"}},tooltip:n,color:n?"danger":void 0,formatters:[ui.inputFormatter.dpFormatter(e.dp),ui.inputFormatter.numberFormatter,ui.inputFormatter.currencyFormatter,ui.inputFormatter.decimalPointFormatter],onValueChange:l=>{e.onQuantityChange?.(l);let a=Number(l);if(a&&a>e.maxQty){let s=e.maxQty;e.onQuantityChange?.(s),t.current?.blur();}},onBlur:l=>i(l.target.value),suffix:jsxRuntime.jsx("span",{className:"oui-text-2xs oui-text-base-contrast-54 oui-px-3",children:e.quote})})})}),jsxRuntime.jsx(ui.Flex,{mt:2,itemAlign:"center",height:"15px",children:jsxRuntime.jsx(ui.Slider.single,{markCount:5,color:"primary",max:e.maxQty,min:0,showTip:true,step:e.baseTick,value:e.quantity,onValueCommit:l=>{i(`${l}`);},onValueChange:l=>{e.onQuantityChange?.(l);}})}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",color:"primary",size:"2xs",children:o}),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:"primary",size:"2xs",children:r("common.max")})}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",size:"2xs",intensity:54,tick:e.baseTick,children:e.maxQty})]})]})]})},Ue=e=>{let[t,o]=react.useState("USDC"),{t:r}=i18n.useTranslation();return jsxRuntime.jsx(ui.Input.tooltip,{"data-testid":`oui-testid-tpsl-popUp-${e.type.toLowerCase()}-input`,prefix:e.label??r("common.markPrice"),size:{initial:"lg",lg:"md"},tooltip:e.error,placeholder:t,disabled:e.disabled,align:"right",autoComplete:"off",value:e.value,color:e.error?"danger":void 0,classNames:{input:"oui-text-2xs placeholder:oui-text-2xs",prefix:"oui-text-base-contrast-54 oui-text-2xs",root:"oui-w-full"},onValueChange:e.onValueChange,onFocus:()=>{o("");},onBlur:()=>{o("USDC");},formatters:[ui.inputFormatter.numberFormatter,ui.inputFormatter.dpFormatter(e.quote_dp),ui.inputFormatter.currencyFormatter,ui.inputFormatter.decimalPointFormatter]})},H=e=>{let{symbol:t,tpPrice:o,slPrice:r,qty:i,maxQty:n,side:l,quoteDP:a,baseDP:s,isEditing:d,isPositionTPSL:O,orderInfo:c}=e,{t:m}=i18n.useTranslation(),[f,T]=hooks.useLocalStorage("orderly_order_confirm",true),g=()=>c.position_type===types.PositionType.FULL?jsxRuntime.jsx(ui.Text,{children:m("tpsl.positionType.full")}):jsxRuntime.jsx(ui.Text,{children:m("tpsl.positionType.partial")}),u=({price:E,isOrderPrice:C,isEnable:h,colorType:v})=>h?!E&&C?jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast-36",children:m("common.market")}):jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",className:ui.cn("oui-text-base-contrast",v==="TP"?"oui-text-trade-profit":"oui-text-trade-loss"),unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:a,padding:false,children:E}):jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast-36",children:"-- USDC"}),x=O;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[d&&jsxRuntime.jsx(ui.Text,{as:"div",size:"2xs",intensity:80,className:"oui-mb-3",children:m("tpsl.agreement",{symbol:utils.transSymbolformString(t)})}),jsxRuntime.jsxs(ui.Flex,{pb:4,children:[jsxRuntime.jsx(ui.Box,{grow:true,children:jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",formatString:"base-type",size:"base",showIcon:true,as:"div",intensity:80,children:t})}),jsxRuntime.jsxs(ui.Flex,{gap:1,children:[x&&jsxRuntime.jsx(ui.Badge,{size:"xs",color:"primary",children:m("common.position")}),jsxRuntime.jsx(ho,{tpPrice:o,slPrice:r}),l===types.OrderSide.SELL?jsxRuntime.jsx(ui.Badge,{size:"xs",color:"success",children:m("common.buy")}):jsxRuntime.jsx(ui.Badge,{size:"xs",color:"danger",children:m("common.sell")})]})]}),jsxRuntime.jsx(ui.Divider,{}),c.tp_trigger_price||c.sl_trigger_price?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Divider,{className:"oui-my-4"}),jsxRuntime.jsxs("div",{className:ui.textVariants({size:"sm",intensity:54,className:"oui-space-y-1 oui-w-full oui-flex oui-flex-col oui-gap-3"}),children:[jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast",children:g()}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:m("common.orderQty")}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",dp:s,padding:false,className:"oui-text-base-contrast",children:c.quantity??"-"})]}),jsxRuntime.jsxs(ui.Flex,{direction:"column",justify:"between",itemAlign:"start",gap:1,className:"oui-w-full",children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-w-full",children:[jsxRuntime.jsx(ui.Text,{children:m("tpsl.tpTriggerPrice")})," ",u({price:c.tp_trigger_price??"",isOrderPrice:false,isEnable:!!c.tp_trigger_price,colorType:"TP"})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-w-full",children:[jsxRuntime.jsx(ui.Text,{children:m("tpsl.tpOrderPrice")}),u({price:c.tp_order_price??"",isOrderPrice:true,isEnable:!!c.tp_trigger_price,colorType:"TP"})]})]}),jsxRuntime.jsxs(ui.Flex,{direction:"column",justify:"between",itemAlign:"start",gap:1,className:"oui-w-full",children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-w-full",children:[jsxRuntime.jsx(ui.Text,{children:m("tpsl.slTriggerPrice")}),u({price:c.sl_trigger_price??"",isOrderPrice:false,isEnable:!!c.sl_trigger_price,colorType:"SL"})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-w-full",children:[jsxRuntime.jsx(ui.Text,{children:m("tpsl.slOrderPrice")}),u({price:c.sl_order_price??"",isOrderPrice:true,isEnable:!!c.sl_trigger_price,colorType:"SL"})]})]})]})]}):null,jsxRuntime.jsx(ui.Box,{pt:2,children:jsxRuntime.jsxs(ui.Flex,{gap:1,children:[jsxRuntime.jsx(ui.Checkbox,{id:"disabledConfirm",color:"white",checked:!f,onCheckedChange:E=>{T(!E);}}),jsxRuntime.jsx("label",{htmlFor:"disabledConfirm",className:ui.textVariants({size:"xs",intensity:54,className:"oui-ml-1"}),children:m("orderEntry.disableOrderConfirm")})]})})]})},ho=e=>{let{tpPrice:t,slPrice:o}=e,{t:r}=i18n.useTranslation();return t&&o?jsxRuntime.jsx(ui.Badge,{size:"xs",color:"neutral",children:r("common.tpsl")}):t?jsxRuntime.jsx(ui.Badge,{size:"xs",color:"neutral",children:r("tpsl.tp")}):o?jsxRuntime.jsx(ui.Badge,{size:"xs",color:"neutral",children:r("tpsl.sl")}):null};var Mt=e=>{let{position:t,order:o,isEditing:r,positionType:i}=e;if(r&&!o)throw new types.SDKError("order is required when isEditing is true");let n=r?o.symbol:t.symbol,l=hooks.useSymbolsInfo();react.useRef(types.AlgoOrderRootType.TP_SL);let [s]=hooks.useLocalStorage("orderly_order_confirm",true),[d,{submit:O,deleteOrder:c,setValue:m,setValues:f,validate:T,errors:g,isCreateMutating:u,isUpdateMutating:x}]=hooks.useTPSLOrder({symbol:n,position_qty:t.position_qty,average_open_price:t.average_open_price},{defaultOrder:o,positionType:i,tpslEnable:{tp_enable:true,sl_enable:true},isEditing:r}),E=F=>{m("quantity",F);},C=(F,P)=>{m(F,P);},h=(F,P)=>{m(F,P);},v=react.useMemo(()=>Math.abs(Number(t.position_qty)),[t.position_qty]),J=react.useMemo(()=>{let F=o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL?v:o?.quantity,P=0;if((Number(d.quantity)!==F||!r&&d.quantity)&&(P=1),o&&r){let{tp_trigger_price:_r,sl_trigger_price:br}=hooks.utils.findTPSLFromOrder(o),{tp_order_price:gt,sl_order_price:ft}=hooks.utils.findTPSLOrderPriceFromOrder(o);_r!==Number(d.tp_trigger_price)&&typeof typeof d.tp_trigger_price<"u"&&(P=2),br!==Number(d.sl_trigger_price)&&typeof d.sl_trigger_price<"u"&&(P=3),typeof d.tp_order_price<"u"&&gt!==types.OrderType.MARKET&&gt!==Number(d.tp_order_price)&&(P=4),typeof d.sl_order_price<"u"&&ft!==types.OrderType.MARKET&&ft!==Number(d.sl_order_price)&&(P=5);}return P===1&&!d.tp_trigger_price&&!d.sl_trigger_price&&(P=-1),P},[d.tp_trigger_price,d.tp_order_price,d.sl_trigger_price,d.sl_order_price,d.quantity,o,r]),De=react.useMemo(()=>o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL&&Number(d.quantity)<v&&!d.tp_trigger_price&&!d.sl_trigger_price?false:J>0&&!!d.quantity&&!g,[d.quantity,v,J,g]),D=()=>o?.algo_order_id&&o?.symbol?c(o?.algo_order_id,o?.symbol):Promise.reject("order id or symbol is invalid"),xe=async()=>{try{if(await T())return typeof e.onConfirm!="function"||!s?O({accountId:t.account_id}).then(()=>!0).catch(P=>{throw P?.message&&ui.toast.error(P.message),!1}):e.onConfirm(d,{position:t,submit:O,cancel:D})}catch(F){return Promise.reject(F)}};return {isEditing:r,symbolInfo:l[n],maxQty:v,setQuantity:E,orderQuantity:d.quantity,TPSL_OrderEntity:d,setOrderValue:m,setPnL:h,setOrderPrice:C,onSubmit:xe,valid:De,errors:g,status:{isCreateMutating:u,isUpdateMutating:x},position:t,setValues:f}};var Pe=e=>{let{onCancel:t,onComplete:o,close:r,...i}=e,n=Mt(i);return jsxRuntime.jsx(Et,{...n,onCancel:t,onComplete:o,close:r})},Ae="TPSLSheetId",le="TPSLDialogId";ui.registerSimpleSheet(Ae,Pe);ui.registerSimpleDialog(le,Pe,{classNames:{content:"oui-w-[420px]"}});var zo=e=>{let{position:t,order:o,baseDP:r,quoteDP:i,buttonProps:n,isEditing:l}=e,[a]=hooks.useLocalStorage("orderly_order_confirm",true),{t:s}=i18n.useTranslation(),d=l?o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL:void 0;return jsxRuntime.jsx(ui.Box,{onClick:()=>{ui.modal.show(le,{order:o,position:t,baseDP:r,quoteDP:i,positionType:d?types.PositionType.FULL:types.PositionType.PARTIAL,isEditing:l,onConfirm:(c,m)=>{if(!a)return Promise.resolve(true);let f=Math.abs(Number(t.position_qty));if(`${c.tp_trigger_price??""}`.length===0&&`${c.sl_trigger_price??""}`.length===0)return ui.modal.confirm({title:s("orders.cancelOrder"),content:s("tpsl.cancelOrder.description"),onOk:()=>m.cancel()}).then(()=>true,()=>Promise.reject(false));let T=l||!!c&&c.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL&&c.quantity===f;return ui.modal.confirm({title:s(T?"orders.editOrder":"tpsl.confirmOrder"),onOk:async()=>{try{let g=await m.submit({accountId:t.account_id});return g.success?g:(g.message&&ui.toast.error(g.message),!1)}catch(g){return g?.message&&ui.toast.error(g.message),false}},classNames:{body:"!oui-pb-0"},content:jsxRuntime.jsx(H,{isPositionTPSL:d,isEditing:T,symbol:c.symbol,qty:Number(c.quantity),maxQty:f,tpPrice:Number(c.tp_trigger_price),slPrice:Number(c.sl_trigger_price),side:c.side,orderInfo:c,quoteDP:i??2,baseDP:r??2})}).then(()=>true,()=>Promise.reject(false))}});},className:"oui-cursor-pointer",children:e.children||jsxRuntime.jsx(ui.Button,{variant:"outlined",size:"sm",color:"secondary",...n,children:e.label})})};var Ko=e=>{let {position:t,order:o,symbolInfo:r,isEditing:i}=e,{resolve:n,hide:l,updateArgs:a}=ui.useModal(),[s]=hooks.useLocalStorage("orderly_order_confirm",true),{t:d}=i18n.useTranslation(),O=i?o?.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL:void 0,m=()=>{n(),l();},{quote_dp:f,base_dp:T}=r;return jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(Pe,{...e,positionType:e.positionType??(O?types.PositionType.FULL:types.PositionType.PARTIAL),onComplete:m,onConfirm:(g,u)=>{if(!s)return Promise.resolve(true);let x=Math.abs(Number(t.position_qty)),E=i||!!g&&g.algo_type===types.AlgoOrderRootType.POSITIONAL_TP_SL&&g.quantity===x;return ui.modal.confirm({title:d(E?"orders.editOrder":"tpsl.confirmOrder"),bodyClassName:"oui-pb-0 lg:oui-pb-0",onOk:async()=>{try{let C=await u.submit({accountId:t.account_id});return C.success?C:(C.message&&ui.toast.error(C.message),!1)}catch(C){return C?.message&&ui.toast.error(C.message),false}},content:jsxRuntime.jsx(H,{isPositionTPSL:O,isEditing:i,symbol:g.symbol,qty:Number(g.quantity),maxQty:x,tpPrice:Number(g.tp_trigger_price),slPrice:Number(g.sl_trigger_price),side:g.side,quoteDP:f??2,baseDP:T??2,orderInfo:g})}).then(()=>true,C=>(C?.message&&ui.toast.error(C.message),Promise.reject(false)))},onCancel:()=>{l();}})})};var Gt=e=>{let{t}=i18n.useTranslation(),{errors:o,validated:r}=e.metaState,{formattedOrder:i,setValue:n,symbolInfo:l,setValues:a}=e,[s,d]=react.useState({enable:true,order_type:i.tp_order_type??types.OrderType.MARKET,order_price:i.tp_order_price??"",trigger_price:i.tp_trigger_price??"",PnL:i.tp_pnl??"",Offset:i.tp_offset??"","Offset%":i.tp_offset_percentage??"",ROI:i.tp_ROI??""}),[O,c]=react.useState({enable:true,order_type:i.sl_order_type??types.OrderType.MARKET,order_price:i.sl_order_price??"",trigger_price:i.sl_trigger_price??"",PnL:i.sl_pnl??"",Offset:i.sl_offset??"","Offset%":i.sl_offset_percentage??"",ROI:i.sl_ROI??""});return react.useEffect(()=>{d(m=>({...m,enable:i.tp_enable??true,order_type:i.tp_order_type??types.OrderType.MARKET,order_price:i.tp_order_price??"",trigger_price:i.tp_trigger_price??"",PnL:i.tp_pnl??"",Offset:i.tp_offset??"","Offset%":i.tp_offset_percentage??"",ROI:i.tp_ROI??""}));},[i]),react.useEffect(()=>{c(m=>({...m,enable:i.sl_enable??true,order_type:i.sl_order_type??types.OrderType.MARKET,order_price:i.sl_order_price??"",trigger_price:i.sl_trigger_price??"",PnL:i.sl_pnl??"",Offset:i.sl_offset??"","Offset%":i.sl_offset_percentage??"",ROI:i.sl_ROI??""}));},[i]),jsxRuntime.jsxs("div",{className:"oui-rounded-[16px] oui-py-3 oui-flex oui-flex-col oui-justify-between oui-h-full",children:[jsxRuntime.jsx("div",{className:"oui-px-3",children:jsxRuntime.jsxs(ui.Flex,{className:"oui-mb-5 oui-cursor-pointer oui-text-base oui-text-base-contrast-80",gap:1,itemAlign:"center",onClick:e.onClose,children:[jsxRuntime.jsx(Xo,{className:" oui-text-base-contrast-80"}),jsxRuntime.jsx(ui.Text,{children:t("tpsl.advanced.title")})]})}),jsxRuntime.jsxs(ui.ScrollArea,{className:"oui-flex-1",children:[jsxRuntime.jsx("div",{className:"oui-px-3",children:jsxRuntime.jsx(ee,{order:i,baseDP:l.base_dp,quoteDP:l.quote_dp})}),jsxRuntime.jsx(ui.Divider,{className:"oui-my-3"}),jsxRuntime.jsxs("div",{className:"oui-px-3",children:[jsxRuntime.jsxs(ui.Flex,{className:"oui-gap-[6px]",children:[jsxRuntime.jsx(ui.Button,{onClick:()=>{n("side",types.OrderSide.BUY);},size:"sm",fullWidth:true,"data-type":types.OrderSide.BUY,className:ui.cn(i.side===types.OrderSide.BUY?"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80":"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6"),"data-testid":"oui-testid-orderEntry-side-buy-button",children:t("common.buy")}),jsxRuntime.jsx(ui.Button,{onClick:()=>{n("side",types.OrderSide.SELL);},"data-type":types.OrderSide.SELL,fullWidth:true,size:"sm",className:ui.cn(i.side===types.OrderSide.SELL?"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80":"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6"),"data-testid":"oui-testid-orderEntry-side-sell-button",children:t("common.sell")})]}),jsxRuntime.jsxs("div",{className:"oui-py-3",children:[jsxRuntime.jsx(ie,{value:i.position_type??types.PositionType.PARTIAL,onChange:(m,f)=>{if(f===types.PositionType.FULL){a({position_type:types.PositionType.FULL,tp_order_type:types.OrderType.MARKET,tp_order_price:void 0,sl_order_type:types.OrderType.MARKET,sl_order_price:void 0});return}n("position_type",f);}}),i.position_type===types.PositionType.FULL&&jsxRuntime.jsxs(ui.Flex,{justify:"start",itemAlign:"start",gap:2,className:"oui-mt-3 oui-w-full",children:[jsxRuntime.jsx("div",{className:"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-[#D25f00]"}),jsxRuntime.jsx(ui.Text,{className:"oui-text-2xs oui-text-[#D25f00]",children:t("tpsl.positionType.full.tips.market")})]})]}),jsxRuntime.jsxs(ui.Flex,{direction:"column",gap:6,children:[jsxRuntime.jsx(oe,{rootOrderPrice:i.order_price,symbol:l.symbol,type:"tp",values:s,errors:r?o:null,quote_dp:l.quote_dp,hideOrderPrice:i.position_type===types.PositionType.FULL,onChange:(m,f)=>{n(m,f);},positionType:i.position_type??types.PositionType.PARTIAL}),jsxRuntime.jsx(oe,{rootOrderPrice:i.order_price,symbol:l.symbol,type:"sl",values:O,hideOrderPrice:i.position_type===types.PositionType.FULL,errors:r?o:null,quote_dp:l.quote_dp,positionType:i.position_type??types.PositionType.PARTIAL,onChange:(m,f)=>{n(m,f);}})]}),jsxRuntime.jsx(_e,{tp_pnl:i.tp_pnl,sl_pnl:i.sl_pnl,className:"oui-mt-6"})]})]}),jsxRuntime.jsxs(ui.Flex,{className:"oui-mt-6 oui-px-3",gap:2,children:[jsxRuntime.jsx(ui.Button,{size:"md",fullWidth:true,color:"gray",variant:"outlined",className:"oui-text-base-contrast-36",onClick:e.onClose,children:t("common.cancel")}),jsxRuntime.jsx(ui.Button,{size:"md",fullWidth:true,color:"success",className:ui.cn(i.side===types.OrderSide.SELL?"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80":"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80"),onClick:e.onSubmit,children:t("tpsl.advanced.submit")})]})]})},Xo=e=>jsxRuntime.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 14 14",fill:"currentColor",...e,children:jsxRuntime.jsx("path",{d:"M8.03752 2.9294C7.89169 2.95857 7.74527 3.03207 7.65661 3.16624L5.33145 6.66624C5.20137 6.86224 5.20137 7.12648 5.33145 7.32248L7.65661 10.8225C7.83452 11.0902 8.20669 11.1655 8.47385 10.9864C8.74044 10.8079 8.8151 10.434 8.63719 10.1662L6.53019 6.99408L8.63719 3.82249C8.8151 3.55416 8.74044 3.18082 8.47385 3.00232C8.34027 2.91249 8.18335 2.89965 8.03752 2.9294Z"})});var Kt=(e,t)=>{if(e.tp_trigger_price||e.sl_trigger_price){if(t==="tp")return !!e.tp_trigger_price;if(t==="sl")return !!e.sl_trigger_price}return true},jt=e=>{let{order:t,setOrderValue:o,onClose:r}=e,[i,n]=react.useState(null),{formattedOrder:l,setValue:a,setValues:s,helper:d,symbolInfo:O,metaState:c,...m}=hooks.useOrderEntry(t.symbol,{initialOrder:{symbol:t.symbol,order_type:t.order_type,side:t.side,order_price:t.order_price,order_quantity:t.order_quantity,position_type:t.position_type??types.PositionType.PARTIAL,trigger_price:t.trigger_price,tp_enable:Kt(t,"tp"),sl_enable:Kt(t,"sl"),tp_trigger_price:t.tp_trigger_price,sl_trigger_price:t.sl_trigger_price,tp_order_price:t.tp_order_price,sl_order_price:t.sl_order_price,tp_order_type:t.tp_order_type,sl_order_type:t.sl_order_type,sl_pnl:t.sl_pnl,sl_offset:t.sl_offset,sl_offset_percentage:t.sl_offset_percentage,tp_pnl:t.tp_pnl,tp_offset:t.tp_offset,tp_offset_percentage:t.tp_offset_percentage}});return {order:t,formattedOrder:l,symbolInfo:O,setValue:a,setValues:s,onSubmit:()=>{d.validate().then(()=>{e.onSubmit(l);}).catch(T=>{});},onClose:r,metaState:c}};var Yt=e=>{let t=jt({order:e.order,setOrderValue:e.setOrderValue,onSubmit:e.onSubmit,onClose:e.onClose});return jsxRuntime.jsx(Gt,{...t})},ii="TPSLAdvancedSheetId",ni="TPSLAdvancedDialogId";ui.registerSimpleSheet(ii,Yt,{title:()=>i18n.i18n.t("common.settings")});ui.registerSimpleDialog(ni,Yt,{title:()=>i18n.i18n.t("common.settings")});var Jt=e=>{let{position:t}=e,o=t.symbol,r=hooks.useSymbolsInfo()[o],[i]=hooks.useLocalStorage("orderly_order_confirm",true),{isMobile:n}=ui.useScreen(),{t:l}=i18n.useTranslation(),[a,s]=react.useState([]),[d,O]=react.useState([]),[c,{cancelAlgoOrder:m,cancelPostionOrdersByTypes:f,refresh:T}]=hooks.useOrderStream({symbol:t.symbol,status:types.OrderStatus.INCOMPLETE,includes:[types.AlgoOrderRootType.POSITIONAL_TP_SL,types.AlgoOrderRootType.TP_SL],size:500},{keeplive:true}),g=async h=>await m(h.algo_order_id,h.symbol),u=async()=>await f(o,[types.AlgoOrderRootType.TP_SL]),x=({order:h,positionType:v,isEditing:J})=>{let De=n?Ae:le;ui.modal.show(De,{order:h,position:t,positionType:v,isEditing:J,onConfirm:(D,xe)=>{if(!i)return Promise.resolve(true);let F=Math.abs(Number(t.position_qty));return `${D.tp_trigger_price??""}`.length===0&&`${D.sl_trigger_price??""}`.length===0?ui.modal.confirm({title:l("orders.cancelOrder"),content:l("tpsl.cancelOrder.description"),onOk:()=>xe.cancel()}).then(()=>true,()=>Promise.reject(false)):ui.modal.confirm({title:l(J?"orders.editOrder":"tpsl.confirmOrder"),onOk:async()=>{try{let P=await xe.submit({accountId:t.account_id});return P.success?P:(P.message&&ui.toast.error(P.message),!1)}catch(P){return P?.message&&ui.toast.error(P.message),false}},classNames:{body:"!oui-pb-0"},content:jsxRuntime.jsx(H,{isPositionTPSL:v===types.PositionType.FULL,isEditing:J,symbol:D.symbol,qty:Number(D.quantity),maxQty:F,tpPrice:Number(D.tp_trigger_price),slPrice:Number(D.sl_trigger_price),side:D.side,orderInfo:D,quoteDP:r("quote_dp")??2,baseDP:r("base_dp")??2})}).then(()=>true,()=>Promise.reject(false))}});},E=(h,v)=>{x({order:h,positionType:v,isEditing:true});},C=h=>{x({positionType:h,isEditing:false});};return react.useEffect(()=>{if(c){let{fullPositionOrder:h,partialPositionOrders:v}=hooks.findPositionTPSLFromOrders(c,o);s(h?[h]:[]),O(v??[]);}},[c,o]),{symbolInfo:r,position:t,symbol:o,fullPositionOrders:a,partialPositionOrders:d,cancelPostionOrdersByTypes:f,onCancelOrder:g,onCancelAllTPSLOrders:u,editTPSLOrder:E,addTPSLOrder:C}};var er=react.createContext({}),tr=e=>{let t=hooks.useSymbolsInfo()[e.symbol];return jsxRuntime.jsx(er.Provider,{value:{base_dp:t("base_dp"),quote_dp:t("quote_dp"),position:e.position},children:e.children})},$=()=>react.useContext(er);var I=e=>jsxRuntime.jsx(ui.Flex,{direction:"column",justify:"center",itemAlign:"start",className:"oui-text-2xs oui-h-[36px]",children:e.children});var tt=({order:e})=>{let{position:t,base_dp:o,quote_dp:r}=$(),{tp_trigger_price:i,sl_trigger_price:n}=hooks.findTPSLFromOrder(e),l,a,s=new utils.Decimal(e.quantity).eq(0)?t.position_qty:e.quantity;return i&&(l=new utils.Decimal(perp.positions.unrealizedPnL({qty:s,openPrice:t?.average_open_price,markPrice:i})).abs().toNumber()),n&&(a=new utils.Decimal(perp.positions.unrealizedPnL({qty:s,openPrice:t?.average_open_price,markPrice:n})).abs().mul(-1).toNumber()),jsxRuntime.jsxs(ui.Flex,{gap:2,direction:"column",justify:"between",itemAlign:"start",className:"oui-text-2xs",children:[l&&jsxRuntime.jsx(I,{children:jsxRuntime.jsx(ui.Text.numeral,{dp:2,rm:utils.Decimal.ROUND_DOWN,coloring:true,padding:false,children:l})}),a&&jsxRuntime.jsx(I,{children:jsxRuntime.jsx(ui.Text.numeral,{dp:2,rm:utils.Decimal.ROUND_DOWN,coloring:true,padding:false,children:a})})]})};var rt=({order:e})=>{let{quote_dp:t}=$(),{tp_order_price:o,sl_order_price:r}=hooks.findTPSLOrderPriceFromOrder(e),{t:i}=i18n.useTranslation();return jsxRuntime.jsxs(ui.Flex,{gap:2,direction:"column",justify:"between",itemAlign:"start",className:"oui-text-2xs",children:[o&&jsxRuntime.jsx(I,{children:o===types.OrderType.MARKET?jsxRuntime.jsx(ui.Text,{children:i("common.market")}):jsxRuntime.jsx(ui.Text.numeral,{dp:t,rm:utils.Decimal.ROUND_DOWN,padding:false,children:o})}),r&&jsxRuntime.jsx(I,{children:r===types.OrderType.MARKET?jsxRuntime.jsx(ui.Text,{children:i("common.market")}):jsxRuntime.jsx(ui.Text.numeral,{dp:t,rm:utils.Decimal.ROUND_DOWN,padding:false,children:r})})]})};var ot=({order:e})=>{let{position:t,base_dp:o}=$(),{tp_trigger_price:r,sl_trigger_price:i}=hooks.findTPSLFromOrder(e);return jsxRuntime.jsxs(ui.Flex,{direction:"column",justify:"start",itemAlign:"start",className:"oui-h-full oui-text-2xs",children:[jsxRuntime.jsx(I,{children:jsxRuntime.jsx(ui.Text.numeral,{dp:o,rm:utils.Decimal.ROUND_DOWN,padding:false,children:e.quantity===0?t.position_qty:e.quantity})}),r&&i&&jsxRuntime.jsx(I,{children:jsxRuntime.jsx("div",{})})]})};var st=({order:e})=>{let{quote_dp:t}=$(),{tp_trigger_price:o,sl_trigger_price:r}=hooks.findTPSLFromOrder(e),{t:i}=i18n.useTranslation();return jsxRuntime.jsxs(ui.Flex,{gap:1,direction:"column",justify:"between",itemAlign:"start",className:"oui-text-2xs",children:[o&&jsxRuntime.jsx(I,{children:jsxRuntime.jsxs(ui.Flex,{direction:"column",justify:"start",itemAlign:"start",children:[jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast-36",children:i("common.market")}),jsxRuntime.jsx(ui.Text.numeral,{dp:t,rm:utils.Decimal.ROUND_DOWN,padding:false,children:o})]})}),r&&jsxRuntime.jsx(I,{children:jsxRuntime.jsxs(ui.Flex,{direction:"column",justify:"start",itemAlign:"start",children:[jsxRuntime.jsx(ui.Text,{className:"oui-text-base-contrast-36",children:i("common.market")}),jsxRuntime.jsx(ui.Text.numeral,{dp:t,rm:utils.Decimal.ROUND_DOWN,padding:false,children:r})]})})]})};var lt=({order:e})=>{let{tp_trigger_price:t,sl_trigger_price:o}=hooks.findTPSLFromOrder(e),{t:r}=i18n.useTranslation();return jsxRuntime.jsxs(ui.Flex,{direction:"column",justify:"between",itemAlign:"start",className:"oui-text-2xs",children:[t&&jsxRuntime.jsx(I,{children:jsxRuntime.jsx(ui.Text,{className:"oui-text-trade-profit",children:r("tpsl.tp")})}),o&&jsxRuntime.jsx(I,{children:jsxRuntime.jsx(ui.Text,{className:"oui-text-trade-loss",children:r("tpsl.sl")})})]})};var we=e=>{let{t}=i18n.useTranslation(),{isMobile:o}=ui.useScreen(),{onCancelOrder:r}=e;return react.useMemo(()=>{let n=[{title:t("tpsl.tpslDetail.qty"),dataIndex:"quantity",width:70,className:"oui-py-2",render:(a,s)=>jsxRuntime.jsx(ot,{order:s})},{title:t("tpsl.tpslDetail.type"),dataIndex:"type",width:35,className:"oui-pl-1 oui-py-2",render:(a,s)=>jsxRuntime.jsx(lt,{order:s})},{title:t("tpsl.tpslDetail.trigger"),dataIndex:"trigger",width:70,className:"oui-pl-1 oui-py-2",render:(a,s)=>jsxRuntime.jsx(st,{order:s})},{title:t("tpsl.tpslDetail.price"),dataIndex:"price",width:70,className:"oui-py-2",render:(a,s)=>jsxRuntime.jsx(rt,{order:s})},{title:jsxRuntime.jsx(ui.Tooltip,{className:"oui-max-w-[280px] oui-bg-base-8 oui-p-3 oui-text-2xs oui-text-base-contrast",content:t("tpsl.tpslDetail.estPnl.tooltip"),children:jsxRuntime.jsx(ui.Text,{className:"oui-underline oui-decoration-dashed oui-underline-offset-2",children:t("tpsl.tpslDetail.estPnl")})}),dataIndex:"estpnl",width:70,className:"!oui-pr-0 oui-py-2",render:(a,s)=>jsxRuntime.jsx(tt,{order:s})}],l=[{title:t("tpsl.tpslDetail.qty"),dataIndex:"quantity",width:70,className:ui.cn(" oui-py-2 !oui-pl-5"),render:(a,s)=>jsxRuntime.jsx(ot,{order:s})},{title:t("tpsl.tpslDetail.type"),dataIndex:"type",width:35,className:"oui-pl-1 oui-py-2",render:(a,s)=>jsxRuntime.jsx(lt,{order:s})},{title:t("tpsl.tpslDetail.trigger"),dataIndex:"trigger",width:70,className:"oui-pl-1 oui-py-2",render:(a,s)=>jsxRuntime.jsx(st,{order:s})},{title:t("tpsl.tpslDetail.price"),dataIndex:"price",width:70,className:"oui-pl-1 oui-py-2",render:(a,s)=>jsxRuntime.jsx(rt,{order:s})},{title:jsxRuntime.jsx(ui.Tooltip,{className:"oui-max-w-[280px] oui-bg-base-8 oui-p-3 oui-text-2xs oui-text-base-contrast",content:t("tpsl.tpslDetail.estPnl.tooltip"),children:jsxRuntime.jsx(ui.Text,{className:"oui-underline oui-decoration-dashed oui-underline-offset-2",children:t("tpsl.tpslDetail.estPnl")})}),dataIndex:"estpnl",width:70,className:"oui-pl-1 oui-py-2",render:(a,s)=>jsxRuntime.jsx(tt,{order:s})},{title:"",dataIndex:"delete",width:50,className:ui.cn("oui-py-2 !oui-pr-5"),render:(a,s)=>jsxRuntime.jsx(ji,{order:s,onCancelOrder:r})}];return o?n:l},[t,o])};var Ki=e=>{let{size:t=18}=e;return jsxRuntime.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 18 18",fill:"currentColor",...e,children:jsxRuntime.jsx("path",{d:"M5.48081 15.375C5.10681 15.375 4.78731 15.2426 4.52231 14.9777C4.25744 14.7127 4.125 14.3932 4.125 14.0192V4.50004H3.375V3.37505H6.75V2.71167H11.25V3.37505H14.625V4.50004H13.875V14.0192C13.875 14.3981 13.7438 14.7188 13.4813 14.9813C13.2188 15.2438 12.8981 15.375 12.5192 15.375H5.48081ZM12.75 4.50004H5.25V14.0192C5.25 14.0866 5.27162 14.1419 5.31487 14.1852C5.35812 14.2284 5.41344 14.25 5.48081 14.25H12.5192C12.5769 14.25 12.6298 14.226 12.6778 14.1779C12.7259 14.1299 12.75 14.077 12.75 14.0192V4.50004ZM7.053 12.75H8.17781V6.00004H7.053V12.75ZM9.82219 12.75H10.947V6.00004H9.82219V12.75Z"})})},ji=e=>{let[t,o]=react.useState(false);return jsxRuntime.jsx(ui.ThrottledButton,{size:"sm",loading:t,variant:"text",color:"gray",onClick:r=>{r.stopPropagation(),o(true),e.onCancelOrder?.(e.order).then(()=>{},i=>{ui.toast.error(i.message);}).finally(()=>{o(false);});},children:jsxRuntime.jsx(Ki,{className:"oui-text-base-contrast-54 hover:oui-text-base-contrast oui-cursor-pointer"})})};var dt=e=>{let{orders:t}=e,o=we({onCancelOrder:e.onCancelOrder});return jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{columns:o,dataSource:t,className:"oui-bg-transparent oui-text-2xs",bordered:true,classNames:{root:ui.cn(e.className),header:"!oui-bg-base-8",scroll:ui.cn(!t||t.length===0?"!oui-min-h-[170px]":"!oui-min-h-[100px]")},onRow:r=>({className:ui.cn("oui-h-[53px] oui-cursor-svg-edit !oui-border-none !oui-p-0"),onClick:()=>{e.editTPSLOrder(r);}})})};var ut=e=>{let{t}=i18n.useTranslation(),{orders:o}=e,r=we({onCancelOrder:()=>Promise.resolve()}),i=react.useMemo(()=>o.reduce((n,l)=>(n[l.algo_order_id]=true,n),{}),[o]);return jsxRuntime.jsx(uiConnector.AuthGuardDataTable,{columns:r,dataSource:o,expanded:i,bordered:true,getRowCanExpand:()=>true,expandRowRender:n=>jsxRuntime.jsxs(ui.Flex,{gap:2,justify:"end",children:[jsxRuntime.jsx(ui.Button,{variant:"outlined",size:"sm",color:"gray",className:"oui-h-6 oui-text-2xs oui-text-base-contrast-54",onClick:()=>e.editTPSLOrder(n.original),children:t("common.edit")}),jsxRuntime.jsx(nn,{order:n.original,onCancelOrder:e.canCancelOrder})]}),className:"oui-bg-transparent oui-px-2 oui-text-2xs",classNames:{scroll:ui.cn(!o||o.length===0?"!oui-min-h-[170px]":"!oui-min-h-[100px]")},onRow:()=>({className:ui.cn("oui-h-[53px] oui-cursor-svg-edit !oui-border-none !oui-p-0")}),generatedRowKey:n=>n.algo_order_id})},nn=e=>{let[t,o]=react.useState(false),{t:r}=i18n.useTranslation();return jsxRuntime.jsx(ui.ThrottledButton,{className:"oui-h-6 oui-text-2xs oui-text-base-contrast-54",size:"sm",loading:t,variant:"outlined",color:"gray",onClick:i=>{i.stopPropagation(),o(true),e.onCancelOrder?.(e.order).then(()=>{},n=>{ui.toast.error(n.message);}).finally(()=>{o(false);});},children:r("common.delete")})};var fr=e=>{let{isMobile:t}=ui.useScreen(),{position:o,fullPositionOrders:r,partialPositionOrders:i,onCancelOrder:n,onCancelAllTPSLOrders:l,editTPSLOrder:a,addTPSLOrder:s,symbolInfo:d}=e;return jsxRuntime.jsx(ui.Box,{children:jsxRuntime.jsxs(ui.ScrollArea,{className:ui.cn(t&&"oui-h-[calc(100vh-100px)]"),children:[jsxRuntime.jsx(ee,{order:{symbol:o.symbol,order_quantity:o.position_qty.toString(),order_price:o.average_open_price.toString()},baseDP:d("base_dp"),quoteDP:d("quote_dp"),classNames:{root:ui.cn("oui-mb-6 oui-gap-3 oui-px-5"),container:"oui-gap-x-[30px]"}}),jsxRuntime.jsx(cn,{position:o,orders:r,onCancelOrder:n,onCancelAllTPSLOrders:l,editTPSLOrder:a,addTPSLOrder:s}),jsxRuntime.jsx(mn,{position:o,orders:i,onCancelOrder:n,onCancelAllTPSLOrders:l,editTPSLOrder:a,addTPSLOrder:s})]})})},cn=e=>{let[t,o]=react.useState(true),{orders:r}=e,{isMobile:i}=ui.useScreen();return jsxRuntime.jsxs(ui.Box,{className:"oui-mt-6",children:[jsxRuntime.jsxs(ui.Box,{className:ui.cn("oui-flex oui-items-center oui-justify-between oui-px-5"),children:[jsxRuntime.jsx(Pr,{positionType:types.PositionType.FULL,open:t,onOpenChange:o}),r&&r.length===0&&jsxRuntime.jsx(ui.Flex,{gap:2,children:jsxRuntime.jsx(yr,{positionType:types.PositionType.FULL,position:e.position,addTPSLOrder:e.addTPSLOrder})})]}),jsxRuntime.jsx(ui.Box,{className:ui.cn("oui-overflow-hidden oui-transition-[height] oui-duration-150",t?"oui-h-auto":"oui-h-0 oui-pb-4"),children:i?jsxRuntime.jsx(ut,{orders:r,editTPSLOrder:n=>e.editTPSLOrder(n,types.PositionType.FULL),canCancelOrder:e.onCancelOrder}):jsxRuntime.jsx(dt,{orders:r,editTPSLOrder:n=>{e.editTPSLOrder(n,types.PositionType.FULL);},onCancelOrder:e.onCancelOrder})})]})},mn=e=>{let[t,o]=react.useState(true),{orders:r}=e,{isMobile:i}=ui.useScreen();return jsxRuntime.jsxs(ui.Box,{className:"oui-pt-6",children:[jsxRuntime.jsxs(ui.Box,{className:ui.cn("oui-flex oui-items-center oui-justify-between","oui-px-5",i?"oui-flex-col oui-items-start oui-justify-start oui-gap-[11px]":"oui-flex-row oui-items-center oui-justify-between"),children:[jsxRuntime.jsx(Pr,{positionType:types.PositionType.PARTIAL,open:t,onOpenChange:o}),jsxRuntime.jsxs(ui.Flex,{gap:2,children:[jsxRuntime.jsx(yr,{positionType:types.PositionType.PARTIAL,position:e.position,addTPSLOrder:e.addTPSLOrder}),r&&r.length>0&&jsxRuntime.jsx(gn,{canCancelAll:r&&r.length>0,onCancelAllTPSLOrders:e.onCancelAllTPSLOrders})]})]}),jsxRuntime.jsx(ui.Box,{className:ui.cn("oui-overflow-hidden oui-transition-[height] oui-duration-150",t?"oui-h-auto":"oui-h-0 oui-pb-4"),children:i?jsxRuntime.jsx(ut,{orders:r,editTPSLOrder:n=>e.editTPSLOrder(n,types.PositionType.PARTIAL),canCancelOrder:e.onCancelOrder}):jsxRuntime.jsx(dt,{className:"oui-h-[300px]",orders:r,editTPSLOrder:n=>{e.editTPSLOrder(n,types.PositionType.PARTIAL);},onCancelOrder:e.onCancelOrder})})]})},Pr=e=>{let{t}=i18n.useTranslation();return jsxRuntime.jsxs(ui.Flex,{gap:1,itemAlign:"center",justify:"start",className:"oui-text-2xs",children:[jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",justify:"start",gap:1,className:"oui-cursor-pointer",onClick:()=>e.onOpenChange(!e.open),children:[jsxRuntime.jsx(ui.ChevronDownIcon,{size:12,color:"white",className:ui.cn("oui-cursor-pointer oui-transition-transform",e.open&&"oui-rotate-180")}),e.positionType===types.PositionType.FULL?jsxRuntime.jsx(ui.Text,{children:t("tpsl.positionType.full")}):jsxRuntime.jsx(ui.Text,{children:t("tpsl.positionType.partial")})]}),jsxRuntime.jsx(ui.Tooltip,{className:"oui-w-[280px] oui-p-3",content:e.positionType===types.PositionType.FULL?t("tpsl.positionType.full.tips"):t("tpsl.positionType.partial.tips"),children:jsxRuntime.jsx(ui.ExclamationFillIcon,{className:"oui-cursor-pointer oui-text-base-contrast-54",size:12})})]})},yr=e=>{let{t}=i18n.useTranslation();return jsxRuntime.jsx(ui.ThrottledButton,{variant:"outlined",size:"sm",color:"gray",className:"oui-h-6 oui-w-[94px] oui-text-2xs",onClick:()=>{e.addTPSLOrder(e.positionType);},children:t("tpsl.add")})},gn=e=>{let[t,o]=react.useState(false),{t:r}=i18n.useTranslation();return jsxRuntime.jsx(ui.ThrottledButton,{loading:t,variant:"outlined",disabled:!e.canCancelAll,size:"sm",color:"gray",className:"oui-h-6 oui-w-[94px] oui-text-2xs disabled:oui-border-base-contrast-16 disabled:oui-bg-transparent disabled:oui-text-base-contrast-20",onClick:()=>{o(true),e.onCancelAllTPSLOrders().then(()=>{},i=>{ui.toast.error(i.message);}).finally(()=>{o(false);});},children:r("tpsl.cancelAll")})};var xr=e=>{let t=Jt(e);return jsxRuntime.jsx(tr,{symbol:e.position.symbol,position:e.position,children:jsxRuntime.jsx(fr,{...t})})},yn="TPSLDetailDialogId ",Tn="TPSLDetailSheetId";ui.registerSimpleDialog(yn,xr,{classNames:{content:"oui-w-[420px] lg:oui-pt-4 lg:oui-pb-2 !oui-px-0",body:"lg:oui-py-0"}});ui.registerSimpleSheet(Tn,xr,{classNames:{content:"!oui-p-0"}});
13
15
 
14
- exports.PositionTPSLConfirm = M;
15
- exports.PositionTPSLPopover = Pt;
16
- exports.PositionTPSLSheet = St;
17
- exports.TPSLWidget = A;
16
+ exports.PositionTPSLConfirm = H;
17
+ exports.PositionTPSLPopover = zo;
18
+ exports.PositionTPSLSheet = Ko;
19
+ exports.TPSLAdvancedDialogId = ni;
20
+ exports.TPSLAdvancedSheetId = ii;
21
+ exports.TPSLAdvancedWidget = Yt;
22
+ exports.TPSLDetailDialogId = yn;
23
+ exports.TPSLDetailSheetId = Tn;
24
+ exports.TPSLDetailWidget = xr;
25
+ exports.TPSLDialogId = le;
26
+ exports.TPSLPositionTypeWidget = ie;
27
+ exports.TPSLSheetId = Ae;
28
+ exports.TPSLWidget = Pe;
18
29
  //# sourceMappingURL=out.js.map
19
30
  //# sourceMappingURL=index.js.map