@orderly.network/ui-order-entry 2.0.3 → 2.0.4
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 +7 -39
- package/dist/index.d.ts +7 -39
- package/dist/index.js +1 -1
- package/dist/index.mjs +3 -3
- package/package.json +8 -8
package/dist/index.d.mts
CHANGED
|
@@ -5,10 +5,10 @@ import * as _orderly_network_types from '@orderly.network/types';
|
|
|
5
5
|
import { OrderSide, OrderType, OrderLevel, BBOOrderType, OrderlyOrder } from '@orderly.network/types';
|
|
6
6
|
|
|
7
7
|
declare enum InputType {
|
|
8
|
-
PRICE = 0
|
|
9
|
-
TRIGGER_PRICE = 1
|
|
10
|
-
QUANTITY = 2
|
|
11
|
-
TOTAL = 3
|
|
8
|
+
PRICE = 0,// price input focus
|
|
9
|
+
TRIGGER_PRICE = 1,// trigger price input focus
|
|
10
|
+
QUANTITY = 2,// quantity input focus
|
|
11
|
+
TOTAL = 3,// total input focus
|
|
12
12
|
NONE = 4
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -50,8 +50,8 @@ declare const useOrderEntryScript: (inputs: OrderEntryScriptInputs) => {
|
|
|
50
50
|
toggleBBO: () => void;
|
|
51
51
|
priceInputContainerWidth: number;
|
|
52
52
|
submit: (options?: {
|
|
53
|
-
resetOnSuccess?: boolean
|
|
54
|
-
}
|
|
53
|
+
resetOnSuccess?: boolean;
|
|
54
|
+
}) => Promise<{
|
|
55
55
|
success: boolean;
|
|
56
56
|
data: Record<string, any>;
|
|
57
57
|
timestamp: number;
|
|
@@ -318,39 +318,7 @@ declare const useOrderEntryScript: (inputs: OrderEntryScriptInputs) => {
|
|
|
318
318
|
};
|
|
319
319
|
freeCollateral: number;
|
|
320
320
|
metaState: {
|
|
321
|
-
dirty: {
|
|
322
|
-
symbol?: boolean | undefined;
|
|
323
|
-
order_type?: boolean | undefined;
|
|
324
|
-
order_type_ext?: boolean | undefined;
|
|
325
|
-
order_price?: boolean | undefined;
|
|
326
|
-
order_quantity?: boolean | undefined;
|
|
327
|
-
order_amount?: boolean | undefined;
|
|
328
|
-
visible_quantity?: boolean | undefined;
|
|
329
|
-
side?: boolean | undefined;
|
|
330
|
-
reduce_only?: boolean | undefined;
|
|
331
|
-
slippage?: boolean | undefined;
|
|
332
|
-
order_tag?: boolean | undefined;
|
|
333
|
-
level?: boolean | undefined;
|
|
334
|
-
post_only_adjust?: boolean | undefined;
|
|
335
|
-
total?: boolean | undefined;
|
|
336
|
-
quantity?: boolean | undefined;
|
|
337
|
-
type?: boolean | undefined;
|
|
338
|
-
price?: boolean | undefined;
|
|
339
|
-
algo_type?: boolean | undefined;
|
|
340
|
-
trigger_price_type?: boolean | undefined;
|
|
341
|
-
trigger_price?: boolean | undefined;
|
|
342
|
-
child_orders?: boolean | undefined;
|
|
343
|
-
tp_pnl?: boolean | undefined;
|
|
344
|
-
tp_offset?: boolean | undefined;
|
|
345
|
-
tp_offset_percentage?: boolean | undefined;
|
|
346
|
-
tp_ROI?: boolean | undefined;
|
|
347
|
-
tp_trigger_price?: boolean | undefined;
|
|
348
|
-
sl_pnl?: boolean | undefined;
|
|
349
|
-
sl_offset?: boolean | undefined;
|
|
350
|
-
sl_offset_percentage?: boolean | undefined;
|
|
351
|
-
sl_ROI?: boolean | undefined;
|
|
352
|
-
sl_trigger_price?: boolean | undefined;
|
|
353
|
-
};
|
|
321
|
+
dirty: { [K in keyof _orderly_network_types.OrderlyOrder]?: boolean; };
|
|
354
322
|
submitted: boolean;
|
|
355
323
|
validated: boolean;
|
|
356
324
|
errors: {
|
package/dist/index.d.ts
CHANGED
|
@@ -5,10 +5,10 @@ import * as _orderly_network_types from '@orderly.network/types';
|
|
|
5
5
|
import { OrderSide, OrderType, OrderLevel, BBOOrderType, OrderlyOrder } from '@orderly.network/types';
|
|
6
6
|
|
|
7
7
|
declare enum InputType {
|
|
8
|
-
PRICE = 0
|
|
9
|
-
TRIGGER_PRICE = 1
|
|
10
|
-
QUANTITY = 2
|
|
11
|
-
TOTAL = 3
|
|
8
|
+
PRICE = 0,// price input focus
|
|
9
|
+
TRIGGER_PRICE = 1,// trigger price input focus
|
|
10
|
+
QUANTITY = 2,// quantity input focus
|
|
11
|
+
TOTAL = 3,// total input focus
|
|
12
12
|
NONE = 4
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -50,8 +50,8 @@ declare const useOrderEntryScript: (inputs: OrderEntryScriptInputs) => {
|
|
|
50
50
|
toggleBBO: () => void;
|
|
51
51
|
priceInputContainerWidth: number;
|
|
52
52
|
submit: (options?: {
|
|
53
|
-
resetOnSuccess?: boolean
|
|
54
|
-
}
|
|
53
|
+
resetOnSuccess?: boolean;
|
|
54
|
+
}) => Promise<{
|
|
55
55
|
success: boolean;
|
|
56
56
|
data: Record<string, any>;
|
|
57
57
|
timestamp: number;
|
|
@@ -318,39 +318,7 @@ declare const useOrderEntryScript: (inputs: OrderEntryScriptInputs) => {
|
|
|
318
318
|
};
|
|
319
319
|
freeCollateral: number;
|
|
320
320
|
metaState: {
|
|
321
|
-
dirty: {
|
|
322
|
-
symbol?: boolean | undefined;
|
|
323
|
-
order_type?: boolean | undefined;
|
|
324
|
-
order_type_ext?: boolean | undefined;
|
|
325
|
-
order_price?: boolean | undefined;
|
|
326
|
-
order_quantity?: boolean | undefined;
|
|
327
|
-
order_amount?: boolean | undefined;
|
|
328
|
-
visible_quantity?: boolean | undefined;
|
|
329
|
-
side?: boolean | undefined;
|
|
330
|
-
reduce_only?: boolean | undefined;
|
|
331
|
-
slippage?: boolean | undefined;
|
|
332
|
-
order_tag?: boolean | undefined;
|
|
333
|
-
level?: boolean | undefined;
|
|
334
|
-
post_only_adjust?: boolean | undefined;
|
|
335
|
-
total?: boolean | undefined;
|
|
336
|
-
quantity?: boolean | undefined;
|
|
337
|
-
type?: boolean | undefined;
|
|
338
|
-
price?: boolean | undefined;
|
|
339
|
-
algo_type?: boolean | undefined;
|
|
340
|
-
trigger_price_type?: boolean | undefined;
|
|
341
|
-
trigger_price?: boolean | undefined;
|
|
342
|
-
child_orders?: boolean | undefined;
|
|
343
|
-
tp_pnl?: boolean | undefined;
|
|
344
|
-
tp_offset?: boolean | undefined;
|
|
345
|
-
tp_offset_percentage?: boolean | undefined;
|
|
346
|
-
tp_ROI?: boolean | undefined;
|
|
347
|
-
tp_trigger_price?: boolean | undefined;
|
|
348
|
-
sl_pnl?: boolean | undefined;
|
|
349
|
-
sl_offset?: boolean | undefined;
|
|
350
|
-
sl_offset_percentage?: boolean | undefined;
|
|
351
|
-
sl_ROI?: boolean | undefined;
|
|
352
|
-
sl_trigger_price?: boolean | undefined;
|
|
353
|
-
};
|
|
321
|
+
dirty: { [K in keyof _orderly_network_types.OrderlyOrder]?: boolean; };
|
|
354
322
|
submitted: boolean;
|
|
355
323
|
validated: boolean;
|
|
356
324
|
errors: {
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
13
13
|
|
|
14
14
|
var He__default = /*#__PURE__*/_interopDefault(He);
|
|
15
15
|
|
|
16
|
-
var Ve=He.createContext({}),ce=()=>He.useContext(Ve),he=e=>{let{type:t,values:r}=e,[o,i]=hooks.useLocalStorage("TP/SL_Mode","Offset%"),a=He.useMemo(()=>!r.PnL||!e.values.trigger_price?null:jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx("span",{className:"oui-text-xs oui-text-base-contrast-54",children:`Est.${o==="PnL"?"ROI":"PNL"}:`}),o==="PnL"?jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",className:ui.cn("oui-text-xs oui-ml-1",t==="TP"?"oui-text-trade-profit":"oui-text-trade-loss"),children:r.ROI}):jsxRuntime.jsx(ui.Text.numeral,{rule:"price",className:ui.cn("oui-text-xs oui-ml-1",t==="TP"?"oui-text-trade-profit":"oui-text-trade-loss"),children:r.PnL})]}),[o,e.values.PnL,e.values.trigger_price]);return jsxRuntime.jsx(Ve.Provider,{value:{mode:o,setMode:i,tipsEle:a},children:e.children})};var qe=e=>{let{type:t,values:r,quote_dp:o}=e,{mode:i,setMode:a,tipsEle:y}=ce(),[u,s]=He.useState(!1),f=He.useMemo(()=>{switch(i){case"Offset":return `${t.toLowerCase()}_offset`;case"Offset%":return `${t.toLowerCase()}_offset_percentage`;default:return `${t.toLowerCase()}_pnl`}},[i]),T=He.useMemo(()=>r[i],[r,i]),p=He.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"}],[]),_=He.useRef("");return {mode:i,modes:p,formatter:C=>{let{dp:q=2}=C;return {onRenderBefore:(l,w)=>(l=`${l}`,t==="SL"&&i==="PnL"&&(l=l.startsWith("-")?l:"-"+l),l===""||l==="-"?"":i==="Offset%"?`${new utils.Decimal(l.replace(new RegExp(_.current.replace(".","\\.")+"$"),"")).mul(100).todp(2,4).toString()}${_.current}`:(i==="Offset"&&(l=utils.todpIfNeed(l,q)),`${l}`)),onSendBefore:l=>{if(/^\-?0{2,}$/.test(l))return "0";if(i==="Offset%"){if(l!==""){l=utils.todpIfNeed(l,2);let w=l.match(/\.0{0,2}$/);w?_.current=w[0]:_.current="",l=new utils.Decimal(l).div(100).toString(),l=`${l}${_.current}`;}}else l=utils.todpIfNeed(l,q);return l===""||l==="-"?"":l}}},onModeChange:C=>{a(C);},onFocus:()=>{s(!0);},onBlur:()=>{s(!1);},value:T,onValueChange:C=>{e.onChange(f,C);},quote_dp:o,tips:u?y:void 0}};var ze=e=>{let{mode:t,modes:r,onModeChange:o,onValueChange:i,quote:a,quote_dp:y,value:u,type:s,tips:f,onFocus:T,onBlur:p}=e,[_,P]=He.useState(t);He.useEffect(()=>{P(t),R(t==="Offset%"?"%":a);},[t]);let[$,R]=He.useState(t==="Offset%"?"%":a);He.useEffect(()=>{P(u?"":t);},[u]);let A=He.useMemo(()=>`${s.toLowerCase()}_${t.toLowerCase()}`,[]);return jsxRuntime.jsx(ui.Input.tooltip,{prefix:_,size:"md",placeholder:$,id:A,align:"right",value:u,tooltip:f,tooltipProps:{content:{side:e.type==="TP"?"top":"bottom"}},"data-testid":e.testIds?.input,autoComplete:"off",onValueChange:i,formatters:[e.formatter({dp:y,mode:t,type:s}),ui.inputFormatter.currencyFormatter],classNames:{root:s==="TP"?"oui-text-trade-profit":"oui-text-trade-loss",additional:"oui-text-base-contrast-54",input:"oui-text-inherit"},onFocus:()=>{P(""),R(""),T();},onBlur:()=>{P(u?"":t),R(t==="Offset%"?"%":a),p();},suffix:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t==="Offset%"&&!!u&&jsxRuntime.jsx(ui.Text,{size:"2xs",color:"inherit",className:"oui-ml-[2px]",children:"%"}),jsxRuntime.jsx(At,{mode:t,modes:r,onModeChange:C=>o(C.value),testId:e.testIds?.dropDown})]})})},At=e=>jsxRuntime.jsx(ui.SimpleDropdownMenu,{currentValue:e.mode,menu:e.modes,align:"end",size:"xs",className:"oui-min-w-[80px]",onCloseAutoFocus:t=>t.preventDefault(),onSelect:t=>e.onModeChange(t),children:jsxRuntime.jsx("button",{className:"oui-p-2","data-testid":e.testId,children:jsxRuntime.jsx(ui.CaretDownIcon,{size:12,color:"white"})})});var Ye=e=>{let{testIds:t,quote:r,...o}=e,i=qe(o);return jsxRuntime.jsx(ze,{...i,testIds:t,quote:r,type:e.type})};var ne=He.createContext({}),Ke=ne.Provider;var $e=e=>{let t=He__default.default.useRef(null);return He.useEffect(()=>{e.orderType!==types.OrderType.LIMIT&&e.orderType!==types.OrderType.MARKET&&e.onSwitchChanged(!1);},[e.orderType]),e.orderType!==types.OrderType.LIMIT&&e.orderType!==types.OrderType.MARKET||e.isReduceOnly?null:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",gapX:1,children:[jsxRuntime.jsx(ui.Switch,{id:"order_entry_tpsl",className:"oui-h-[14px]",checked:e.switchState,disabled:e.orderType!==types.OrderType.LIMIT&&e.orderType!==types.OrderType.MARKET||e.isReduceOnly,onCheckedChange:r=>{e.onSwitchChanged(r);}}),jsxRuntime.jsx("label",{htmlFor:"order_entry_tpsl",className:"oui-text-xs",children:"TP/SL"}),jsxRuntime.jsx(ui.ExclamationFillIcon,{color:"white",size:14,opacity:1,className:"oui-text-white/[.36] hover:oui-text-white/80 oui-cursor-pointer",onClick:()=>{ui.modal.dialog({title:"Tips",size:"xs",content:jsxRuntime.jsx(ui.Text,{intensity:54,children:"TP/SL triggers at the specified mark price and executes as a market order. By default, it applies to the entire position. Adjust settings in open positions for partial TP/SL."})});}})]}),jsxRuntime.jsx("div",{className:ui.cn("oui-max-h-0 oui-overflow-hidden oui-transition-all",e.switchState&&"oui-max-h-[100px]"),onTransitionEnd:()=>{t.current?.style.setProperty("opacity",e.switchState?"1":"0");},children:jsxRuntime.jsx(je,{ref:t,onChange:e.onChange,values:e.values,errors:e.errors,quote_dp:e.quote_dp})})]})},je=He__default.default.forwardRef((e,t)=>jsxRuntime.jsxs("div",{ref:t,className:"oui-transition-all oui-pt-2 oui-pb-2 oui-px-[1px] oui-space-y-1",children:[jsxRuntime.jsx(he,{values:e.values.tp,type:"TP",children:jsxRuntime.jsx(Ge,{type:"TP",error:e.errors?e.errors.tp_trigger_price?.message:"",onChange:e.onChange,values:e.values.tp,quote_dp:e.quote_dp,testIds:{first:"oui-testid-orderEntry-tpsl-tpPrice-input",second:"oui-testid-orderEntry-tpsl-tpPnl-input",dropDown:"oui-testid-orderEntry-tpsl-tp-dropDown-trigger-button"}})}),jsxRuntime.jsx(he,{values:e.values.sl,type:"SL",children:jsxRuntime.jsx(Ge,{type:"SL",error:e.errors?e.errors.sl_trigger_price?.message:"",onChange:e.onChange,values:e.values.sl,quote_dp:e.quote_dp,testIds:{first:"oui-testid-orderEntry-tpsl-slPrice-input",second:"oui-testid-orderEntry-tpsl-slPnl-input",dropDown:"oui-testid-orderEntry-tpsl-sl-dropDown-trigger-button"}})})]}));je.displayName="TPSLInputForm";var Xt=e=>{let {errorMsgVisible:t}=He.useContext(ne),{tipsEle:r}=ce(),[o,i]=He.useState(`${e.type} Price`),[a,y]=He.useState("USDC"),[u,s]=He.useState(!1),f=He.useMemo(()=>e.error&&t?e.error:u?r:null,[e.error,t,u,r]);e.type==="SL"?"sl_trigger_price":"tp_trigger_price";return He.useEffect(()=>{i(e.values.trigger_price?e.type:`${e.type} Price`);},[e.values.trigger_price]),jsxRuntime.jsx(ui.Input.tooltip,{"data-testid":e.testId,prefix:o,size:"md",placeholder:a,align:"right",onFocus:()=>{i(e.type),y(""),s(!0);},onBlur:()=>{i(e.values.trigger_price?e.type:`${e.type} Price`),y("USDC"),s(!1);},tooltip:f,tooltipProps:{content:{side:e.type==="TP"?"top":"bottom"}},color:e.error?"danger":void 0,autoComplete:"off",value:e.values.trigger_price,classNames:{additional:"oui-text-base-contrast-54",root:"oui-pr-2 md:oui-pr-3",prefix:"oui-pr-1 md:oui-pr-2"},onValueChange:e.onChange,formatters:[ui.inputFormatter.numberFormatter,ui.inputFormatter.dpFormatter(e.quote_dp??2),ui.inputFormatter.currencyFormatter]})},Ge=e=>{let t=e.type==="SL"?"sl_trigger_price":"tp_trigger_price";return jsxRuntime.jsxs(ui.Grid,{cols:2,gapX:1,children:[jsxRuntime.jsx(Xt,{testId:e.testIds?.first,type:e.type,error:e.error,values:e.values??"",onChange:r=>{e.onChange(t,r);},quote_dp:e.quote_dp}),jsxRuntime.jsx(Ye,{testIds:{input:e.testIds?.second,dropDown:e.testIds?.dropDown},onChange:e.onChange,quote:"USDC",quote_dp:e.quote_dp,type:e.type,values:{PnL:e.values.PnL,Offset:e.values.Offset,"Offset%":e.values["Offset%"],ROI:e.values.ROI}})]})};var H={[types.BBOOrderType.COUNTERPARTY1]:"Counterparty 1",[types.BBOOrderType.COUNTERPARTY5]:"Counterparty 5",[types.BBOOrderType.QUEUE1]:"Queue 1",[types.BBOOrderType.QUEUE5]:"Queue 5"};function pe(e){let{order_type:t,order_type_ext:r}=e,o=[types.OrderType.ASK,types.OrderType.BID].includes(r);return t?t===types.OrderType.LIMIT&&o:o}function Xe(e,t){if([types.BBOOrderType.COUNTERPARTY1,types.BBOOrderType.COUNTERPARTY5].includes(e))return t===types.OrderSide.BUY?types.OrderType.ASK:types.OrderType.BID;if([types.BBOOrderType.QUEUE1,types.BBOOrderType.QUEUE5].includes(e))return t===types.OrderSide.BUY?types.OrderType.BID:types.OrderType.ASK}function Ze(e){if([types.BBOOrderType.COUNTERPARTY1,types.BBOOrderType.QUEUE1].includes(e))return types.OrderLevel.ONE;if([types.BBOOrderType.COUNTERPARTY5,types.BBOOrderType.QUEUE5].includes(e))return types.OrderLevel.FIVE}function Je(e){let{type:t,side:r,level:o}=e;if(t===types.OrderType.ASK){if(o===types.OrderLevel.ONE)return r===types.OrderSide.BUY?types.BBOOrderType.COUNTERPARTY1:types.BBOOrderType.QUEUE1;if(o===types.OrderLevel.FIVE)return r===types.OrderSide.BUY?types.BBOOrderType.COUNTERPARTY5:types.BBOOrderType.QUEUE5}if(t===types.OrderType.BID){if(o===types.OrderLevel.ONE)return r===types.OrderSide.BUY?types.BBOOrderType.QUEUE1:types.BBOOrderType.COUNTERPARTY1;if(o===types.OrderLevel.FIVE)return r===types.OrderSide.BUY?types.BBOOrderType.QUEUE5:types.BBOOrderType.COUNTERPARTY5}}var Le=e=>{let{baseDP:t,quoteDP:r,order:o,onConfirm:i,onCancel:a}=e,{side:y,order_type:u,order_type_ext:s,level:f}=o,[T,p]=hooks.useLocalStorage("orderly_order_confirm",!0),_=()=>{if(u===types.OrderType.MARKET||u===types.OrderType.STOP_MARKET)return jsxRuntime.jsx(ui.Text,{intensity:80,children:"Market"});if(pe({order_type:u,order_type_ext:s})){let P=Je({type:s,side:y,level:f});return jsxRuntime.jsx(ui.Text,{intensity:80,children:H[P]})}return jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:!1,children:o.order_price})};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",showIcon:!0,children:o.symbol}),jsxRuntime.jsxs(ui.Flex,{justify:"end",gapX:1,children:[jsxRuntime.jsx(ir,{type:u}),y===types.OrderSide.BUY?jsxRuntime.jsx(ui.Badge,{color:"buy",size:"sm",children:"Buy"}):jsxRuntime.jsx(ui.Badge,{color:"sell",size:"sm",children:"Sell"})]})]}),jsxRuntime.jsx(ui.Divider,{className:"oui-my-4"}),jsxRuntime.jsxs("div",{className:ui.textVariants({size:"sm",intensity:54,className:"oui-space-y-1"}),children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"Qty."}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",dp:t,padding:!1,className:"oui-text-base-contrast",children:o.order_quantity})]}),o.trigger_price?jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"Trigger"}),jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:!1,children:o.trigger_price})]}):null,jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"Price"}),_()]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"Notional"}),jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",dp:r,padding:!1,className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",children:o.total})]})]}),o.tp_trigger_price||o.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"}),children:[o.tp_trigger_price&&jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"TP Price (Mark)"}),jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",coloring:!0,dp:r,padding:!1,unitClassName:"oui-text-base-contrast-36 oui-ml-1",children:o.tp_trigger_price})]}),o.sl_trigger_price&&jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"SL Price (Mark)"}),jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",coloring:!0,className:"oui-text-trade-loss",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:!1,children:o.sl_trigger_price})]})]})]}):null,jsxRuntime.jsxs(ui.Flex,{gapX:1,pt:4,pb:5,children:[jsxRuntime.jsx(ui.Checkbox,{id:"orderConfirm",color:"white",onCheckedChange:P=>{p(!P);}}),jsxRuntime.jsx("label",{htmlFor:"orderConfirm",className:ui.textVariants({size:"xs",intensity:54}),children:"Disable order confirmation"})]}),o.tp_trigger_price||o.sl_trigger_price?jsxRuntime.jsx(ui.Box,{py:3,px:3,className:"oui-text-center",children:jsxRuntime.jsx(ui.Text,{color:"warning",size:"xs",children:"TP/SL triggers at the specified mark price and executes as a market order."})}):null,jsxRuntime.jsxs(ui.Grid,{cols:2,gapX:3,children:[jsxRuntime.jsx(ui.Button,{color:"secondary",size:"md",onClick:()=>a(),children:"Cancel"}),jsxRuntime.jsx(ui.Button,{size:"md",onClick:()=>i(),children:"Confirm"})]})]})};Le.displayName="OrderConfirmDialog";var ir=e=>{let t=He.useMemo(()=>{switch(e.type){case types.OrderType.LIMIT:return "Limit";case types.OrderType.MARKET:return "Market";case types.OrderType.STOP_LIMIT:return "Stop Limit";case types.OrderType.STOP_MARKET:return "Stop Market";default:return ""}},[e.type]);return jsxRuntime.jsx(ui.Badge,{color:"neutral",size:"sm",children:t})},ar=e=>{let{close:t,resolve:r,reject:o,...i}=e;return jsxRuntime.jsx(Le,{...i,onCancel:t,onConfirm:()=>{r(),t();}})},Se="orderConfirm";ui.registerSimpleDialog(Se,ar,{size:"sm",title:"Order confirm"});var ot=e=>{let{pinned:t,orderTypeExtra:r}=e,o=i=>a=>{e.onValueChange&&e.onValueChange("order_type_ext",a?i:"");};return He.useEffect(()=>{e.onValueChange?.("visible_quantity",e.hidden?0:1);},[e.hidden]),jsxRuntime.jsxs("div",{className:"oui-text-base-contrast-54",children:[jsxRuntime.jsxs(ui.Flex,{justify:t?"start":"between",mb:3,width:t?"unset":"100%",className:"oui-gap-x-2 md:oui-gap-x-3",children:[jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-postOnly-checkBox",id:"toggle_order_post_only",className:"oui-peer",color:"white",variant:"radio",disabled:!e.showExtra,checked:r===types.OrderType.POST_ONLY,onCheckedChange:o(types.OrderType.POST_ONLY)}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_post_only",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"Post only"})]}),jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-ioc-checkBox",id:"toggle_order_iov",color:"white",className:"oui-peer",variant:"radio",checked:r===types.OrderType.IOC,onCheckedChange:o(types.OrderType.IOC),disabled:!e.showExtra}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_iov",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"IOC"})]}),jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-fox-checkBox",id:"toggle_order_fok",color:"white",variant:"radio",className:"oui-peer",checked:r===types.OrderType.FOK,onCheckedChange:o(types.OrderType.FOK),disabled:!e.showExtra}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_fok",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"FOK"})]})]}),jsxRuntime.jsxs(ui.Flex,{gapX:6,children:[jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-orderConfirm-checkBox",id:"toggle_order_confirm",color:"white",checked:e.needConfirm,onCheckedChange:i=>{e.setNeedConfirm(!!i);}}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_confirm",className:"oui-text-2xs oui-ml-1",children:"Order confirm"})]}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-hidden-checkBox",id:"toggle_order_hidden",color:"white",checked:e.hidden,onCheckedChange:i=>{e.setHidden(i);}}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_hidden",className:"oui-text-2xs oui-ml-1",children:"Hidden"})]})]}),!t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Divider,{className:"oui-my-3"}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Switch,{"data-testid":"oui-testid-orderEntry-additional-keepVisible-switch",id:"toggle_order_keep_visible",onCheckedChange:i=>{e.setPinned(i);}}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_keep_visible",className:"oui-text-2xs oui-ml-1",children:"Keep visible"})]})]})]})};var nt=()=>({});var fe=e=>{let t=nt();return jsxRuntime.jsx(ot,{...t,...e})};var Re=e=>{let{side:t,formattedOrder:r,setOrderValue:o,setOrderValues:i,symbolInfo:a,maxQty:y,freeCollateral:u,helper:s,submit:f,metaState:T,bboStatus:p,bboType:_,onBBOChange:P,toggleBBO:$}=e,{errors:R,validated:A}=T,[C,q]=He.useState(!1),[l,w]=hooks.useLocalStorage("orderly_order_confirm",!0),[D,K]=hooks.useLocalStorage("orderly-order-additional-pinned",!0),[j,le]=hooks.useLocalStorage("orderly-order-hidden",!1),Te=He.useMemo(()=>t===types.OrderSide.BUY?"Buy / Long":"Sell / Short",[t]);He.useEffect(()=>{A&&q(!0);},[A]),He.useEffect(()=>{let c=G=>{G.target.closest("#order-entry-submit-button")||q(de=>de&&!1);};return C?document.addEventListener("click",c):document.removeEventListener("click",c),()=>{document.removeEventListener("click",c);}},[C]);let _e=()=>{s.validate().then(c=>l?ui.modal.show(Se,{order:r,quote:a.quote,base:a.base,quoteDP:a.quote_dp,baseDP:a.base_dp}):!0,c=>{if(q(!0),typeof c=="object"&&(c.total!=null||c.order_quantity!=null||c.order_price!=null||c.trigger_price!=null))return Promise.reject()}).then(()=>f().then(c=>{c.success||ui.toast.error(c.message);})).catch(c=>{c!=="cancel"&&typeof c=="object"&&c.message&&ui.toast.error(c.message);});};return jsxRuntime.jsx(Ke,{value:{errorMsgVisible:C},children:jsxRuntime.jsxs("div",{className:"oui-space-y-2 xl:oui-space-y-3 oui-text-base-contrast-54",ref:e.containerRef,children:[jsxRuntime.jsxs(ui.Flex,{gapX:2,className:"oui-flex-col lg:oui-flex-row oui-gap-y-3",children:[jsxRuntime.jsxs("div",{className:"oui-grid oui-grid-cols-2 oui-w-full oui-flex-1 oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]",children:[jsxRuntime.jsx(ui.Button,{onClick:()=>{e.setOrderValue("side",types.OrderSide.BUY);},size:"md",fullWidth:!0,"data-type":types.OrderSide.BUY,className:ui.cn(t===types.OrderSide.BUY&&e.canTrade?"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80":"oui-bg-base-7 hover:oui-bg-base-6 active:oui-bg-base-6 oui-text-base-contrast-36"),"data-testid":"oui-testid-orderEntry-side-buy-button",children:"Buy"}),jsxRuntime.jsx(ui.Button,{onClick:()=>{e.setOrderValue("side",types.OrderSide.SELL);},"data-type":types.OrderSide.SELL,fullWidth:!0,size:"md",className:ui.cn(t===types.OrderSide.SELL&&e.canTrade?"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80":"oui-bg-base-7 hover:oui-bg-base-6 active:oui-bg-base-6 oui-text-base-contrast-36"),"data-testid":"oui-testid-orderEntry-side-sell-button",children:"Sell"})]}),jsxRuntime.jsx("div",{className:"oui-w-full lg:oui-flex-1",children:jsxRuntime.jsx(Nr,{type:r.order_type,side:t,canTrade:e.canTrade,onChange:c=>{o("order_type",c);}})})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:"Available"}),jsxRuntime.jsx(ui.Text.numeral,{unit:a.quote,size:"2xs",className:"oui-text-base-contrast-80",unitClassName:"oui-ml-1 oui-text-base-contrast-54",dp:2,padding:!1,children:e.canTrade?u:0})]}),jsxRuntime.jsx(Ir,{type:e.type,symbolInfo:a,values:{quantity:r.order_quantity,price:r.order_price,trigger_price:r.trigger_price,total:r.total,level:r.level,side:r.side,order_type_ext:r.order_type_ext},errors:A?R:null,onChange:(c,G)=>{e.setOrderValue(c,G);},onValuesChange:e.setOrderValues,refs:e.refs,onBlur:e.onBlur,onFocus:e.onFocus,bbo:{bboStatus:p,bboType:_,onBBOChange:P,toggleBBO:$},priceInputContainerWidth:e.priceInputContainerWidth}),jsxRuntime.jsx(Sr,{canTrade:e.canTrade,maxQty:y,currentQtyPercentage:e.currentQtyPercentage,value:r.order_quantity?Number(r.order_quantity):0,tick:a.base_tick,dp:a.base_dp,setMaxQty:e.setMaxQty,onValueChange:c=>{o("order_quantity",c);},side:e.side}),jsxRuntime.jsx(uiConnector.AuthGuard,{buttonProps:{fullWidth:!0},children:jsxRuntime.jsx(ui.ThrottledButton,{fullWidth:!0,id:"order-entry-submit-button","data-type":types.OrderSide.BUY,className:ui.cn(t===types.OrderSide.BUY?"orderly-order-entry-submit-button-buy oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80":"orderly-order-entry-submit-button-sell oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80"),onClick:()=>{_e();},loading:e.isMutating,children:Te})}),jsxRuntime.jsx(Br,{canTrade:e.canTrade,quote:a.quote,estLiqPrice:e.estLiqPrice,estLeverage:e.estLeverage,currentLeverage:e.currentLeverage}),jsxRuntime.jsx(ui.Divider,{className:"oui-w-full"}),jsxRuntime.jsx($e,{quote_dp:e.symbolInfo.quote_dp,switchState:e.tpslSwitch,onSwitchChanged:e.setTpslSwitch,orderType:r.order_type,errors:A?R:null,isReduceOnly:r.reduce_only,values:{tp:{trigger_price:r.tp_trigger_price??"",PnL:r.tp_pnl??"",Offset:r.tp_offset??"","Offset%":r.tp_offset_percentage??"",ROI:r.tp_ROI??""},sl:{trigger_price:r.sl_trigger_price??"",PnL:r.sl_pnl??"",Offset:r.sl_offset??"","Offset%":r.sl_offset_percentage??"",ROI:r.sl_ROI??""}},onChange:(c,G)=>{e.setOrderValue(c,G);}}),jsxRuntime.jsxs(ui.Flex,{justify:"between",itemAlign:"center",className:"!oui-mt-[0px] xl:!oui-mt-3",children:[jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",gapX:1,children:[jsxRuntime.jsx(ui.Switch,{"data-testid":"oui-testid-orderEntry-reduceOnly-switch",className:"oui-h-[14px]",id:"reduceOnly",checked:e.formattedOrder.reduce_only,onCheckedChange:c=>{e.setOrderValue("reduce_only",c);}}),jsxRuntime.jsx("label",{htmlFor:"reduceOnly",className:"oui-text-xs",children:"Reduce only"})]}),!D&&jsxRuntime.jsx(Rr,{pinned:D,setPinned:K,needConfirm:l,setNeedConfirm:w,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===types.OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:le})]}),D&&jsxRuntime.jsxs(ui.Box,{p:2,r:"md",intensity:700,position:"relative",children:[jsxRuntime.jsx(fe,{pinned:D,setPinned:K,needConfirm:l,setNeedConfirm:w,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===types.OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:le}),jsxRuntime.jsx(Er,{onClick:()=>{K(!1);},className:"oui-absolute oui-top-2 oui-right-2 oui-group","data-testid":"oui-testid-orderEntry-pinned-button"})]})]})})},lt="M10.007 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.852-2.523 1.233.361 1.95.015 2.961-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103 5.35 5.35 0 0 0-2.104-1.312c-.448-.15-.808-.208-1.042-.208",Er=e=>{let[t,r]=He.useState(lt);return jsxRuntime.jsx("button",{...e,children:jsxRuntime.jsx("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",onMouseEnter:()=>{r('M10.008 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.15-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.107.507.508.94 1.13 1.119 1.945-.636.61-1.026.658-1.662.323a.67.67 0 0 0-.779.117c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.292-.076 1.773-.48 2.206-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.515 2.226-.514 1.742.001 2.668-.448 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.686-.29-1.047.321-1.67"');},onMouseLeave:()=>{r(lt);},className:"oui-text-primary-darken ",children:jsxRuntime.jsx("path",{d:t})})})},Ir=e=>{let{type:t,symbolInfo:r,errors:o,values:i,onFocus:a,onBlur:y,bbo:u}=e,s=p=>o&&o[p]?o[p].message:"",f=u.bboStatus==="on",T=t===types.OrderType.LIMIT?jsxRuntime.jsxs(ui.Flex,{direction:"column",itemAlign:"end",className:"oui-text-2xs",children:[r.quote,jsxRuntime.jsx(ui.Flex,{height:20,width:48,justify:"center",itemAlign:"center",r:"base",className:ui.cn("oui-border oui-cursor-pointer oui-mt-[2px] oui-select-none",u.bboStatus==="on"?"oui-border-primary":"oui-border-line-12",u.bboStatus==="disabled"&&"oui-cursor-not-allowed"),onClick:()=>{u.bboStatus==="disabled"?ui.modal.dialog({title:"Tips",size:"xs",content:jsxRuntime.jsx(ui.Text,{intensity:54,children:"BBO is not supported when TP/SL, Post-Only, IOC, or FOK is selected."})}):u.toggleBBO();},children:jsxRuntime.jsx(ui.Text,{className:ui.cn(u.bboStatus==="on"&&"oui-text-primary",u.bboStatus==="off"&&"oui-text-base-contrast-54",u.bboStatus==="disabled"&&"oui-text-base-contrast-20"),children:"BBO"})})]}):r.quote;return jsxRuntime.jsxs("div",{className:"oui-space-y-1",children:[t===types.OrderType.STOP_LIMIT||t===types.OrderType.STOP_MARKET?jsxRuntime.jsx("div",{className:"oui-group",children:jsxRuntime.jsx(ae,{label:"Trigger",suffix:r.quote,error:s("trigger_price"),id:"trigger",ref:e.refs.triggerPriceInputRef,value:i.trigger_price,onChange:p=>{e.onChange("trigger_price",p);},formatters:[ui.inputFormatter.dpFormatter(r.quote_dp)],onFocus:a(1),onBlur:y(1)})}):null,t===types.OrderType.LIMIT||t===types.OrderType.STOP_LIMIT?jsxRuntime.jsxs("div",{ref:e.refs.priceInputContainerRef,className:"oui-relative oui-group oui-w-full",children:[jsxRuntime.jsx(ae,{label:"Price",suffix:T,id:"price",value:i.price,error:s("order_price"),ref:e.refs.priceInputRef,onChange:p=>{e.onChange("order_price",p);},formatters:[ui.inputFormatter.dpFormatter(r.quote_dp)],onFocus:a(0),onBlur:y(0),readonly:f,classNames:{root:ui.cn(f&&"focus-within:oui-outline-transparent "),input:ui.cn(f&&"oui-cursor-auto")}}),u.bboStatus==="on"&&jsxRuntime.jsx("div",{className:ui.cn("oui-absolute oui-left-0 oui-bottom-1"),children:jsxRuntime.jsx(wr,{value:u.bboType,onChange:u.onBBOChange,contentStyle:{width:e.priceInputContainerWidth}})})]}):null,jsxRuntime.jsxs(ui.Grid,{cols:2,className:"oui-space-x-1 oui-group",children:[jsxRuntime.jsx(ae,{label:"Qty",suffix:r.base,id:"order_quantity_input",name:"order_quantity_input",className:"!oui-rounded-br !oui-rounded-tr",value:i.quantity,error:s("order_quantity"),onChange:p=>{e.onChange("order_quantity",p);},formatters:[ui.inputFormatter.dpFormatter(r.base_dp)],onFocus:a(2),onBlur:y(2)}),jsxRuntime.jsx(ae,{label:"Total\u2248",suffix:r.quote,id:"total",className:"!oui-rounded-bl !oui-rounded-tl",value:i.total,error:s("total"),onChange:p=>{e.onChange("total",p);},onFocus:a(3),onBlur:y(3),formatters:[ui.inputFormatter.dpFormatter(r.quote_dp)]})]})]})},ae=He.forwardRef((e,t)=>{let{errorMsgVisible:r}=He.useContext(ne),[o,i]=He.useState("0");return jsxRuntime.jsx(ui.Input.tooltip,{ref:t,tooltip:r?e.error:void 0,autoComplete:"off",autoFocus:e.autoFocus,size:"lg",placeholder:e.readonly?"":o,id:e.id,name:e.name,color:e.error?"danger":void 0,prefix:jsxRuntime.jsx(Lr,{id:e.id,children:e.label}),suffix:e.suffix,value:e.readonly?"":e.value||"",onValueChange:e.onChange,onFocus:a=>{i(""),e.onFocus?.(a);},onBlur:a=>{i("0"),e.onBlur?.(a);},formatters:[...e.formatters??[],ui.inputFormatter.numberFormatter,ui.inputFormatter.currencyFormatter,ui.inputFormatter.decimalPointFormatter],classNames:{root:ui.cn("orderly-order-entry oui-relative oui-pt-8 oui-h-[54px] oui-px-2 oui-py-1 oui-pr-2 oui-border oui-border-solid oui-border-line oui-rounded group-first:oui-rounded-t-xl group-last:oui-rounded-b-xl",e.className,e.classNames?.root),input:ui.cn("oui-mt-5 oui-mb-1 oui-h-5",e?.classNames?.input),prefix:ui.cn("oui-absolute oui-left-2 oui-top-[7px] oui-text-base-contrast-36",e.classNames?.prefix),suffix:ui.cn("oui-absolute oui-right-0 oui-top-0 oui-text-base-contrast-36 oui-text-2xs oui-justify-start oui-py-2",e.classNames?.suffix)},readOnly:e.readonly})});ae.displayName="CustomInput";var Lr=e=>jsxRuntime.jsx("label",{htmlFor:e.id,className:"oui-absolute oui-left-2 oui-top-[7px] oui-text-base-contrast-36 oui-text-2xs",children:e.children}),Sr=e=>{let{canTrade:t}=e,r=He.useMemo(()=>t?e.side===types.OrderSide.BUY?"buy":"sell":void 0,[e.side,t]),o=He.useMemo(()=>e.side===types.OrderSide.BUY?"Max buy":"Max sell",[e.side]);return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(ui.Slider.single,{disabled:e.maxQty===0||!t,value:e.value,color:r,markCount:4,showTip:!0,max:e.maxQty,step:e.tick,onValueChange:e.onValueChange}),jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-pt-1 xl:oui-pt-2",children:[jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",size:"2xs",color:r,dp:2,padding:!1,children:t?e.currentQtyPercentage:0}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx("button",{className:ui.textVariants({size:"2xs",className:"oui-mr-1"}),onClick:()=>e.setMaxQty(),"data-testid":"oui-testid-orderEntry-maxQty-value-button",children:o}),jsxRuntime.jsx(ui.Text.numeral,{size:"2xs",color:r,dp:e.dp,padding:!1,"data-testid":"oui-testid-orderEntry-maxQty-value",children:t?e.maxQty:0})]})]})]})},Nr=e=>{let t=[{label:"Limit order",value:types.OrderType.LIMIT},{label:"Market order",value:types.OrderType.MARKET},{label:"Stop limit",value:types.OrderType.STOP_LIMIT},{label:"Stop market",value:types.OrderType.STOP_MARKET}];return jsxRuntime.jsx(ui.Select.options,{testid:"oui-testid-orderEntry-orderType-button",currentValue:e.type,value:e.type,options:t,onValueChange:e.onChange,contentProps:{className:"oui-bg-base-8 oui-w-full"},valueFormatter:(r,o)=>{let i=t.find(a=>a.value===r);return i?jsxRuntime.jsx(ui.Text,{size:"xs",color:e.canTrade?e.side===types.OrderSide.BUY?"buy":"sell":void 0,children:i?.label.replace(" order","")}):jsxRuntime.jsx(ui.Text,{size:"xs",children:o.placeholder})},size:"md"})};function Br(e){let{canTrade:t}=e;return jsxRuntime.jsxs("div",{className:"oui-space-y-[2px] xl:oui-space-y-1",children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:"Est. Liq. price"}),jsxRuntime.jsx(ui.Text.numeral,{unit:e.quote,size:"2xs",className:"oui-text-base-contrast-80",unitClassName:"oui-ml-1 oui-text-base-contrast-36",children:t?e.estLiqPrice??"--":"--"})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:"Account leverage"}),jsxRuntime.jsxs(ui.Flex,{gapX:1,className:ui.textVariants({size:"2xs",intensity:80}),children:[jsxRuntime.jsx(ui.Text.numeral,{unit:t?"x":void 0,children:t?e.currentLeverage??"--":"--"}),e.estLeverage&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntime.jsx("path",{d:"M2.505 4.997c0-.23.186-.416.416-.416H6.07L4.833 3.332l.586-.585 1.964 1.95a.42.42 0 0 1 .122.3.42.42 0 0 1-.122.3l-1.964 1.95-.586-.585L6.07 5.413H2.921a.416.416 0 0 1-.416-.416",fill:"#fff",fillOpacity:".54"})}),jsxRuntime.jsx("span",{children:`${e.estLeverage}x`})]})]})]})]})}function Rr(e){let[t,r]=He.useState(!1);return jsxRuntime.jsxs(ui.PopoverRoot,{open:t,onOpenChange:r,children:[jsxRuntime.jsx(ui.PopoverTrigger,{asChild:!0,children:jsxRuntime.jsx("button",{"data-testid":"oui-testid-orderEntry-additional-button",onClick:()=>{r(!0);},children:jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"oui-fill-white/[.36] hover:oui-fill-white/80",children:jsxRuntime.jsx("path",{d:"M3.332 2.665a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667z"})})})}),jsxRuntime.jsx(ui.PopoverContent,{side:"top",align:"end",className:"oui-w-[230px]",children:jsxRuntime.jsx(fe,{...e})})]})}var wr=e=>{let t=[{label:H[types.BBOOrderType.COUNTERPARTY1],value:types.BBOOrderType.COUNTERPARTY1},{label:H[types.BBOOrderType.COUNTERPARTY5],value:types.BBOOrderType.COUNTERPARTY5},{label:H[types.BBOOrderType.QUEUE1],value:types.BBOOrderType.QUEUE1},{label:H[types.BBOOrderType.QUEUE5],value:types.BBOOrderType.QUEUE5}];return jsxRuntime.jsx(ui.Select.options,{testid:"oui-testid-orderEntry-bbo-orderType-button",currentValue:e.value,value:e.value,options:t,onValueChange:e.onChange,contentProps:{className:"oui-bg-base-8 oui-w-full",style:e.contentStyle},size:"sm",classNames:{trigger:"oui-border-none oui-bg-transparent"},valueFormatter:(r,o)=>{let i=t.find(a=>a.value===r);return jsxRuntime.jsx(ui.Box,{children:jsxRuntime.jsx(ui.Text,{size:"sm",children:i?.label})})}})};var ft=e=>{let[t,r]=hooks.useLocalStorage("orderly-order-entry-order-type",types.OrderType.LIMIT),[o,i]=hooks.useLocalStorage("orderly-order-entry-order-side",types.OrderSide.BUY),[a,y]=hooks.useLocalStorage("orderly_order_bbo_type",void 0),u=He.useRef(a),{formattedOrder:s,setValue:f,setValues:T,symbolInfo:p,..._}=hooks.useOrderEntry(e.symbol,{initialOrder:{symbol:e.symbol,order_type:t,side:o}}),[P,$]=hooks.useLocalStorage("orderly-order-entry-tp_sl-switch",!1),{state:R}=hooks.useAccount(),{wrongNetwork:A}=reactApp.useAppContext(),C=He.useMemo(()=>(R.status===types.AccountStatusEnum.EnableTrading||R.status===types.AccountStatusEnum.EnableTradingWithoutConnected)&&!A,[R.status,A]),{currentLeverage:q}=hooks.useMarginRatio(),l=hooks.useEventEmitter(),w=He.useRef(4),D=He.useRef(null),K=He.useRef(null),j=He.useRef(null),[le,Te]=He.useState(0),_e=He.useMemo(()=>Number(s.order_quantity)>=Number(_.maxQty)?1:ui.convertValueToPercentage(Number(s.order_quantity??0),0,_.maxQty)/100,[s.order_quantity,_.maxQty]),c=()=>{if(p.base_tick<1)return;let d=hooks.utils.formatNumber(s?.order_quantity,new utils.Decimal(p?.base_tick||"0").toNumber());f("order_quantity",d,{shouldUpdateLastChangedField:!1});},G=d=>g=>{w.current=d;},Fe=d=>g=>{setTimeout(()=>{w.current===d&&(w.current=4);},300),d===2&&c();};He.useEffect(()=>{let d=g=>{if(w.current===1)(s.order_type===types.OrderType.STOP_LIMIT||s.order_type===types.OrderType.STOP_MARKET)&&(f("trigger_price",utils.removeTrailingZeros(g[0])),Q(D.current));else if(s.order_type===types.OrderType.STOP_LIMIT||s.order_type===types.OrderType.LIMIT)f("order_price",utils.removeTrailingZeros(g[0])),Q(K.current);else {let E;s.order_type===types.OrderType.STOP_MARKET?(f("trigger_price",utils.removeTrailingZeros(g[0])),Q(D.current),E=types.OrderType.STOP_LIMIT):s.order_type===types.OrderType.MARKET&&(E=types.OrderType.LIMIT),typeof E<"u"&&f("order_type",E),f("order_price",utils.removeTrailingZeros(g[0])),Q(K.current);}function Q(E){setTimeout(()=>{E?.focus();},0);}};return l.on("orderbook:item:click",d),()=>{l.off("orderbook:item:click",d);}},[s,p]);let de=()=>{T({tp_trigger_price:"",sl_trigger_price:""});},gt=()=>{T({order_type_ext:void 0});},yt=()=>{f("order_quantity",_.maxQty);},xt=(d,g,Q)=>{if(d==="order_type"&&r(g),d==="side"&&i(g),d==="reduce_only"&&g||d==="order_type"&&(g===types.OrderType.STOP_LIMIT||g===types.OrderType.STOP_MARKET)){let E={tp_trigger_price:"",sl_trigger_price:"",[d]:g};d==="order_type"&&(E.order_type_ext=""),T(E);return}if(d==="order_type"&&g!==types.OrderType.LIMIT){let E={level:void 0,order_type_ext:void 0,[d]:g};T(E);return}f(d,g,Q);},bt=d=>{$(d),d?gt():de();},oe=He.useMemo(()=>P||[types.OrderType.POST_ONLY,types.OrderType.IOC,types.OrderType.FOK].includes(s.order_type_ext)?"disabled":a&&s.order_type===types.OrderType.LIMIT?"on":"off",[a,P,s.order_type,s.order_type_ext]),Tt=()=>{a?(y(void 0),T({order_type_ext:void 0,level:void 0})):y(u.current||types.BBOOrderType.COUNTERPARTY1);},_t=d=>{y(d),u.current=d;};return He.useEffect(()=>{if(oe==="disabled"){let{order_type_ext:d}=s;T({order_type_ext:pe({order_type_ext:d})?void 0:d,level:void 0});}},[oe,s.order_type_ext]),He.useEffect(()=>{if(oe==="on"){let d=Xe(a,s.side),g=Ze(a);T({order_type_ext:d,level:g});}},[a,oe,s.side]),He.useEffect(()=>{let d=j.current;if(!d)return;let g=new ResizeObserver(Q=>{for(let E of Q){let Me=E.contentRect.width;Me&&Te(Me);}});return g.observe(d),()=>{g.unobserve(d);}},[j,s.order_type_ext]),{..._,currentQtyPercentage:_e,side:s.side,type:s.order_type,level:s.level,setOrderValue:xt,setOrderValues:T,currentLeverage:q,formattedOrder:s,tpslSwitch:P,setTpslSwitch:bt,setMaxQty:yt,symbolInfo:p,onFocus:G,onBlur:Fe,refs:{triggerPriceInputRef:D,priceInputRef:K,priceInputContainerRef:j},canTrade:C,bboStatus:oe,bboType:a,onBBOChange:_t,toggleBBO:Tt,priceInputContainerWidth:le}};var Gr=e=>{let t=ft(e);return jsxRuntime.jsx(Re,{...t,containerRef:e.containerRef})};
|
|
16
|
+
var Ve=He.createContext({}),ce=()=>He.useContext(Ve),he=e=>{let{type:t,values:r}=e,[o,i]=hooks.useLocalStorage("TP/SL_Mode","Offset%"),a=He.useMemo(()=>!r.PnL||!e.values.trigger_price?null:jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx("span",{className:"oui-text-xs oui-text-base-contrast-54",children:`Est.${o==="PnL"?"ROI":"PNL"}:`}),o==="PnL"?jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",className:ui.cn("oui-text-xs oui-ml-1",t==="TP"?"oui-text-trade-profit":"oui-text-trade-loss"),children:r.ROI}):jsxRuntime.jsx(ui.Text.numeral,{rule:"price",className:ui.cn("oui-text-xs oui-ml-1",t==="TP"?"oui-text-trade-profit":"oui-text-trade-loss"),children:r.PnL})]}),[o,e.values.PnL,e.values.trigger_price]);return jsxRuntime.jsx(Ve.Provider,{value:{mode:o,setMode:i,tipsEle:a},children:e.children})};var qe=e=>{let{type:t,values:r,quote_dp:o}=e,{mode:i,setMode:a,tipsEle:y}=ce(),[u,s]=He.useState(false),f=He.useMemo(()=>{switch(i){case "Offset":return `${t.toLowerCase()}_offset`;case "Offset%":return `${t.toLowerCase()}_offset_percentage`;default:return `${t.toLowerCase()}_pnl`}},[i]),T=He.useMemo(()=>r[i],[r,i]),p=He.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"}],[]),_=He.useRef("");return {mode:i,modes:p,formatter:C=>{let{dp:q=2}=C;return {onRenderBefore:(l,w)=>(l=`${l}`,t==="SL"&&i==="PnL"&&(l=l.startsWith("-")?l:"-"+l),l===""||l==="-"?"":i==="Offset%"?`${new utils.Decimal(l.replace(new RegExp(_.current.replace(".","\\.")+"$"),"")).mul(100).todp(2,4).toString()}${_.current}`:(i==="Offset"&&(l=utils.todpIfNeed(l,q)),`${l}`)),onSendBefore:l=>{if(/^\-?0{2,}$/.test(l))return "0";if(i==="Offset%"){if(l!==""){l=utils.todpIfNeed(l,2);let w=l.match(/\.0{0,2}$/);w?_.current=w[0]:_.current="",l=new utils.Decimal(l).div(100).toString(),l=`${l}${_.current}`;}}else l=utils.todpIfNeed(l,q);return l===""||l==="-"?"":l}}},onModeChange:C=>{a(C);},onFocus:()=>{s(true);},onBlur:()=>{s(false);},value:T,onValueChange:C=>{e.onChange(f,C);},quote_dp:o,tips:u?y:void 0}};var ze=e=>{let{mode:t,modes:r,onModeChange:o,onValueChange:i,quote:a,quote_dp:y,value:u,type:s,tips:f,onFocus:T,onBlur:p}=e,[_,P]=He.useState(t);He.useEffect(()=>{P(t),R(t==="Offset%"?"%":a);},[t]);let[$,R]=He.useState(t==="Offset%"?"%":a);He.useEffect(()=>{P(u?"":t);},[u]);let A=He.useMemo(()=>`${s.toLowerCase()}_${t.toLowerCase()}`,[]);return jsxRuntime.jsx(ui.Input.tooltip,{prefix:_,size:"md",placeholder:$,id:A,align:"right",value:u,tooltip:f,tooltipProps:{content:{side:e.type==="TP"?"top":"bottom"}},"data-testid":e.testIds?.input,autoComplete:"off",onValueChange:i,formatters:[e.formatter({dp:y,mode:t,type:s}),ui.inputFormatter.currencyFormatter],classNames:{root:s==="TP"?"oui-text-trade-profit":"oui-text-trade-loss",additional:"oui-text-base-contrast-54",input:"oui-text-inherit"},onFocus:()=>{P(""),R(""),T();},onBlur:()=>{P(u?"":t),R(t==="Offset%"?"%":a),p();},suffix:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t==="Offset%"&&!!u&&jsxRuntime.jsx(ui.Text,{size:"2xs",color:"inherit",className:"oui-ml-[2px]",children:"%"}),jsxRuntime.jsx(At,{mode:t,modes:r,onModeChange:C=>o(C.value),testId:e.testIds?.dropDown})]})})},At=e=>jsxRuntime.jsx(ui.SimpleDropdownMenu,{currentValue:e.mode,menu:e.modes,align:"end",size:"xs",className:"oui-min-w-[80px]",onCloseAutoFocus:t=>t.preventDefault(),onSelect:t=>e.onModeChange(t),children:jsxRuntime.jsx("button",{className:"oui-p-2","data-testid":e.testId,children:jsxRuntime.jsx(ui.CaretDownIcon,{size:12,color:"white"})})});var Ye=e=>{let{testIds:t,quote:r,...o}=e,i=qe(o);return jsxRuntime.jsx(ze,{...i,testIds:t,quote:r,type:e.type})};var ne=He.createContext({}),Ke=ne.Provider;var $e=e=>{let t=He__default.default.useRef(null);return He.useEffect(()=>{e.orderType!==types.OrderType.LIMIT&&e.orderType!==types.OrderType.MARKET&&e.onSwitchChanged(false);},[e.orderType]),e.orderType!==types.OrderType.LIMIT&&e.orderType!==types.OrderType.MARKET||e.isReduceOnly?null:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",gapX:1,children:[jsxRuntime.jsx(ui.Switch,{id:"order_entry_tpsl",className:"oui-h-[14px]",checked:e.switchState,disabled:e.orderType!==types.OrderType.LIMIT&&e.orderType!==types.OrderType.MARKET||e.isReduceOnly,onCheckedChange:r=>{e.onSwitchChanged(r);}}),jsxRuntime.jsx("label",{htmlFor:"order_entry_tpsl",className:"oui-text-xs",children:"TP/SL"}),jsxRuntime.jsx(ui.ExclamationFillIcon,{color:"white",size:14,opacity:1,className:"oui-text-white/[.36] hover:oui-text-white/80 oui-cursor-pointer",onClick:()=>{ui.modal.dialog({title:"Tips",size:"xs",content:jsxRuntime.jsx(ui.Text,{intensity:54,children:"TP/SL triggers at the specified mark price and executes as a market order. By default, it applies to the entire position. Adjust settings in open positions for partial TP/SL."})});}})]}),jsxRuntime.jsx("div",{className:ui.cn("oui-max-h-0 oui-overflow-hidden oui-transition-all",e.switchState&&"oui-max-h-[100px]"),onTransitionEnd:()=>{t.current?.style.setProperty("opacity",e.switchState?"1":"0");},children:jsxRuntime.jsx(je,{ref:t,onChange:e.onChange,values:e.values,errors:e.errors,quote_dp:e.quote_dp})})]})},je=He__default.default.forwardRef((e,t)=>jsxRuntime.jsxs("div",{ref:t,className:"oui-transition-all oui-pt-2 oui-pb-2 oui-px-[1px] oui-space-y-1",children:[jsxRuntime.jsx(he,{values:e.values.tp,type:"TP",children:jsxRuntime.jsx(Ge,{type:"TP",error:e.errors?e.errors.tp_trigger_price?.message:"",onChange:e.onChange,values:e.values.tp,quote_dp:e.quote_dp,testIds:{first:"oui-testid-orderEntry-tpsl-tpPrice-input",second:"oui-testid-orderEntry-tpsl-tpPnl-input",dropDown:"oui-testid-orderEntry-tpsl-tp-dropDown-trigger-button"}})}),jsxRuntime.jsx(he,{values:e.values.sl,type:"SL",children:jsxRuntime.jsx(Ge,{type:"SL",error:e.errors?e.errors.sl_trigger_price?.message:"",onChange:e.onChange,values:e.values.sl,quote_dp:e.quote_dp,testIds:{first:"oui-testid-orderEntry-tpsl-slPrice-input",second:"oui-testid-orderEntry-tpsl-slPnl-input",dropDown:"oui-testid-orderEntry-tpsl-sl-dropDown-trigger-button"}})})]}));je.displayName="TPSLInputForm";var Xt=e=>{let {errorMsgVisible:t}=He.useContext(ne),{tipsEle:r}=ce(),[o,i]=He.useState(`${e.type} Price`),[a,y]=He.useState("USDC"),[u,s]=He.useState(false),f=He.useMemo(()=>e.error&&t?e.error:u?r:null,[e.error,t,u,r]);e.type==="SL"?"sl_trigger_price":"tp_trigger_price";return He.useEffect(()=>{i(e.values.trigger_price?e.type:`${e.type} Price`);},[e.values.trigger_price]),jsxRuntime.jsx(ui.Input.tooltip,{"data-testid":e.testId,prefix:o,size:"md",placeholder:a,align:"right",onFocus:()=>{i(e.type),y(""),s(true);},onBlur:()=>{i(e.values.trigger_price?e.type:`${e.type} Price`),y("USDC"),s(false);},tooltip:f,tooltipProps:{content:{side:e.type==="TP"?"top":"bottom"}},color:e.error?"danger":void 0,autoComplete:"off",value:e.values.trigger_price,classNames:{additional:"oui-text-base-contrast-54",root:"oui-pr-2 md:oui-pr-3",prefix:"oui-pr-1 md:oui-pr-2"},onValueChange:e.onChange,formatters:[ui.inputFormatter.numberFormatter,ui.inputFormatter.dpFormatter(e.quote_dp??2),ui.inputFormatter.currencyFormatter]})},Ge=e=>{let t=e.type==="SL"?"sl_trigger_price":"tp_trigger_price";return jsxRuntime.jsxs(ui.Grid,{cols:2,gapX:1,children:[jsxRuntime.jsx(Xt,{testId:e.testIds?.first,type:e.type,error:e.error,values:e.values??"",onChange:r=>{e.onChange(t,r);},quote_dp:e.quote_dp}),jsxRuntime.jsx(Ye,{testIds:{input:e.testIds?.second,dropDown:e.testIds?.dropDown},onChange:e.onChange,quote:"USDC",quote_dp:e.quote_dp,type:e.type,values:{PnL:e.values.PnL,Offset:e.values.Offset,"Offset%":e.values["Offset%"],ROI:e.values.ROI}})]})};var H={[types.BBOOrderType.COUNTERPARTY1]:"Counterparty 1",[types.BBOOrderType.COUNTERPARTY5]:"Counterparty 5",[types.BBOOrderType.QUEUE1]:"Queue 1",[types.BBOOrderType.QUEUE5]:"Queue 5"};function pe(e){let{order_type:t,order_type_ext:r}=e,o=[types.OrderType.ASK,types.OrderType.BID].includes(r);return t?t===types.OrderType.LIMIT&&o:o}function Xe(e,t){if([types.BBOOrderType.COUNTERPARTY1,types.BBOOrderType.COUNTERPARTY5].includes(e))return t===types.OrderSide.BUY?types.OrderType.ASK:types.OrderType.BID;if([types.BBOOrderType.QUEUE1,types.BBOOrderType.QUEUE5].includes(e))return t===types.OrderSide.BUY?types.OrderType.BID:types.OrderType.ASK}function Ze(e){if([types.BBOOrderType.COUNTERPARTY1,types.BBOOrderType.QUEUE1].includes(e))return types.OrderLevel.ONE;if([types.BBOOrderType.COUNTERPARTY5,types.BBOOrderType.QUEUE5].includes(e))return types.OrderLevel.FIVE}function Je(e){let{type:t,side:r,level:o}=e;if(t===types.OrderType.ASK){if(o===types.OrderLevel.ONE)return r===types.OrderSide.BUY?types.BBOOrderType.COUNTERPARTY1:types.BBOOrderType.QUEUE1;if(o===types.OrderLevel.FIVE)return r===types.OrderSide.BUY?types.BBOOrderType.COUNTERPARTY5:types.BBOOrderType.QUEUE5}if(t===types.OrderType.BID){if(o===types.OrderLevel.ONE)return r===types.OrderSide.BUY?types.BBOOrderType.QUEUE1:types.BBOOrderType.COUNTERPARTY1;if(o===types.OrderLevel.FIVE)return r===types.OrderSide.BUY?types.BBOOrderType.QUEUE5:types.BBOOrderType.COUNTERPARTY5}}var Le=e=>{let{baseDP:t,quoteDP:r,order:o,onConfirm:i,onCancel:a}=e,{side:y,order_type:u,order_type_ext:s,level:f}=o,[T,p]=hooks.useLocalStorage("orderly_order_confirm",true),_=()=>{if(u===types.OrderType.MARKET||u===types.OrderType.STOP_MARKET)return jsxRuntime.jsx(ui.Text,{intensity:80,children:"Market"});if(pe({order_type:u,order_type_ext:s})){let P=Je({type:s,side:y,level:f});return jsxRuntime.jsx(ui.Text,{intensity:80,children:H[P]})}return jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:false,children:o.order_price})};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text.formatted,{rule:"symbol",showIcon:true,children:o.symbol}),jsxRuntime.jsxs(ui.Flex,{justify:"end",gapX:1,children:[jsxRuntime.jsx(ir,{type:u}),y===types.OrderSide.BUY?jsxRuntime.jsx(ui.Badge,{color:"buy",size:"sm",children:"Buy"}):jsxRuntime.jsx(ui.Badge,{color:"sell",size:"sm",children:"Sell"})]})]}),jsxRuntime.jsx(ui.Divider,{className:"oui-my-4"}),jsxRuntime.jsxs("div",{className:ui.textVariants({size:"sm",intensity:54,className:"oui-space-y-1"}),children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"Qty."}),jsxRuntime.jsx(ui.Text.numeral,{rule:"price",dp:t,padding:false,className:"oui-text-base-contrast",children:o.order_quantity})]}),o.trigger_price?jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"Trigger"}),jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:false,children:o.trigger_price})]}):null,jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"Price"}),_()]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"Notional"}),jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",dp:r,padding:false,className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",children:o.total})]})]}),o.tp_trigger_price||o.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"}),children:[o.tp_trigger_price&&jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"TP Price (Mark)"}),jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",coloring:true,dp:r,padding:false,unitClassName:"oui-text-base-contrast-36 oui-ml-1",children:o.tp_trigger_price})]}),o.sl_trigger_price&&jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:"SL Price (Mark)"}),jsxRuntime.jsx(ui.Text.numeral,{unit:"USDC",rule:"price",coloring:true,className:"oui-text-trade-loss",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:false,children:o.sl_trigger_price})]})]})]}):null,jsxRuntime.jsxs(ui.Flex,{gapX:1,pt:4,pb:5,children:[jsxRuntime.jsx(ui.Checkbox,{id:"orderConfirm",color:"white",onCheckedChange:P=>{p(!P);}}),jsxRuntime.jsx("label",{htmlFor:"orderConfirm",className:ui.textVariants({size:"xs",intensity:54}),children:"Disable order confirmation"})]}),o.tp_trigger_price||o.sl_trigger_price?jsxRuntime.jsx(ui.Box,{py:3,px:3,className:"oui-text-center",children:jsxRuntime.jsx(ui.Text,{color:"warning",size:"xs",children:"TP/SL triggers at the specified mark price and executes as a market order."})}):null,jsxRuntime.jsxs(ui.Grid,{cols:2,gapX:3,children:[jsxRuntime.jsx(ui.Button,{color:"secondary",size:"md",onClick:()=>a(),children:"Cancel"}),jsxRuntime.jsx(ui.Button,{size:"md",onClick:()=>i(),children:"Confirm"})]})]})};Le.displayName="OrderConfirmDialog";var ir=e=>{let t=He.useMemo(()=>{switch(e.type){case types.OrderType.LIMIT:return "Limit";case types.OrderType.MARKET:return "Market";case types.OrderType.STOP_LIMIT:return "Stop Limit";case types.OrderType.STOP_MARKET:return "Stop Market";default:return ""}},[e.type]);return jsxRuntime.jsx(ui.Badge,{color:"neutral",size:"sm",children:t})},ar=e=>{let{close:t,resolve:r,reject:o,...i}=e;return jsxRuntime.jsx(Le,{...i,onCancel:t,onConfirm:()=>{r(),t();}})},Se="orderConfirm";ui.registerSimpleDialog(Se,ar,{size:"sm",title:"Order confirm"});var ot=e=>{let{pinned:t,orderTypeExtra:r}=e,o=i=>a=>{e.onValueChange&&e.onValueChange("order_type_ext",a?i:"");};return He.useEffect(()=>{e.onValueChange?.("visible_quantity",e.hidden?0:1);},[e.hidden]),jsxRuntime.jsxs("div",{className:"oui-text-base-contrast-54",children:[jsxRuntime.jsxs(ui.Flex,{justify:t?"start":"between",mb:3,width:t?"unset":"100%",className:"oui-gap-x-2 md:oui-gap-x-3",children:[jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-postOnly-checkBox",id:"toggle_order_post_only",className:"oui-peer",color:"white",variant:"radio",disabled:!e.showExtra,checked:r===types.OrderType.POST_ONLY,onCheckedChange:o(types.OrderType.POST_ONLY)}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_post_only",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"Post only"})]}),jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-ioc-checkBox",id:"toggle_order_iov",color:"white",className:"oui-peer",variant:"radio",checked:r===types.OrderType.IOC,onCheckedChange:o(types.OrderType.IOC),disabled:!e.showExtra}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_iov",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"IOC"})]}),jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-fox-checkBox",id:"toggle_order_fok",color:"white",variant:"radio",className:"oui-peer",checked:r===types.OrderType.FOK,onCheckedChange:o(types.OrderType.FOK),disabled:!e.showExtra}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_fok",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"FOK"})]})]}),jsxRuntime.jsxs(ui.Flex,{gapX:6,children:[jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-orderConfirm-checkBox",id:"toggle_order_confirm",color:"white",checked:e.needConfirm,onCheckedChange:i=>{e.setNeedConfirm(!!i);}}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_confirm",className:"oui-text-2xs oui-ml-1",children:"Order confirm"})]}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Checkbox,{"data-testid":"oui-testid-orderEntry-hidden-checkBox",id:"toggle_order_hidden",color:"white",checked:e.hidden,onCheckedChange:i=>{e.setHidden(i);}}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_hidden",className:"oui-text-2xs oui-ml-1",children:"Hidden"})]})]}),!t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Divider,{className:"oui-my-3"}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx(ui.Switch,{"data-testid":"oui-testid-orderEntry-additional-keepVisible-switch",id:"toggle_order_keep_visible",onCheckedChange:i=>{e.setPinned(i);}}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_keep_visible",className:"oui-text-2xs oui-ml-1",children:"Keep visible"})]})]})]})};var nt=()=>({});var fe=e=>{let t=nt();return jsxRuntime.jsx(ot,{...t,...e})};var Re=e=>{let{side:t,formattedOrder:r,setOrderValue:o,setOrderValues:i,symbolInfo:a,maxQty:y,freeCollateral:u,helper:s,submit:f,metaState:T,bboStatus:p,bboType:_,onBBOChange:P,toggleBBO:$}=e,{errors:R,validated:A}=T,[C,q]=He.useState(false),[l,w]=hooks.useLocalStorage("orderly_order_confirm",true),[D,K]=hooks.useLocalStorage("orderly-order-additional-pinned",true),[j,le]=hooks.useLocalStorage("orderly-order-hidden",false),Te=He.useMemo(()=>t===types.OrderSide.BUY?"Buy / Long":"Sell / Short",[t]);He.useEffect(()=>{A&&q(true);},[A]),He.useEffect(()=>{let c=G=>{G.target.closest("#order-entry-submit-button")||q(de=>de&&false);};return C?document.addEventListener("click",c):document.removeEventListener("click",c),()=>{document.removeEventListener("click",c);}},[C]);let _e=()=>{s.validate().then(c=>l?ui.modal.show(Se,{order:r,quote:a.quote,base:a.base,quoteDP:a.quote_dp,baseDP:a.base_dp}):true,c=>{if(q(true),typeof c=="object"&&(c.total!=null||c.order_quantity!=null||c.order_price!=null||c.trigger_price!=null))return Promise.reject()}).then(()=>f().then(c=>{c.success||ui.toast.error(c.message);})).catch(c=>{c!=="cancel"&&typeof c=="object"&&c.message&&ui.toast.error(c.message);});};return jsxRuntime.jsx(Ke,{value:{errorMsgVisible:C},children:jsxRuntime.jsxs("div",{className:"oui-space-y-2 xl:oui-space-y-3 oui-text-base-contrast-54",ref:e.containerRef,children:[jsxRuntime.jsxs(ui.Flex,{gapX:2,className:"oui-flex-col lg:oui-flex-row oui-gap-y-3",children:[jsxRuntime.jsxs("div",{className:"oui-grid oui-grid-cols-2 oui-w-full oui-flex-1 oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]",children:[jsxRuntime.jsx(ui.Button,{onClick:()=>{e.setOrderValue("side",types.OrderSide.BUY);},size:"md",fullWidth:true,"data-type":types.OrderSide.BUY,className:ui.cn(t===types.OrderSide.BUY&&e.canTrade?"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80":"oui-bg-base-7 hover:oui-bg-base-6 active:oui-bg-base-6 oui-text-base-contrast-36"),"data-testid":"oui-testid-orderEntry-side-buy-button",children:"Buy"}),jsxRuntime.jsx(ui.Button,{onClick:()=>{e.setOrderValue("side",types.OrderSide.SELL);},"data-type":types.OrderSide.SELL,fullWidth:true,size:"md",className:ui.cn(t===types.OrderSide.SELL&&e.canTrade?"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80":"oui-bg-base-7 hover:oui-bg-base-6 active:oui-bg-base-6 oui-text-base-contrast-36"),"data-testid":"oui-testid-orderEntry-side-sell-button",children:"Sell"})]}),jsxRuntime.jsx("div",{className:"oui-w-full lg:oui-flex-1",children:jsxRuntime.jsx(Nr,{type:r.order_type,side:t,canTrade:e.canTrade,onChange:c=>{o("order_type",c);}})})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:"Available"}),jsxRuntime.jsx(ui.Text.numeral,{unit:a.quote,size:"2xs",className:"oui-text-base-contrast-80",unitClassName:"oui-ml-1 oui-text-base-contrast-54",dp:2,padding:false,children:e.canTrade?u:0})]}),jsxRuntime.jsx(Ir,{type:e.type,symbolInfo:a,values:{quantity:r.order_quantity,price:r.order_price,trigger_price:r.trigger_price,total:r.total,level:r.level,side:r.side,order_type_ext:r.order_type_ext},errors:A?R:null,onChange:(c,G)=>{e.setOrderValue(c,G);},onValuesChange:e.setOrderValues,refs:e.refs,onBlur:e.onBlur,onFocus:e.onFocus,bbo:{bboStatus:p,bboType:_,onBBOChange:P,toggleBBO:$},priceInputContainerWidth:e.priceInputContainerWidth}),jsxRuntime.jsx(Sr,{canTrade:e.canTrade,maxQty:y,currentQtyPercentage:e.currentQtyPercentage,value:r.order_quantity?Number(r.order_quantity):0,tick:a.base_tick,dp:a.base_dp,setMaxQty:e.setMaxQty,onValueChange:c=>{o("order_quantity",c);},side:e.side}),jsxRuntime.jsx(uiConnector.AuthGuard,{buttonProps:{fullWidth:true},children:jsxRuntime.jsx(ui.ThrottledButton,{fullWidth:true,id:"order-entry-submit-button","data-type":types.OrderSide.BUY,className:ui.cn(t===types.OrderSide.BUY?"orderly-order-entry-submit-button-buy oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80":"orderly-order-entry-submit-button-sell oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80"),onClick:()=>{_e();},loading:e.isMutating,children:Te})}),jsxRuntime.jsx(Br,{canTrade:e.canTrade,quote:a.quote,estLiqPrice:e.estLiqPrice,estLeverage:e.estLeverage,currentLeverage:e.currentLeverage}),jsxRuntime.jsx(ui.Divider,{className:"oui-w-full"}),jsxRuntime.jsx($e,{quote_dp:e.symbolInfo.quote_dp,switchState:e.tpslSwitch,onSwitchChanged:e.setTpslSwitch,orderType:r.order_type,errors:A?R:null,isReduceOnly:r.reduce_only,values:{tp:{trigger_price:r.tp_trigger_price??"",PnL:r.tp_pnl??"",Offset:r.tp_offset??"","Offset%":r.tp_offset_percentage??"",ROI:r.tp_ROI??""},sl:{trigger_price:r.sl_trigger_price??"",PnL:r.sl_pnl??"",Offset:r.sl_offset??"","Offset%":r.sl_offset_percentage??"",ROI:r.sl_ROI??""}},onChange:(c,G)=>{e.setOrderValue(c,G);}}),jsxRuntime.jsxs(ui.Flex,{justify:"between",itemAlign:"center",className:"!oui-mt-[0px] xl:!oui-mt-3",children:[jsxRuntime.jsxs(ui.Flex,{itemAlign:"center",gapX:1,children:[jsxRuntime.jsx(ui.Switch,{"data-testid":"oui-testid-orderEntry-reduceOnly-switch",className:"oui-h-[14px]",id:"reduceOnly",checked:e.formattedOrder.reduce_only,onCheckedChange:c=>{e.setOrderValue("reduce_only",c);}}),jsxRuntime.jsx("label",{htmlFor:"reduceOnly",className:"oui-text-xs",children:"Reduce only"})]}),!D&&jsxRuntime.jsx(Rr,{pinned:D,setPinned:K,needConfirm:l,setNeedConfirm:w,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===types.OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:le})]}),D&&jsxRuntime.jsxs(ui.Box,{p:2,r:"md",intensity:700,position:"relative",children:[jsxRuntime.jsx(fe,{pinned:D,setPinned:K,needConfirm:l,setNeedConfirm:w,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===types.OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:le}),jsxRuntime.jsx(Er,{onClick:()=>{K(false);},className:"oui-absolute oui-top-2 oui-right-2 oui-group","data-testid":"oui-testid-orderEntry-pinned-button"})]})]})})},lt="M10.007 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.852-2.523 1.233.361 1.95.015 2.961-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103 5.35 5.35 0 0 0-2.104-1.312c-.448-.15-.808-.208-1.042-.208",Er=e=>{let[t,r]=He.useState(lt);return jsxRuntime.jsx("button",{...e,children:jsxRuntime.jsx("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",onMouseEnter:()=>{r('M10.008 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.15-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.107.507.508.94 1.13 1.119 1.945-.636.61-1.026.658-1.662.323a.67.67 0 0 0-.779.117c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.292-.076 1.773-.48 2.206-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.515 2.226-.514 1.742.001 2.668-.448 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.686-.29-1.047.321-1.67"');},onMouseLeave:()=>{r(lt);},className:"oui-text-primary-darken ",children:jsxRuntime.jsx("path",{d:t})})})},Ir=e=>{let{type:t,symbolInfo:r,errors:o,values:i,onFocus:a,onBlur:y,bbo:u}=e,s=p=>o&&o[p]?o[p].message:"",f=u.bboStatus==="on",T=t===types.OrderType.LIMIT?jsxRuntime.jsxs(ui.Flex,{direction:"column",itemAlign:"end",className:"oui-text-2xs",children:[r.quote,jsxRuntime.jsx(ui.Flex,{height:20,width:48,justify:"center",itemAlign:"center",r:"base",className:ui.cn("oui-border oui-cursor-pointer oui-mt-[2px] oui-select-none",u.bboStatus==="on"?"oui-border-primary":"oui-border-line-12",u.bboStatus==="disabled"&&"oui-cursor-not-allowed"),onClick:()=>{u.bboStatus==="disabled"?ui.modal.dialog({title:"Tips",size:"xs",content:jsxRuntime.jsx(ui.Text,{intensity:54,children:"BBO is not supported when TP/SL, Post-Only, IOC, or FOK is selected."})}):u.toggleBBO();},children:jsxRuntime.jsx(ui.Text,{className:ui.cn(u.bboStatus==="on"&&"oui-text-primary",u.bboStatus==="off"&&"oui-text-base-contrast-54",u.bboStatus==="disabled"&&"oui-text-base-contrast-20"),children:"BBO"})})]}):r.quote;return jsxRuntime.jsxs("div",{className:"oui-space-y-1",children:[t===types.OrderType.STOP_LIMIT||t===types.OrderType.STOP_MARKET?jsxRuntime.jsx("div",{className:"oui-group",children:jsxRuntime.jsx(ae,{label:"Trigger",suffix:r.quote,error:s("trigger_price"),id:"trigger",ref:e.refs.triggerPriceInputRef,value:i.trigger_price,onChange:p=>{e.onChange("trigger_price",p);},formatters:[ui.inputFormatter.dpFormatter(r.quote_dp)],onFocus:a(1),onBlur:y(1)})}):null,t===types.OrderType.LIMIT||t===types.OrderType.STOP_LIMIT?jsxRuntime.jsxs("div",{ref:e.refs.priceInputContainerRef,className:"oui-relative oui-group oui-w-full",children:[jsxRuntime.jsx(ae,{label:"Price",suffix:T,id:"price",value:i.price,error:s("order_price"),ref:e.refs.priceInputRef,onChange:p=>{e.onChange("order_price",p);},formatters:[ui.inputFormatter.dpFormatter(r.quote_dp)],onFocus:a(0),onBlur:y(0),readonly:f,classNames:{root:ui.cn(f&&"focus-within:oui-outline-transparent "),input:ui.cn(f&&"oui-cursor-auto")}}),u.bboStatus==="on"&&jsxRuntime.jsx("div",{className:ui.cn("oui-absolute oui-left-0 oui-bottom-1"),children:jsxRuntime.jsx(wr,{value:u.bboType,onChange:u.onBBOChange,contentStyle:{width:e.priceInputContainerWidth}})})]}):null,jsxRuntime.jsxs(ui.Grid,{cols:2,className:"oui-space-x-1 oui-group",children:[jsxRuntime.jsx(ae,{label:"Qty",suffix:r.base,id:"order_quantity_input",name:"order_quantity_input",className:"!oui-rounded-br !oui-rounded-tr",value:i.quantity,error:s("order_quantity"),onChange:p=>{e.onChange("order_quantity",p);},formatters:[ui.inputFormatter.dpFormatter(r.base_dp)],onFocus:a(2),onBlur:y(2)}),jsxRuntime.jsx(ae,{label:"Total\u2248",suffix:r.quote,id:"total",className:"!oui-rounded-bl !oui-rounded-tl",value:i.total,error:s("total"),onChange:p=>{e.onChange("total",p);},onFocus:a(3),onBlur:y(3),formatters:[ui.inputFormatter.dpFormatter(r.quote_dp)]})]})]})},ae=He.forwardRef((e,t)=>{let{errorMsgVisible:r}=He.useContext(ne),[o,i]=He.useState("0");return jsxRuntime.jsx(ui.Input.tooltip,{ref:t,tooltip:r?e.error:void 0,autoComplete:"off",autoFocus:e.autoFocus,size:"lg",placeholder:e.readonly?"":o,id:e.id,name:e.name,color:e.error?"danger":void 0,prefix:jsxRuntime.jsx(Lr,{id:e.id,children:e.label}),suffix:e.suffix,value:e.readonly?"":e.value||"",onValueChange:e.onChange,onFocus:a=>{i(""),e.onFocus?.(a);},onBlur:a=>{i("0"),e.onBlur?.(a);},formatters:[...e.formatters??[],ui.inputFormatter.numberFormatter,ui.inputFormatter.currencyFormatter,ui.inputFormatter.decimalPointFormatter],classNames:{root:ui.cn("orderly-order-entry oui-relative oui-pt-8 oui-h-[54px] oui-px-2 oui-py-1 oui-pr-2 oui-border oui-border-solid oui-border-line oui-rounded group-first:oui-rounded-t-xl group-last:oui-rounded-b-xl",e.className,e.classNames?.root),input:ui.cn("oui-mt-5 oui-mb-1 oui-h-5",e?.classNames?.input),prefix:ui.cn("oui-absolute oui-left-2 oui-top-[7px] oui-text-base-contrast-36",e.classNames?.prefix),suffix:ui.cn("oui-absolute oui-right-0 oui-top-0 oui-text-base-contrast-36 oui-text-2xs oui-justify-start oui-py-2",e.classNames?.suffix)},readOnly:e.readonly})});ae.displayName="CustomInput";var Lr=e=>jsxRuntime.jsx("label",{htmlFor:e.id,className:"oui-absolute oui-left-2 oui-top-[7px] oui-text-base-contrast-36 oui-text-2xs",children:e.children}),Sr=e=>{let{canTrade:t}=e,r=He.useMemo(()=>t?e.side===types.OrderSide.BUY?"buy":"sell":void 0,[e.side,t]),o=He.useMemo(()=>e.side===types.OrderSide.BUY?"Max buy":"Max sell",[e.side]);return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(ui.Slider.single,{disabled:e.maxQty===0||!t,value:e.value,color:r,markCount:4,showTip:true,max:e.maxQty,step:e.tick,onValueChange:e.onValueChange}),jsxRuntime.jsxs(ui.Flex,{justify:"between",className:"oui-pt-1 xl:oui-pt-2",children:[jsxRuntime.jsx(ui.Text.numeral,{rule:"percentages",size:"2xs",color:r,dp:2,padding:false,children:t?e.currentQtyPercentage:0}),jsxRuntime.jsxs(ui.Flex,{children:[jsxRuntime.jsx("button",{className:ui.textVariants({size:"2xs",className:"oui-mr-1"}),onClick:()=>e.setMaxQty(),"data-testid":"oui-testid-orderEntry-maxQty-value-button",children:o}),jsxRuntime.jsx(ui.Text.numeral,{size:"2xs",color:r,dp:e.dp,padding:false,"data-testid":"oui-testid-orderEntry-maxQty-value",children:t?e.maxQty:0})]})]})]})},Nr=e=>{let t=[{label:"Limit order",value:types.OrderType.LIMIT},{label:"Market order",value:types.OrderType.MARKET},{label:"Stop limit",value:types.OrderType.STOP_LIMIT},{label:"Stop market",value:types.OrderType.STOP_MARKET}];return jsxRuntime.jsx(ui.Select.options,{testid:"oui-testid-orderEntry-orderType-button",currentValue:e.type,value:e.type,options:t,onValueChange:e.onChange,contentProps:{className:"oui-bg-base-8 oui-w-full"},valueFormatter:(r,o)=>{let i=t.find(a=>a.value===r);return i?jsxRuntime.jsx(ui.Text,{size:"xs",color:e.canTrade?e.side===types.OrderSide.BUY?"buy":"sell":void 0,children:i?.label.replace(" order","")}):jsxRuntime.jsx(ui.Text,{size:"xs",children:o.placeholder})},size:"md"})};function Br(e){let{canTrade:t}=e;return jsxRuntime.jsxs("div",{className:"oui-space-y-[2px] xl:oui-space-y-1",children:[jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:"Est. Liq. price"}),jsxRuntime.jsx(ui.Text.numeral,{unit:e.quote,size:"2xs",className:"oui-text-base-contrast-80",unitClassName:"oui-ml-1 oui-text-base-contrast-36",children:t?e.estLiqPrice??"--":"--"})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:"Account leverage"}),jsxRuntime.jsxs(ui.Flex,{gapX:1,className:ui.textVariants({size:"2xs",intensity:80}),children:[jsxRuntime.jsx(ui.Text.numeral,{unit:t?"x":void 0,children:t?e.currentLeverage??"--":"--"}),e.estLeverage&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntime.jsx("path",{d:"M2.505 4.997c0-.23.186-.416.416-.416H6.07L4.833 3.332l.586-.585 1.964 1.95a.42.42 0 0 1 .122.3.42.42 0 0 1-.122.3l-1.964 1.95-.586-.585L6.07 5.413H2.921a.416.416 0 0 1-.416-.416",fill:"#fff",fillOpacity:".54"})}),jsxRuntime.jsx("span",{children:`${e.estLeverage}x`})]})]})]})]})}function Rr(e){let[t,r]=He.useState(false);return jsxRuntime.jsxs(ui.PopoverRoot,{open:t,onOpenChange:r,children:[jsxRuntime.jsx(ui.PopoverTrigger,{asChild:true,children:jsxRuntime.jsx("button",{"data-testid":"oui-testid-orderEntry-additional-button",onClick:()=>{r(true);},children:jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"oui-fill-white/[.36] hover:oui-fill-white/80",children:jsxRuntime.jsx("path",{d:"M3.332 2.665a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667z"})})})}),jsxRuntime.jsx(ui.PopoverContent,{side:"top",align:"end",className:"oui-w-[230px]",children:jsxRuntime.jsx(fe,{...e})})]})}var wr=e=>{let t=[{label:H[types.BBOOrderType.COUNTERPARTY1],value:types.BBOOrderType.COUNTERPARTY1},{label:H[types.BBOOrderType.COUNTERPARTY5],value:types.BBOOrderType.COUNTERPARTY5},{label:H[types.BBOOrderType.QUEUE1],value:types.BBOOrderType.QUEUE1},{label:H[types.BBOOrderType.QUEUE5],value:types.BBOOrderType.QUEUE5}];return jsxRuntime.jsx(ui.Select.options,{testid:"oui-testid-orderEntry-bbo-orderType-button",currentValue:e.value,value:e.value,options:t,onValueChange:e.onChange,contentProps:{className:"oui-bg-base-8 oui-w-full",style:e.contentStyle},size:"sm",classNames:{trigger:"oui-border-none oui-bg-transparent"},valueFormatter:(r,o)=>{let i=t.find(a=>a.value===r);return jsxRuntime.jsx(ui.Box,{children:jsxRuntime.jsx(ui.Text,{size:"sm",children:i?.label})})}})};var ft=e=>{let[t,r]=hooks.useLocalStorage("orderly-order-entry-order-type",types.OrderType.LIMIT),[o,i]=hooks.useLocalStorage("orderly-order-entry-order-side",types.OrderSide.BUY),[a,y]=hooks.useLocalStorage("orderly_order_bbo_type",void 0),u=He.useRef(a),{formattedOrder:s,setValue:f,setValues:T,symbolInfo:p,..._}=hooks.useOrderEntry(e.symbol,{initialOrder:{symbol:e.symbol,order_type:t,side:o}}),[P,$]=hooks.useLocalStorage("orderly-order-entry-tp_sl-switch",false),{state:R}=hooks.useAccount(),{wrongNetwork:A}=reactApp.useAppContext(),C=He.useMemo(()=>(R.status===types.AccountStatusEnum.EnableTrading||R.status===types.AccountStatusEnum.EnableTradingWithoutConnected)&&!A,[R.status,A]),{currentLeverage:q}=hooks.useMarginRatio(),l=hooks.useEventEmitter(),w=He.useRef(4),D=He.useRef(null),K=He.useRef(null),j=He.useRef(null),[le,Te]=He.useState(0),_e=He.useMemo(()=>Number(s.order_quantity)>=Number(_.maxQty)?1:ui.convertValueToPercentage(Number(s.order_quantity??0),0,_.maxQty)/100,[s.order_quantity,_.maxQty]),c=()=>{if(p.base_tick<1)return;let d=hooks.utils.formatNumber(s?.order_quantity,new utils.Decimal(p?.base_tick||"0").toNumber());f("order_quantity",d,{shouldUpdateLastChangedField:false});},G=d=>g=>{w.current=d;},Fe=d=>g=>{setTimeout(()=>{w.current===d&&(w.current=4);},300),d===2&&c();};He.useEffect(()=>{let d=g=>{if(w.current===1)(s.order_type===types.OrderType.STOP_LIMIT||s.order_type===types.OrderType.STOP_MARKET)&&(f("trigger_price",utils.removeTrailingZeros(g[0])),Q(D.current));else if(s.order_type===types.OrderType.STOP_LIMIT||s.order_type===types.OrderType.LIMIT)f("order_price",utils.removeTrailingZeros(g[0])),Q(K.current);else {let E;s.order_type===types.OrderType.STOP_MARKET?(f("trigger_price",utils.removeTrailingZeros(g[0])),Q(D.current),E=types.OrderType.STOP_LIMIT):s.order_type===types.OrderType.MARKET&&(E=types.OrderType.LIMIT),typeof E<"u"&&f("order_type",E),f("order_price",utils.removeTrailingZeros(g[0])),Q(K.current);}function Q(E){setTimeout(()=>{E?.focus();},0);}};return l.on("orderbook:item:click",d),()=>{l.off("orderbook:item:click",d);}},[s,p]);let de=()=>{T({tp_trigger_price:"",sl_trigger_price:""});},gt=()=>{T({order_type_ext:void 0});},yt=()=>{f("order_quantity",_.maxQty);},xt=(d,g,Q)=>{if(d==="order_type"&&r(g),d==="side"&&i(g),d==="reduce_only"&&g||d==="order_type"&&(g===types.OrderType.STOP_LIMIT||g===types.OrderType.STOP_MARKET)){let E={tp_trigger_price:"",sl_trigger_price:"",[d]:g};d==="order_type"&&(E.order_type_ext=""),T(E);return}if(d==="order_type"&&g!==types.OrderType.LIMIT){let E={level:void 0,order_type_ext:void 0,[d]:g};T(E);return}f(d,g,Q);},bt=d=>{$(d),d?gt():de();},oe=He.useMemo(()=>P||[types.OrderType.POST_ONLY,types.OrderType.IOC,types.OrderType.FOK].includes(s.order_type_ext)?"disabled":a&&s.order_type===types.OrderType.LIMIT?"on":"off",[a,P,s.order_type,s.order_type_ext]),Tt=()=>{a?(y(void 0),T({order_type_ext:void 0,level:void 0})):y(u.current||types.BBOOrderType.COUNTERPARTY1);},_t=d=>{y(d),u.current=d;};return He.useEffect(()=>{if(oe==="disabled"){let{order_type_ext:d}=s;T({order_type_ext:pe({order_type_ext:d})?void 0:d,level:void 0});}},[oe,s.order_type_ext]),He.useEffect(()=>{if(oe==="on"){let d=Xe(a,s.side),g=Ze(a);T({order_type_ext:d,level:g});}},[a,oe,s.side]),He.useEffect(()=>{let d=j.current;if(!d)return;let g=new ResizeObserver(Q=>{for(let E of Q){let Me=E.contentRect.width;Me&&Te(Me);}});return g.observe(d),()=>{g.unobserve(d);}},[j,s.order_type_ext]),{..._,currentQtyPercentage:_e,side:s.side,type:s.order_type,level:s.level,setOrderValue:xt,setOrderValues:T,currentLeverage:q,formattedOrder:s,tpslSwitch:P,setTpslSwitch:bt,setMaxQty:yt,symbolInfo:p,onFocus:G,onBlur:Fe,refs:{triggerPriceInputRef:D,priceInputRef:K,priceInputContainerRef:j},canTrade:C,bboStatus:oe,bboType:a,onBBOChange:_t,toggleBBO:Tt,priceInputContainerWidth:le}};var Gr=e=>{let t=ft(e);return jsxRuntime.jsx(Re,{...t,containerRef:e.containerRef})};
|
|
17
17
|
|
|
18
18
|
exports.AdditionalInfoWidget = fe;
|
|
19
19
|
exports.OrderConfirmDialog = Le;
|
package/dist/index.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { AuthGuard } from '@orderly.network/ui-connector';
|
|
2
|
-
import { Grid, registerSimpleDialog, Input,
|
|
2
|
+
import { Grid, registerSimpleDialog, Input, cn, inputFormatter, Flex, Text, Badge, Divider, textVariants, Checkbox, Box, Button, SimpleDropdownMenu, CaretDownIcon, ThrottledButton, Switch, modal, Slider, Select, PopoverRoot, PopoverTrigger, PopoverContent, toast, ExclamationFillIcon, convertValueToPercentage } from '@orderly.network/ui';
|
|
3
3
|
import He, { createContext, forwardRef, useContext, useState, useMemo, useEffect, useRef } from 'react';
|
|
4
|
-
import { BBOOrderType, OrderSide, OrderType,
|
|
4
|
+
import { BBOOrderType, OrderSide, OrderType, OrderLevel, AccountStatusEnum } from '@orderly.network/types';
|
|
5
5
|
import { Decimal, todpIfNeed, removeTrailingZeros } from '@orderly.network/utils';
|
|
6
6
|
import { useLocalStorage, useOrderEntry, useAccount, useMarginRatio, useEventEmitter, utils } from '@orderly.network/hooks';
|
|
7
7
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import { useAppContext } from '@orderly.network/react-app';
|
|
9
9
|
|
|
10
|
-
var Ve=createContext({}),ce=()=>useContext(Ve),he=e=>{let{type:t,values:r}=e,[o,i]=useLocalStorage("TP/SL_Mode","Offset%"),a=useMemo(()=>!r.PnL||!e.values.trigger_price?null:jsxs(Flex,{children:[jsx("span",{className:"oui-text-xs oui-text-base-contrast-54",children:`Est.${o==="PnL"?"ROI":"PNL"}:`}),o==="PnL"?jsx(Text.numeral,{rule:"percentages",className:cn("oui-text-xs oui-ml-1",t==="TP"?"oui-text-trade-profit":"oui-text-trade-loss"),children:r.ROI}):jsx(Text.numeral,{rule:"price",className:cn("oui-text-xs oui-ml-1",t==="TP"?"oui-text-trade-profit":"oui-text-trade-loss"),children:r.PnL})]}),[o,e.values.PnL,e.values.trigger_price]);return jsx(Ve.Provider,{value:{mode:o,setMode:i,tipsEle:a},children:e.children})};var qe=e=>{let{type:t,values:r,quote_dp:o}=e,{mode:i,setMode:a,tipsEle:y}=ce(),[u,s]=useState(!1),f=useMemo(()=>{switch(i){case"Offset":return `${t.toLowerCase()}_offset`;case"Offset%":return `${t.toLowerCase()}_offset_percentage`;default:return `${t.toLowerCase()}_pnl`}},[i]),T=useMemo(()=>r[i],[r,i]),p=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"}],[]),_=useRef("");return {mode:i,modes:p,formatter:C=>{let{dp:q=2}=C;return {onRenderBefore:(l,w)=>(l=`${l}`,t==="SL"&&i==="PnL"&&(l=l.startsWith("-")?l:"-"+l),l===""||l==="-"?"":i==="Offset%"?`${new Decimal(l.replace(new RegExp(_.current.replace(".","\\.")+"$"),"")).mul(100).todp(2,4).toString()}${_.current}`:(i==="Offset"&&(l=todpIfNeed(l,q)),`${l}`)),onSendBefore:l=>{if(/^\-?0{2,}$/.test(l))return "0";if(i==="Offset%"){if(l!==""){l=todpIfNeed(l,2);let w=l.match(/\.0{0,2}$/);w?_.current=w[0]:_.current="",l=new Decimal(l).div(100).toString(),l=`${l}${_.current}`;}}else l=todpIfNeed(l,q);return l===""||l==="-"?"":l}}},onModeChange:C=>{a(C);},onFocus:()=>{s(!0);},onBlur:()=>{s(!1);},value:T,onValueChange:C=>{e.onChange(f,C);},quote_dp:o,tips:u?y:void 0}};var ze=e=>{let{mode:t,modes:r,onModeChange:o,onValueChange:i,quote:a,quote_dp:y,value:u,type:s,tips:f,onFocus:T,onBlur:p}=e,[_,P]=useState(t);useEffect(()=>{P(t),R(t==="Offset%"?"%":a);},[t]);let[$,R]=useState(t==="Offset%"?"%":a);useEffect(()=>{P(u?"":t);},[u]);let A=useMemo(()=>`${s.toLowerCase()}_${t.toLowerCase()}`,[]);return jsx(Input.tooltip,{prefix:_,size:"md",placeholder:$,id:A,align:"right",value:u,tooltip:f,tooltipProps:{content:{side:e.type==="TP"?"top":"bottom"}},"data-testid":e.testIds?.input,autoComplete:"off",onValueChange:i,formatters:[e.formatter({dp:y,mode:t,type:s}),inputFormatter.currencyFormatter],classNames:{root:s==="TP"?"oui-text-trade-profit":"oui-text-trade-loss",additional:"oui-text-base-contrast-54",input:"oui-text-inherit"},onFocus:()=>{P(""),R(""),T();},onBlur:()=>{P(u?"":t),R(t==="Offset%"?"%":a),p();},suffix:jsxs(Fragment,{children:[t==="Offset%"&&!!u&&jsx(Text,{size:"2xs",color:"inherit",className:"oui-ml-[2px]",children:"%"}),jsx(At,{mode:t,modes:r,onModeChange:C=>o(C.value),testId:e.testIds?.dropDown})]})})},At=e=>jsx(SimpleDropdownMenu,{currentValue:e.mode,menu:e.modes,align:"end",size:"xs",className:"oui-min-w-[80px]",onCloseAutoFocus:t=>t.preventDefault(),onSelect:t=>e.onModeChange(t),children:jsx("button",{className:"oui-p-2","data-testid":e.testId,children:jsx(CaretDownIcon,{size:12,color:"white"})})});var Ye=e=>{let{testIds:t,quote:r,...o}=e,i=qe(o);return jsx(ze,{...i,testIds:t,quote:r,type:e.type})};var ne=createContext({}),Ke=ne.Provider;var $e=e=>{let t=He.useRef(null);return useEffect(()=>{e.orderType!==OrderType.LIMIT&&e.orderType!==OrderType.MARKET&&e.onSwitchChanged(!1);},[e.orderType]),e.orderType!==OrderType.LIMIT&&e.orderType!==OrderType.MARKET||e.isReduceOnly?null:jsxs("div",{children:[jsxs(Flex,{itemAlign:"center",gapX:1,children:[jsx(Switch,{id:"order_entry_tpsl",className:"oui-h-[14px]",checked:e.switchState,disabled:e.orderType!==OrderType.LIMIT&&e.orderType!==OrderType.MARKET||e.isReduceOnly,onCheckedChange:r=>{e.onSwitchChanged(r);}}),jsx("label",{htmlFor:"order_entry_tpsl",className:"oui-text-xs",children:"TP/SL"}),jsx(ExclamationFillIcon,{color:"white",size:14,opacity:1,className:"oui-text-white/[.36] hover:oui-text-white/80 oui-cursor-pointer",onClick:()=>{modal.dialog({title:"Tips",size:"xs",content:jsx(Text,{intensity:54,children:"TP/SL triggers at the specified mark price and executes as a market order. By default, it applies to the entire position. Adjust settings in open positions for partial TP/SL."})});}})]}),jsx("div",{className:cn("oui-max-h-0 oui-overflow-hidden oui-transition-all",e.switchState&&"oui-max-h-[100px]"),onTransitionEnd:()=>{t.current?.style.setProperty("opacity",e.switchState?"1":"0");},children:jsx(je,{ref:t,onChange:e.onChange,values:e.values,errors:e.errors,quote_dp:e.quote_dp})})]})},je=He.forwardRef((e,t)=>jsxs("div",{ref:t,className:"oui-transition-all oui-pt-2 oui-pb-2 oui-px-[1px] oui-space-y-1",children:[jsx(he,{values:e.values.tp,type:"TP",children:jsx(Ge,{type:"TP",error:e.errors?e.errors.tp_trigger_price?.message:"",onChange:e.onChange,values:e.values.tp,quote_dp:e.quote_dp,testIds:{first:"oui-testid-orderEntry-tpsl-tpPrice-input",second:"oui-testid-orderEntry-tpsl-tpPnl-input",dropDown:"oui-testid-orderEntry-tpsl-tp-dropDown-trigger-button"}})}),jsx(he,{values:e.values.sl,type:"SL",children:jsx(Ge,{type:"SL",error:e.errors?e.errors.sl_trigger_price?.message:"",onChange:e.onChange,values:e.values.sl,quote_dp:e.quote_dp,testIds:{first:"oui-testid-orderEntry-tpsl-slPrice-input",second:"oui-testid-orderEntry-tpsl-slPnl-input",dropDown:"oui-testid-orderEntry-tpsl-sl-dropDown-trigger-button"}})})]}));je.displayName="TPSLInputForm";var Xt=e=>{let {errorMsgVisible:t}=useContext(ne),{tipsEle:r}=ce(),[o,i]=useState(`${e.type} Price`),[a,y]=useState("USDC"),[u,s]=useState(!1),f=useMemo(()=>e.error&&t?e.error:u?r:null,[e.error,t,u,r]);e.type==="SL"?"sl_trigger_price":"tp_trigger_price";return useEffect(()=>{i(e.values.trigger_price?e.type:`${e.type} Price`);},[e.values.trigger_price]),jsx(Input.tooltip,{"data-testid":e.testId,prefix:o,size:"md",placeholder:a,align:"right",onFocus:()=>{i(e.type),y(""),s(!0);},onBlur:()=>{i(e.values.trigger_price?e.type:`${e.type} Price`),y("USDC"),s(!1);},tooltip:f,tooltipProps:{content:{side:e.type==="TP"?"top":"bottom"}},color:e.error?"danger":void 0,autoComplete:"off",value:e.values.trigger_price,classNames:{additional:"oui-text-base-contrast-54",root:"oui-pr-2 md:oui-pr-3",prefix:"oui-pr-1 md:oui-pr-2"},onValueChange:e.onChange,formatters:[inputFormatter.numberFormatter,inputFormatter.dpFormatter(e.quote_dp??2),inputFormatter.currencyFormatter]})},Ge=e=>{let t=e.type==="SL"?"sl_trigger_price":"tp_trigger_price";return jsxs(Grid,{cols:2,gapX:1,children:[jsx(Xt,{testId:e.testIds?.first,type:e.type,error:e.error,values:e.values??"",onChange:r=>{e.onChange(t,r);},quote_dp:e.quote_dp}),jsx(Ye,{testIds:{input:e.testIds?.second,dropDown:e.testIds?.dropDown},onChange:e.onChange,quote:"USDC",quote_dp:e.quote_dp,type:e.type,values:{PnL:e.values.PnL,Offset:e.values.Offset,"Offset%":e.values["Offset%"],ROI:e.values.ROI}})]})};var H={[BBOOrderType.COUNTERPARTY1]:"Counterparty 1",[BBOOrderType.COUNTERPARTY5]:"Counterparty 5",[BBOOrderType.QUEUE1]:"Queue 1",[BBOOrderType.QUEUE5]:"Queue 5"};function pe(e){let{order_type:t,order_type_ext:r}=e,o=[OrderType.ASK,OrderType.BID].includes(r);return t?t===OrderType.LIMIT&&o:o}function Xe(e,t){if([BBOOrderType.COUNTERPARTY1,BBOOrderType.COUNTERPARTY5].includes(e))return t===OrderSide.BUY?OrderType.ASK:OrderType.BID;if([BBOOrderType.QUEUE1,BBOOrderType.QUEUE5].includes(e))return t===OrderSide.BUY?OrderType.BID:OrderType.ASK}function Ze(e){if([BBOOrderType.COUNTERPARTY1,BBOOrderType.QUEUE1].includes(e))return OrderLevel.ONE;if([BBOOrderType.COUNTERPARTY5,BBOOrderType.QUEUE5].includes(e))return OrderLevel.FIVE}function Je(e){let{type:t,side:r,level:o}=e;if(t===OrderType.ASK){if(o===OrderLevel.ONE)return r===OrderSide.BUY?BBOOrderType.COUNTERPARTY1:BBOOrderType.QUEUE1;if(o===OrderLevel.FIVE)return r===OrderSide.BUY?BBOOrderType.COUNTERPARTY5:BBOOrderType.QUEUE5}if(t===OrderType.BID){if(o===OrderLevel.ONE)return r===OrderSide.BUY?BBOOrderType.QUEUE1:BBOOrderType.COUNTERPARTY1;if(o===OrderLevel.FIVE)return r===OrderSide.BUY?BBOOrderType.QUEUE5:BBOOrderType.COUNTERPARTY5}}var Le=e=>{let{baseDP:t,quoteDP:r,order:o,onConfirm:i,onCancel:a}=e,{side:y,order_type:u,order_type_ext:s,level:f}=o,[T,p]=useLocalStorage("orderly_order_confirm",!0),_=()=>{if(u===OrderType.MARKET||u===OrderType.STOP_MARKET)return jsx(Text,{intensity:80,children:"Market"});if(pe({order_type:u,order_type_ext:s})){let P=Je({type:s,side:y,level:f});return jsx(Text,{intensity:80,children:H[P]})}return jsx(Text.numeral,{unit:"USDC",rule:"price",className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:!1,children:o.order_price})};return jsxs(Fragment,{children:[jsxs(Flex,{justify:"between",children:[jsx(Text.formatted,{rule:"symbol",showIcon:!0,children:o.symbol}),jsxs(Flex,{justify:"end",gapX:1,children:[jsx(ir,{type:u}),y===OrderSide.BUY?jsx(Badge,{color:"buy",size:"sm",children:"Buy"}):jsx(Badge,{color:"sell",size:"sm",children:"Sell"})]})]}),jsx(Divider,{className:"oui-my-4"}),jsxs("div",{className:textVariants({size:"sm",intensity:54,className:"oui-space-y-1"}),children:[jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"Qty."}),jsx(Text.numeral,{rule:"price",dp:t,padding:!1,className:"oui-text-base-contrast",children:o.order_quantity})]}),o.trigger_price?jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"Trigger"}),jsx(Text.numeral,{unit:"USDC",rule:"price",className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:!1,children:o.trigger_price})]}):null,jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"Price"}),_()]}),jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"Notional"}),jsx(Text.numeral,{unit:"USDC",rule:"price",dp:r,padding:!1,className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",children:o.total})]})]}),o.tp_trigger_price||o.sl_trigger_price?jsxs(Fragment,{children:[jsx(Divider,{className:"oui-my-4"}),jsxs("div",{className:textVariants({size:"sm",intensity:54,className:"oui-space-y-1"}),children:[o.tp_trigger_price&&jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"TP Price (Mark)"}),jsx(Text.numeral,{unit:"USDC",rule:"price",coloring:!0,dp:r,padding:!1,unitClassName:"oui-text-base-contrast-36 oui-ml-1",children:o.tp_trigger_price})]}),o.sl_trigger_price&&jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"SL Price (Mark)"}),jsx(Text.numeral,{unit:"USDC",rule:"price",coloring:!0,className:"oui-text-trade-loss",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:!1,children:o.sl_trigger_price})]})]})]}):null,jsxs(Flex,{gapX:1,pt:4,pb:5,children:[jsx(Checkbox,{id:"orderConfirm",color:"white",onCheckedChange:P=>{p(!P);}}),jsx("label",{htmlFor:"orderConfirm",className:textVariants({size:"xs",intensity:54}),children:"Disable order confirmation"})]}),o.tp_trigger_price||o.sl_trigger_price?jsx(Box,{py:3,px:3,className:"oui-text-center",children:jsx(Text,{color:"warning",size:"xs",children:"TP/SL triggers at the specified mark price and executes as a market order."})}):null,jsxs(Grid,{cols:2,gapX:3,children:[jsx(Button,{color:"secondary",size:"md",onClick:()=>a(),children:"Cancel"}),jsx(Button,{size:"md",onClick:()=>i(),children:"Confirm"})]})]})};Le.displayName="OrderConfirmDialog";var ir=e=>{let t=useMemo(()=>{switch(e.type){case OrderType.LIMIT:return "Limit";case OrderType.MARKET:return "Market";case OrderType.STOP_LIMIT:return "Stop Limit";case OrderType.STOP_MARKET:return "Stop Market";default:return ""}},[e.type]);return jsx(Badge,{color:"neutral",size:"sm",children:t})},ar=e=>{let{close:t,resolve:r,reject:o,...i}=e;return jsx(Le,{...i,onCancel:t,onConfirm:()=>{r(),t();}})},Se="orderConfirm";registerSimpleDialog(Se,ar,{size:"sm",title:"Order confirm"});var ot=e=>{let{pinned:t,orderTypeExtra:r}=e,o=i=>a=>{e.onValueChange&&e.onValueChange("order_type_ext",a?i:"");};return useEffect(()=>{e.onValueChange?.("visible_quantity",e.hidden?0:1);},[e.hidden]),jsxs("div",{className:"oui-text-base-contrast-54",children:[jsxs(Flex,{justify:t?"start":"between",mb:3,width:t?"unset":"100%",className:"oui-gap-x-2 md:oui-gap-x-3",children:[jsxs(Flex,{itemAlign:"center",children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-postOnly-checkBox",id:"toggle_order_post_only",className:"oui-peer",color:"white",variant:"radio",disabled:!e.showExtra,checked:r===OrderType.POST_ONLY,onCheckedChange:o(OrderType.POST_ONLY)}),jsx("label",{htmlFor:"toggle_order_post_only",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"Post only"})]}),jsxs(Flex,{itemAlign:"center",children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-ioc-checkBox",id:"toggle_order_iov",color:"white",className:"oui-peer",variant:"radio",checked:r===OrderType.IOC,onCheckedChange:o(OrderType.IOC),disabled:!e.showExtra}),jsx("label",{htmlFor:"toggle_order_iov",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"IOC"})]}),jsxs(Flex,{itemAlign:"center",children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-fox-checkBox",id:"toggle_order_fok",color:"white",variant:"radio",className:"oui-peer",checked:r===OrderType.FOK,onCheckedChange:o(OrderType.FOK),disabled:!e.showExtra}),jsx("label",{htmlFor:"toggle_order_fok",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"FOK"})]})]}),jsxs(Flex,{gapX:6,children:[jsxs(Flex,{children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-orderConfirm-checkBox",id:"toggle_order_confirm",color:"white",checked:e.needConfirm,onCheckedChange:i=>{e.setNeedConfirm(!!i);}}),jsx("label",{htmlFor:"toggle_order_confirm",className:"oui-text-2xs oui-ml-1",children:"Order confirm"})]}),jsxs(Flex,{children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-hidden-checkBox",id:"toggle_order_hidden",color:"white",checked:e.hidden,onCheckedChange:i=>{e.setHidden(i);}}),jsx("label",{htmlFor:"toggle_order_hidden",className:"oui-text-2xs oui-ml-1",children:"Hidden"})]})]}),!t&&jsxs(Fragment,{children:[jsx(Divider,{className:"oui-my-3"}),jsxs(Flex,{children:[jsx(Switch,{"data-testid":"oui-testid-orderEntry-additional-keepVisible-switch",id:"toggle_order_keep_visible",onCheckedChange:i=>{e.setPinned(i);}}),jsx("label",{htmlFor:"toggle_order_keep_visible",className:"oui-text-2xs oui-ml-1",children:"Keep visible"})]})]})]})};var nt=()=>({});var fe=e=>{let t=nt();return jsx(ot,{...t,...e})};var Re=e=>{let{side:t,formattedOrder:r,setOrderValue:o,setOrderValues:i,symbolInfo:a,maxQty:y,freeCollateral:u,helper:s,submit:f,metaState:T,bboStatus:p,bboType:_,onBBOChange:P,toggleBBO:$}=e,{errors:R,validated:A}=T,[C,q]=useState(!1),[l,w]=useLocalStorage("orderly_order_confirm",!0),[D,K]=useLocalStorage("orderly-order-additional-pinned",!0),[j,le]=useLocalStorage("orderly-order-hidden",!1),Te=useMemo(()=>t===OrderSide.BUY?"Buy / Long":"Sell / Short",[t]);useEffect(()=>{A&&q(!0);},[A]),useEffect(()=>{let c=G=>{G.target.closest("#order-entry-submit-button")||q(de=>de&&!1);};return C?document.addEventListener("click",c):document.removeEventListener("click",c),()=>{document.removeEventListener("click",c);}},[C]);let _e=()=>{s.validate().then(c=>l?modal.show(Se,{order:r,quote:a.quote,base:a.base,quoteDP:a.quote_dp,baseDP:a.base_dp}):!0,c=>{if(q(!0),typeof c=="object"&&(c.total!=null||c.order_quantity!=null||c.order_price!=null||c.trigger_price!=null))return Promise.reject()}).then(()=>f().then(c=>{c.success||toast.error(c.message);})).catch(c=>{c!=="cancel"&&typeof c=="object"&&c.message&&toast.error(c.message);});};return jsx(Ke,{value:{errorMsgVisible:C},children:jsxs("div",{className:"oui-space-y-2 xl:oui-space-y-3 oui-text-base-contrast-54",ref:e.containerRef,children:[jsxs(Flex,{gapX:2,className:"oui-flex-col lg:oui-flex-row oui-gap-y-3",children:[jsxs("div",{className:"oui-grid oui-grid-cols-2 oui-w-full oui-flex-1 oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]",children:[jsx(Button,{onClick:()=>{e.setOrderValue("side",OrderSide.BUY);},size:"md",fullWidth:!0,"data-type":OrderSide.BUY,className:cn(t===OrderSide.BUY&&e.canTrade?"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80":"oui-bg-base-7 hover:oui-bg-base-6 active:oui-bg-base-6 oui-text-base-contrast-36"),"data-testid":"oui-testid-orderEntry-side-buy-button",children:"Buy"}),jsx(Button,{onClick:()=>{e.setOrderValue("side",OrderSide.SELL);},"data-type":OrderSide.SELL,fullWidth:!0,size:"md",className:cn(t===OrderSide.SELL&&e.canTrade?"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80":"oui-bg-base-7 hover:oui-bg-base-6 active:oui-bg-base-6 oui-text-base-contrast-36"),"data-testid":"oui-testid-orderEntry-side-sell-button",children:"Sell"})]}),jsx("div",{className:"oui-w-full lg:oui-flex-1",children:jsx(Nr,{type:r.order_type,side:t,canTrade:e.canTrade,onChange:c=>{o("order_type",c);}})})]}),jsxs(Flex,{justify:"between",children:[jsx(Text,{size:"2xs",children:"Available"}),jsx(Text.numeral,{unit:a.quote,size:"2xs",className:"oui-text-base-contrast-80",unitClassName:"oui-ml-1 oui-text-base-contrast-54",dp:2,padding:!1,children:e.canTrade?u:0})]}),jsx(Ir,{type:e.type,symbolInfo:a,values:{quantity:r.order_quantity,price:r.order_price,trigger_price:r.trigger_price,total:r.total,level:r.level,side:r.side,order_type_ext:r.order_type_ext},errors:A?R:null,onChange:(c,G)=>{e.setOrderValue(c,G);},onValuesChange:e.setOrderValues,refs:e.refs,onBlur:e.onBlur,onFocus:e.onFocus,bbo:{bboStatus:p,bboType:_,onBBOChange:P,toggleBBO:$},priceInputContainerWidth:e.priceInputContainerWidth}),jsx(Sr,{canTrade:e.canTrade,maxQty:y,currentQtyPercentage:e.currentQtyPercentage,value:r.order_quantity?Number(r.order_quantity):0,tick:a.base_tick,dp:a.base_dp,setMaxQty:e.setMaxQty,onValueChange:c=>{o("order_quantity",c);},side:e.side}),jsx(AuthGuard,{buttonProps:{fullWidth:!0},children:jsx(ThrottledButton,{fullWidth:!0,id:"order-entry-submit-button","data-type":OrderSide.BUY,className:cn(t===OrderSide.BUY?"orderly-order-entry-submit-button-buy oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80":"orderly-order-entry-submit-button-sell oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80"),onClick:()=>{_e();},loading:e.isMutating,children:Te})}),jsx(Br,{canTrade:e.canTrade,quote:a.quote,estLiqPrice:e.estLiqPrice,estLeverage:e.estLeverage,currentLeverage:e.currentLeverage}),jsx(Divider,{className:"oui-w-full"}),jsx($e,{quote_dp:e.symbolInfo.quote_dp,switchState:e.tpslSwitch,onSwitchChanged:e.setTpslSwitch,orderType:r.order_type,errors:A?R:null,isReduceOnly:r.reduce_only,values:{tp:{trigger_price:r.tp_trigger_price??"",PnL:r.tp_pnl??"",Offset:r.tp_offset??"","Offset%":r.tp_offset_percentage??"",ROI:r.tp_ROI??""},sl:{trigger_price:r.sl_trigger_price??"",PnL:r.sl_pnl??"",Offset:r.sl_offset??"","Offset%":r.sl_offset_percentage??"",ROI:r.sl_ROI??""}},onChange:(c,G)=>{e.setOrderValue(c,G);}}),jsxs(Flex,{justify:"between",itemAlign:"center",className:"!oui-mt-[0px] xl:!oui-mt-3",children:[jsxs(Flex,{itemAlign:"center",gapX:1,children:[jsx(Switch,{"data-testid":"oui-testid-orderEntry-reduceOnly-switch",className:"oui-h-[14px]",id:"reduceOnly",checked:e.formattedOrder.reduce_only,onCheckedChange:c=>{e.setOrderValue("reduce_only",c);}}),jsx("label",{htmlFor:"reduceOnly",className:"oui-text-xs",children:"Reduce only"})]}),!D&&jsx(Rr,{pinned:D,setPinned:K,needConfirm:l,setNeedConfirm:w,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:le})]}),D&&jsxs(Box,{p:2,r:"md",intensity:700,position:"relative",children:[jsx(fe,{pinned:D,setPinned:K,needConfirm:l,setNeedConfirm:w,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:le}),jsx(Er,{onClick:()=>{K(!1);},className:"oui-absolute oui-top-2 oui-right-2 oui-group","data-testid":"oui-testid-orderEntry-pinned-button"})]})]})})},lt="M10.007 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.852-2.523 1.233.361 1.95.015 2.961-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103 5.35 5.35 0 0 0-2.104-1.312c-.448-.15-.808-.208-1.042-.208",Er=e=>{let[t,r]=useState(lt);return jsx("button",{...e,children:jsx("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",onMouseEnter:()=>{r('M10.008 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.15-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.107.507.508.94 1.13 1.119 1.945-.636.61-1.026.658-1.662.323a.67.67 0 0 0-.779.117c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.292-.076 1.773-.48 2.206-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.515 2.226-.514 1.742.001 2.668-.448 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.686-.29-1.047.321-1.67"');},onMouseLeave:()=>{r(lt);},className:"oui-text-primary-darken ",children:jsx("path",{d:t})})})},Ir=e=>{let{type:t,symbolInfo:r,errors:o,values:i,onFocus:a,onBlur:y,bbo:u}=e,s=p=>o&&o[p]?o[p].message:"",f=u.bboStatus==="on",T=t===OrderType.LIMIT?jsxs(Flex,{direction:"column",itemAlign:"end",className:"oui-text-2xs",children:[r.quote,jsx(Flex,{height:20,width:48,justify:"center",itemAlign:"center",r:"base",className:cn("oui-border oui-cursor-pointer oui-mt-[2px] oui-select-none",u.bboStatus==="on"?"oui-border-primary":"oui-border-line-12",u.bboStatus==="disabled"&&"oui-cursor-not-allowed"),onClick:()=>{u.bboStatus==="disabled"?modal.dialog({title:"Tips",size:"xs",content:jsx(Text,{intensity:54,children:"BBO is not supported when TP/SL, Post-Only, IOC, or FOK is selected."})}):u.toggleBBO();},children:jsx(Text,{className:cn(u.bboStatus==="on"&&"oui-text-primary",u.bboStatus==="off"&&"oui-text-base-contrast-54",u.bboStatus==="disabled"&&"oui-text-base-contrast-20"),children:"BBO"})})]}):r.quote;return jsxs("div",{className:"oui-space-y-1",children:[t===OrderType.STOP_LIMIT||t===OrderType.STOP_MARKET?jsx("div",{className:"oui-group",children:jsx(ae,{label:"Trigger",suffix:r.quote,error:s("trigger_price"),id:"trigger",ref:e.refs.triggerPriceInputRef,value:i.trigger_price,onChange:p=>{e.onChange("trigger_price",p);},formatters:[inputFormatter.dpFormatter(r.quote_dp)],onFocus:a(1),onBlur:y(1)})}):null,t===OrderType.LIMIT||t===OrderType.STOP_LIMIT?jsxs("div",{ref:e.refs.priceInputContainerRef,className:"oui-relative oui-group oui-w-full",children:[jsx(ae,{label:"Price",suffix:T,id:"price",value:i.price,error:s("order_price"),ref:e.refs.priceInputRef,onChange:p=>{e.onChange("order_price",p);},formatters:[inputFormatter.dpFormatter(r.quote_dp)],onFocus:a(0),onBlur:y(0),readonly:f,classNames:{root:cn(f&&"focus-within:oui-outline-transparent "),input:cn(f&&"oui-cursor-auto")}}),u.bboStatus==="on"&&jsx("div",{className:cn("oui-absolute oui-left-0 oui-bottom-1"),children:jsx(wr,{value:u.bboType,onChange:u.onBBOChange,contentStyle:{width:e.priceInputContainerWidth}})})]}):null,jsxs(Grid,{cols:2,className:"oui-space-x-1 oui-group",children:[jsx(ae,{label:"Qty",suffix:r.base,id:"order_quantity_input",name:"order_quantity_input",className:"!oui-rounded-br !oui-rounded-tr",value:i.quantity,error:s("order_quantity"),onChange:p=>{e.onChange("order_quantity",p);},formatters:[inputFormatter.dpFormatter(r.base_dp)],onFocus:a(2),onBlur:y(2)}),jsx(ae,{label:"Total\u2248",suffix:r.quote,id:"total",className:"!oui-rounded-bl !oui-rounded-tl",value:i.total,error:s("total"),onChange:p=>{e.onChange("total",p);},onFocus:a(3),onBlur:y(3),formatters:[inputFormatter.dpFormatter(r.quote_dp)]})]})]})},ae=forwardRef((e,t)=>{let{errorMsgVisible:r}=useContext(ne),[o,i]=useState("0");return jsx(Input.tooltip,{ref:t,tooltip:r?e.error:void 0,autoComplete:"off",autoFocus:e.autoFocus,size:"lg",placeholder:e.readonly?"":o,id:e.id,name:e.name,color:e.error?"danger":void 0,prefix:jsx(Lr,{id:e.id,children:e.label}),suffix:e.suffix,value:e.readonly?"":e.value||"",onValueChange:e.onChange,onFocus:a=>{i(""),e.onFocus?.(a);},onBlur:a=>{i("0"),e.onBlur?.(a);},formatters:[...e.formatters??[],inputFormatter.numberFormatter,inputFormatter.currencyFormatter,inputFormatter.decimalPointFormatter],classNames:{root:cn("orderly-order-entry oui-relative oui-pt-8 oui-h-[54px] oui-px-2 oui-py-1 oui-pr-2 oui-border oui-border-solid oui-border-line oui-rounded group-first:oui-rounded-t-xl group-last:oui-rounded-b-xl",e.className,e.classNames?.root),input:cn("oui-mt-5 oui-mb-1 oui-h-5",e?.classNames?.input),prefix:cn("oui-absolute oui-left-2 oui-top-[7px] oui-text-base-contrast-36",e.classNames?.prefix),suffix:cn("oui-absolute oui-right-0 oui-top-0 oui-text-base-contrast-36 oui-text-2xs oui-justify-start oui-py-2",e.classNames?.suffix)},readOnly:e.readonly})});ae.displayName="CustomInput";var Lr=e=>jsx("label",{htmlFor:e.id,className:"oui-absolute oui-left-2 oui-top-[7px] oui-text-base-contrast-36 oui-text-2xs",children:e.children}),Sr=e=>{let{canTrade:t}=e,r=useMemo(()=>t?e.side===OrderSide.BUY?"buy":"sell":void 0,[e.side,t]),o=useMemo(()=>e.side===OrderSide.BUY?"Max buy":"Max sell",[e.side]);return jsxs("div",{children:[jsx(Slider.single,{disabled:e.maxQty===0||!t,value:e.value,color:r,markCount:4,showTip:!0,max:e.maxQty,step:e.tick,onValueChange:e.onValueChange}),jsxs(Flex,{justify:"between",className:"oui-pt-1 xl:oui-pt-2",children:[jsx(Text.numeral,{rule:"percentages",size:"2xs",color:r,dp:2,padding:!1,children:t?e.currentQtyPercentage:0}),jsxs(Flex,{children:[jsx("button",{className:textVariants({size:"2xs",className:"oui-mr-1"}),onClick:()=>e.setMaxQty(),"data-testid":"oui-testid-orderEntry-maxQty-value-button",children:o}),jsx(Text.numeral,{size:"2xs",color:r,dp:e.dp,padding:!1,"data-testid":"oui-testid-orderEntry-maxQty-value",children:t?e.maxQty:0})]})]})]})},Nr=e=>{let t=[{label:"Limit order",value:OrderType.LIMIT},{label:"Market order",value:OrderType.MARKET},{label:"Stop limit",value:OrderType.STOP_LIMIT},{label:"Stop market",value:OrderType.STOP_MARKET}];return jsx(Select.options,{testid:"oui-testid-orderEntry-orderType-button",currentValue:e.type,value:e.type,options:t,onValueChange:e.onChange,contentProps:{className:"oui-bg-base-8 oui-w-full"},valueFormatter:(r,o)=>{let i=t.find(a=>a.value===r);return i?jsx(Text,{size:"xs",color:e.canTrade?e.side===OrderSide.BUY?"buy":"sell":void 0,children:i?.label.replace(" order","")}):jsx(Text,{size:"xs",children:o.placeholder})},size:"md"})};function Br(e){let{canTrade:t}=e;return jsxs("div",{className:"oui-space-y-[2px] xl:oui-space-y-1",children:[jsxs(Flex,{justify:"between",children:[jsx(Text,{size:"2xs",children:"Est. Liq. price"}),jsx(Text.numeral,{unit:e.quote,size:"2xs",className:"oui-text-base-contrast-80",unitClassName:"oui-ml-1 oui-text-base-contrast-36",children:t?e.estLiqPrice??"--":"--"})]}),jsxs(Flex,{justify:"between",children:[jsx(Text,{size:"2xs",children:"Account leverage"}),jsxs(Flex,{gapX:1,className:textVariants({size:"2xs",intensity:80}),children:[jsx(Text.numeral,{unit:t?"x":void 0,children:t?e.currentLeverage??"--":"--"}),e.estLeverage&&jsxs(Fragment,{children:[jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{d:"M2.505 4.997c0-.23.186-.416.416-.416H6.07L4.833 3.332l.586-.585 1.964 1.95a.42.42 0 0 1 .122.3.42.42 0 0 1-.122.3l-1.964 1.95-.586-.585L6.07 5.413H2.921a.416.416 0 0 1-.416-.416",fill:"#fff",fillOpacity:".54"})}),jsx("span",{children:`${e.estLeverage}x`})]})]})]})]})}function Rr(e){let[t,r]=useState(!1);return jsxs(PopoverRoot,{open:t,onOpenChange:r,children:[jsx(PopoverTrigger,{asChild:!0,children:jsx("button",{"data-testid":"oui-testid-orderEntry-additional-button",onClick:()=>{r(!0);},children:jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"oui-fill-white/[.36] hover:oui-fill-white/80",children:jsx("path",{d:"M3.332 2.665a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667z"})})})}),jsx(PopoverContent,{side:"top",align:"end",className:"oui-w-[230px]",children:jsx(fe,{...e})})]})}var wr=e=>{let t=[{label:H[BBOOrderType.COUNTERPARTY1],value:BBOOrderType.COUNTERPARTY1},{label:H[BBOOrderType.COUNTERPARTY5],value:BBOOrderType.COUNTERPARTY5},{label:H[BBOOrderType.QUEUE1],value:BBOOrderType.QUEUE1},{label:H[BBOOrderType.QUEUE5],value:BBOOrderType.QUEUE5}];return jsx(Select.options,{testid:"oui-testid-orderEntry-bbo-orderType-button",currentValue:e.value,value:e.value,options:t,onValueChange:e.onChange,contentProps:{className:"oui-bg-base-8 oui-w-full",style:e.contentStyle},size:"sm",classNames:{trigger:"oui-border-none oui-bg-transparent"},valueFormatter:(r,o)=>{let i=t.find(a=>a.value===r);return jsx(Box,{children:jsx(Text,{size:"sm",children:i?.label})})}})};var ft=e=>{let[t,r]=useLocalStorage("orderly-order-entry-order-type",OrderType.LIMIT),[o,i]=useLocalStorage("orderly-order-entry-order-side",OrderSide.BUY),[a,y]=useLocalStorage("orderly_order_bbo_type",void 0),u=useRef(a),{formattedOrder:s,setValue:f,setValues:T,symbolInfo:p,..._}=useOrderEntry(e.symbol,{initialOrder:{symbol:e.symbol,order_type:t,side:o}}),[P,$]=useLocalStorage("orderly-order-entry-tp_sl-switch",!1),{state:R}=useAccount(),{wrongNetwork:A}=useAppContext(),C=useMemo(()=>(R.status===AccountStatusEnum.EnableTrading||R.status===AccountStatusEnum.EnableTradingWithoutConnected)&&!A,[R.status,A]),{currentLeverage:q}=useMarginRatio(),l=useEventEmitter(),w=useRef(4),D=useRef(null),K=useRef(null),j=useRef(null),[le,Te]=useState(0),_e=useMemo(()=>Number(s.order_quantity)>=Number(_.maxQty)?1:convertValueToPercentage(Number(s.order_quantity??0),0,_.maxQty)/100,[s.order_quantity,_.maxQty]),c=()=>{if(p.base_tick<1)return;let d=utils.formatNumber(s?.order_quantity,new Decimal(p?.base_tick||"0").toNumber());f("order_quantity",d,{shouldUpdateLastChangedField:!1});},G=d=>g=>{w.current=d;},Fe=d=>g=>{setTimeout(()=>{w.current===d&&(w.current=4);},300),d===2&&c();};useEffect(()=>{let d=g=>{if(w.current===1)(s.order_type===OrderType.STOP_LIMIT||s.order_type===OrderType.STOP_MARKET)&&(f("trigger_price",removeTrailingZeros(g[0])),Q(D.current));else if(s.order_type===OrderType.STOP_LIMIT||s.order_type===OrderType.LIMIT)f("order_price",removeTrailingZeros(g[0])),Q(K.current);else {let E;s.order_type===OrderType.STOP_MARKET?(f("trigger_price",removeTrailingZeros(g[0])),Q(D.current),E=OrderType.STOP_LIMIT):s.order_type===OrderType.MARKET&&(E=OrderType.LIMIT),typeof E<"u"&&f("order_type",E),f("order_price",removeTrailingZeros(g[0])),Q(K.current);}function Q(E){setTimeout(()=>{E?.focus();},0);}};return l.on("orderbook:item:click",d),()=>{l.off("orderbook:item:click",d);}},[s,p]);let de=()=>{T({tp_trigger_price:"",sl_trigger_price:""});},gt=()=>{T({order_type_ext:void 0});},yt=()=>{f("order_quantity",_.maxQty);},xt=(d,g,Q)=>{if(d==="order_type"&&r(g),d==="side"&&i(g),d==="reduce_only"&&g||d==="order_type"&&(g===OrderType.STOP_LIMIT||g===OrderType.STOP_MARKET)){let E={tp_trigger_price:"",sl_trigger_price:"",[d]:g};d==="order_type"&&(E.order_type_ext=""),T(E);return}if(d==="order_type"&&g!==OrderType.LIMIT){let E={level:void 0,order_type_ext:void 0,[d]:g};T(E);return}f(d,g,Q);},bt=d=>{$(d),d?gt():de();},oe=useMemo(()=>P||[OrderType.POST_ONLY,OrderType.IOC,OrderType.FOK].includes(s.order_type_ext)?"disabled":a&&s.order_type===OrderType.LIMIT?"on":"off",[a,P,s.order_type,s.order_type_ext]),Tt=()=>{a?(y(void 0),T({order_type_ext:void 0,level:void 0})):y(u.current||BBOOrderType.COUNTERPARTY1);},_t=d=>{y(d),u.current=d;};return useEffect(()=>{if(oe==="disabled"){let{order_type_ext:d}=s;T({order_type_ext:pe({order_type_ext:d})?void 0:d,level:void 0});}},[oe,s.order_type_ext]),useEffect(()=>{if(oe==="on"){let d=Xe(a,s.side),g=Ze(a);T({order_type_ext:d,level:g});}},[a,oe,s.side]),useEffect(()=>{let d=j.current;if(!d)return;let g=new ResizeObserver(Q=>{for(let E of Q){let Me=E.contentRect.width;Me&&Te(Me);}});return g.observe(d),()=>{g.unobserve(d);}},[j,s.order_type_ext]),{..._,currentQtyPercentage:_e,side:s.side,type:s.order_type,level:s.level,setOrderValue:xt,setOrderValues:T,currentLeverage:q,formattedOrder:s,tpslSwitch:P,setTpslSwitch:bt,setMaxQty:yt,symbolInfo:p,onFocus:G,onBlur:Fe,refs:{triggerPriceInputRef:D,priceInputRef:K,priceInputContainerRef:j},canTrade:C,bboStatus:oe,bboType:a,onBBOChange:_t,toggleBBO:Tt,priceInputContainerWidth:le}};var Gr=e=>{let t=ft(e);return jsx(Re,{...t,containerRef:e.containerRef})};
|
|
10
|
+
var Ve=createContext({}),ce=()=>useContext(Ve),he=e=>{let{type:t,values:r}=e,[o,i]=useLocalStorage("TP/SL_Mode","Offset%"),a=useMemo(()=>!r.PnL||!e.values.trigger_price?null:jsxs(Flex,{children:[jsx("span",{className:"oui-text-xs oui-text-base-contrast-54",children:`Est.${o==="PnL"?"ROI":"PNL"}:`}),o==="PnL"?jsx(Text.numeral,{rule:"percentages",className:cn("oui-text-xs oui-ml-1",t==="TP"?"oui-text-trade-profit":"oui-text-trade-loss"),children:r.ROI}):jsx(Text.numeral,{rule:"price",className:cn("oui-text-xs oui-ml-1",t==="TP"?"oui-text-trade-profit":"oui-text-trade-loss"),children:r.PnL})]}),[o,e.values.PnL,e.values.trigger_price]);return jsx(Ve.Provider,{value:{mode:o,setMode:i,tipsEle:a},children:e.children})};var qe=e=>{let{type:t,values:r,quote_dp:o}=e,{mode:i,setMode:a,tipsEle:y}=ce(),[u,s]=useState(false),f=useMemo(()=>{switch(i){case "Offset":return `${t.toLowerCase()}_offset`;case "Offset%":return `${t.toLowerCase()}_offset_percentage`;default:return `${t.toLowerCase()}_pnl`}},[i]),T=useMemo(()=>r[i],[r,i]),p=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"}],[]),_=useRef("");return {mode:i,modes:p,formatter:C=>{let{dp:q=2}=C;return {onRenderBefore:(l,w)=>(l=`${l}`,t==="SL"&&i==="PnL"&&(l=l.startsWith("-")?l:"-"+l),l===""||l==="-"?"":i==="Offset%"?`${new Decimal(l.replace(new RegExp(_.current.replace(".","\\.")+"$"),"")).mul(100).todp(2,4).toString()}${_.current}`:(i==="Offset"&&(l=todpIfNeed(l,q)),`${l}`)),onSendBefore:l=>{if(/^\-?0{2,}$/.test(l))return "0";if(i==="Offset%"){if(l!==""){l=todpIfNeed(l,2);let w=l.match(/\.0{0,2}$/);w?_.current=w[0]:_.current="",l=new Decimal(l).div(100).toString(),l=`${l}${_.current}`;}}else l=todpIfNeed(l,q);return l===""||l==="-"?"":l}}},onModeChange:C=>{a(C);},onFocus:()=>{s(true);},onBlur:()=>{s(false);},value:T,onValueChange:C=>{e.onChange(f,C);},quote_dp:o,tips:u?y:void 0}};var ze=e=>{let{mode:t,modes:r,onModeChange:o,onValueChange:i,quote:a,quote_dp:y,value:u,type:s,tips:f,onFocus:T,onBlur:p}=e,[_,P]=useState(t);useEffect(()=>{P(t),R(t==="Offset%"?"%":a);},[t]);let[$,R]=useState(t==="Offset%"?"%":a);useEffect(()=>{P(u?"":t);},[u]);let A=useMemo(()=>`${s.toLowerCase()}_${t.toLowerCase()}`,[]);return jsx(Input.tooltip,{prefix:_,size:"md",placeholder:$,id:A,align:"right",value:u,tooltip:f,tooltipProps:{content:{side:e.type==="TP"?"top":"bottom"}},"data-testid":e.testIds?.input,autoComplete:"off",onValueChange:i,formatters:[e.formatter({dp:y,mode:t,type:s}),inputFormatter.currencyFormatter],classNames:{root:s==="TP"?"oui-text-trade-profit":"oui-text-trade-loss",additional:"oui-text-base-contrast-54",input:"oui-text-inherit"},onFocus:()=>{P(""),R(""),T();},onBlur:()=>{P(u?"":t),R(t==="Offset%"?"%":a),p();},suffix:jsxs(Fragment,{children:[t==="Offset%"&&!!u&&jsx(Text,{size:"2xs",color:"inherit",className:"oui-ml-[2px]",children:"%"}),jsx(At,{mode:t,modes:r,onModeChange:C=>o(C.value),testId:e.testIds?.dropDown})]})})},At=e=>jsx(SimpleDropdownMenu,{currentValue:e.mode,menu:e.modes,align:"end",size:"xs",className:"oui-min-w-[80px]",onCloseAutoFocus:t=>t.preventDefault(),onSelect:t=>e.onModeChange(t),children:jsx("button",{className:"oui-p-2","data-testid":e.testId,children:jsx(CaretDownIcon,{size:12,color:"white"})})});var Ye=e=>{let{testIds:t,quote:r,...o}=e,i=qe(o);return jsx(ze,{...i,testIds:t,quote:r,type:e.type})};var ne=createContext({}),Ke=ne.Provider;var $e=e=>{let t=He.useRef(null);return useEffect(()=>{e.orderType!==OrderType.LIMIT&&e.orderType!==OrderType.MARKET&&e.onSwitchChanged(false);},[e.orderType]),e.orderType!==OrderType.LIMIT&&e.orderType!==OrderType.MARKET||e.isReduceOnly?null:jsxs("div",{children:[jsxs(Flex,{itemAlign:"center",gapX:1,children:[jsx(Switch,{id:"order_entry_tpsl",className:"oui-h-[14px]",checked:e.switchState,disabled:e.orderType!==OrderType.LIMIT&&e.orderType!==OrderType.MARKET||e.isReduceOnly,onCheckedChange:r=>{e.onSwitchChanged(r);}}),jsx("label",{htmlFor:"order_entry_tpsl",className:"oui-text-xs",children:"TP/SL"}),jsx(ExclamationFillIcon,{color:"white",size:14,opacity:1,className:"oui-text-white/[.36] hover:oui-text-white/80 oui-cursor-pointer",onClick:()=>{modal.dialog({title:"Tips",size:"xs",content:jsx(Text,{intensity:54,children:"TP/SL triggers at the specified mark price and executes as a market order. By default, it applies to the entire position. Adjust settings in open positions for partial TP/SL."})});}})]}),jsx("div",{className:cn("oui-max-h-0 oui-overflow-hidden oui-transition-all",e.switchState&&"oui-max-h-[100px]"),onTransitionEnd:()=>{t.current?.style.setProperty("opacity",e.switchState?"1":"0");},children:jsx(je,{ref:t,onChange:e.onChange,values:e.values,errors:e.errors,quote_dp:e.quote_dp})})]})},je=He.forwardRef((e,t)=>jsxs("div",{ref:t,className:"oui-transition-all oui-pt-2 oui-pb-2 oui-px-[1px] oui-space-y-1",children:[jsx(he,{values:e.values.tp,type:"TP",children:jsx(Ge,{type:"TP",error:e.errors?e.errors.tp_trigger_price?.message:"",onChange:e.onChange,values:e.values.tp,quote_dp:e.quote_dp,testIds:{first:"oui-testid-orderEntry-tpsl-tpPrice-input",second:"oui-testid-orderEntry-tpsl-tpPnl-input",dropDown:"oui-testid-orderEntry-tpsl-tp-dropDown-trigger-button"}})}),jsx(he,{values:e.values.sl,type:"SL",children:jsx(Ge,{type:"SL",error:e.errors?e.errors.sl_trigger_price?.message:"",onChange:e.onChange,values:e.values.sl,quote_dp:e.quote_dp,testIds:{first:"oui-testid-orderEntry-tpsl-slPrice-input",second:"oui-testid-orderEntry-tpsl-slPnl-input",dropDown:"oui-testid-orderEntry-tpsl-sl-dropDown-trigger-button"}})})]}));je.displayName="TPSLInputForm";var Xt=e=>{let {errorMsgVisible:t}=useContext(ne),{tipsEle:r}=ce(),[o,i]=useState(`${e.type} Price`),[a,y]=useState("USDC"),[u,s]=useState(false),f=useMemo(()=>e.error&&t?e.error:u?r:null,[e.error,t,u,r]);e.type==="SL"?"sl_trigger_price":"tp_trigger_price";return useEffect(()=>{i(e.values.trigger_price?e.type:`${e.type} Price`);},[e.values.trigger_price]),jsx(Input.tooltip,{"data-testid":e.testId,prefix:o,size:"md",placeholder:a,align:"right",onFocus:()=>{i(e.type),y(""),s(true);},onBlur:()=>{i(e.values.trigger_price?e.type:`${e.type} Price`),y("USDC"),s(false);},tooltip:f,tooltipProps:{content:{side:e.type==="TP"?"top":"bottom"}},color:e.error?"danger":void 0,autoComplete:"off",value:e.values.trigger_price,classNames:{additional:"oui-text-base-contrast-54",root:"oui-pr-2 md:oui-pr-3",prefix:"oui-pr-1 md:oui-pr-2"},onValueChange:e.onChange,formatters:[inputFormatter.numberFormatter,inputFormatter.dpFormatter(e.quote_dp??2),inputFormatter.currencyFormatter]})},Ge=e=>{let t=e.type==="SL"?"sl_trigger_price":"tp_trigger_price";return jsxs(Grid,{cols:2,gapX:1,children:[jsx(Xt,{testId:e.testIds?.first,type:e.type,error:e.error,values:e.values??"",onChange:r=>{e.onChange(t,r);},quote_dp:e.quote_dp}),jsx(Ye,{testIds:{input:e.testIds?.second,dropDown:e.testIds?.dropDown},onChange:e.onChange,quote:"USDC",quote_dp:e.quote_dp,type:e.type,values:{PnL:e.values.PnL,Offset:e.values.Offset,"Offset%":e.values["Offset%"],ROI:e.values.ROI}})]})};var H={[BBOOrderType.COUNTERPARTY1]:"Counterparty 1",[BBOOrderType.COUNTERPARTY5]:"Counterparty 5",[BBOOrderType.QUEUE1]:"Queue 1",[BBOOrderType.QUEUE5]:"Queue 5"};function pe(e){let{order_type:t,order_type_ext:r}=e,o=[OrderType.ASK,OrderType.BID].includes(r);return t?t===OrderType.LIMIT&&o:o}function Xe(e,t){if([BBOOrderType.COUNTERPARTY1,BBOOrderType.COUNTERPARTY5].includes(e))return t===OrderSide.BUY?OrderType.ASK:OrderType.BID;if([BBOOrderType.QUEUE1,BBOOrderType.QUEUE5].includes(e))return t===OrderSide.BUY?OrderType.BID:OrderType.ASK}function Ze(e){if([BBOOrderType.COUNTERPARTY1,BBOOrderType.QUEUE1].includes(e))return OrderLevel.ONE;if([BBOOrderType.COUNTERPARTY5,BBOOrderType.QUEUE5].includes(e))return OrderLevel.FIVE}function Je(e){let{type:t,side:r,level:o}=e;if(t===OrderType.ASK){if(o===OrderLevel.ONE)return r===OrderSide.BUY?BBOOrderType.COUNTERPARTY1:BBOOrderType.QUEUE1;if(o===OrderLevel.FIVE)return r===OrderSide.BUY?BBOOrderType.COUNTERPARTY5:BBOOrderType.QUEUE5}if(t===OrderType.BID){if(o===OrderLevel.ONE)return r===OrderSide.BUY?BBOOrderType.QUEUE1:BBOOrderType.COUNTERPARTY1;if(o===OrderLevel.FIVE)return r===OrderSide.BUY?BBOOrderType.QUEUE5:BBOOrderType.COUNTERPARTY5}}var Le=e=>{let{baseDP:t,quoteDP:r,order:o,onConfirm:i,onCancel:a}=e,{side:y,order_type:u,order_type_ext:s,level:f}=o,[T,p]=useLocalStorage("orderly_order_confirm",true),_=()=>{if(u===OrderType.MARKET||u===OrderType.STOP_MARKET)return jsx(Text,{intensity:80,children:"Market"});if(pe({order_type:u,order_type_ext:s})){let P=Je({type:s,side:y,level:f});return jsx(Text,{intensity:80,children:H[P]})}return jsx(Text.numeral,{unit:"USDC",rule:"price",className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:false,children:o.order_price})};return jsxs(Fragment,{children:[jsxs(Flex,{justify:"between",children:[jsx(Text.formatted,{rule:"symbol",showIcon:true,children:o.symbol}),jsxs(Flex,{justify:"end",gapX:1,children:[jsx(ir,{type:u}),y===OrderSide.BUY?jsx(Badge,{color:"buy",size:"sm",children:"Buy"}):jsx(Badge,{color:"sell",size:"sm",children:"Sell"})]})]}),jsx(Divider,{className:"oui-my-4"}),jsxs("div",{className:textVariants({size:"sm",intensity:54,className:"oui-space-y-1"}),children:[jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"Qty."}),jsx(Text.numeral,{rule:"price",dp:t,padding:false,className:"oui-text-base-contrast",children:o.order_quantity})]}),o.trigger_price?jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"Trigger"}),jsx(Text.numeral,{unit:"USDC",rule:"price",className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:false,children:o.trigger_price})]}):null,jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"Price"}),_()]}),jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"Notional"}),jsx(Text.numeral,{unit:"USDC",rule:"price",dp:r,padding:false,className:"oui-text-base-contrast",unitClassName:"oui-text-base-contrast-36 oui-ml-1",children:o.total})]})]}),o.tp_trigger_price||o.sl_trigger_price?jsxs(Fragment,{children:[jsx(Divider,{className:"oui-my-4"}),jsxs("div",{className:textVariants({size:"sm",intensity:54,className:"oui-space-y-1"}),children:[o.tp_trigger_price&&jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"TP Price (Mark)"}),jsx(Text.numeral,{unit:"USDC",rule:"price",coloring:true,dp:r,padding:false,unitClassName:"oui-text-base-contrast-36 oui-ml-1",children:o.tp_trigger_price})]}),o.sl_trigger_price&&jsxs(Flex,{justify:"between",children:[jsx(Text,{children:"SL Price (Mark)"}),jsx(Text.numeral,{unit:"USDC",rule:"price",coloring:true,className:"oui-text-trade-loss",unitClassName:"oui-text-base-contrast-36 oui-ml-1",dp:r,padding:false,children:o.sl_trigger_price})]})]})]}):null,jsxs(Flex,{gapX:1,pt:4,pb:5,children:[jsx(Checkbox,{id:"orderConfirm",color:"white",onCheckedChange:P=>{p(!P);}}),jsx("label",{htmlFor:"orderConfirm",className:textVariants({size:"xs",intensity:54}),children:"Disable order confirmation"})]}),o.tp_trigger_price||o.sl_trigger_price?jsx(Box,{py:3,px:3,className:"oui-text-center",children:jsx(Text,{color:"warning",size:"xs",children:"TP/SL triggers at the specified mark price and executes as a market order."})}):null,jsxs(Grid,{cols:2,gapX:3,children:[jsx(Button,{color:"secondary",size:"md",onClick:()=>a(),children:"Cancel"}),jsx(Button,{size:"md",onClick:()=>i(),children:"Confirm"})]})]})};Le.displayName="OrderConfirmDialog";var ir=e=>{let t=useMemo(()=>{switch(e.type){case OrderType.LIMIT:return "Limit";case OrderType.MARKET:return "Market";case OrderType.STOP_LIMIT:return "Stop Limit";case OrderType.STOP_MARKET:return "Stop Market";default:return ""}},[e.type]);return jsx(Badge,{color:"neutral",size:"sm",children:t})},ar=e=>{let{close:t,resolve:r,reject:o,...i}=e;return jsx(Le,{...i,onCancel:t,onConfirm:()=>{r(),t();}})},Se="orderConfirm";registerSimpleDialog(Se,ar,{size:"sm",title:"Order confirm"});var ot=e=>{let{pinned:t,orderTypeExtra:r}=e,o=i=>a=>{e.onValueChange&&e.onValueChange("order_type_ext",a?i:"");};return useEffect(()=>{e.onValueChange?.("visible_quantity",e.hidden?0:1);},[e.hidden]),jsxs("div",{className:"oui-text-base-contrast-54",children:[jsxs(Flex,{justify:t?"start":"between",mb:3,width:t?"unset":"100%",className:"oui-gap-x-2 md:oui-gap-x-3",children:[jsxs(Flex,{itemAlign:"center",children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-postOnly-checkBox",id:"toggle_order_post_only",className:"oui-peer",color:"white",variant:"radio",disabled:!e.showExtra,checked:r===OrderType.POST_ONLY,onCheckedChange:o(OrderType.POST_ONLY)}),jsx("label",{htmlFor:"toggle_order_post_only",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"Post only"})]}),jsxs(Flex,{itemAlign:"center",children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-ioc-checkBox",id:"toggle_order_iov",color:"white",className:"oui-peer",variant:"radio",checked:r===OrderType.IOC,onCheckedChange:o(OrderType.IOC),disabled:!e.showExtra}),jsx("label",{htmlFor:"toggle_order_iov",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"IOC"})]}),jsxs(Flex,{itemAlign:"center",children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-fox-checkBox",id:"toggle_order_fok",color:"white",variant:"radio",className:"oui-peer",checked:r===OrderType.FOK,onCheckedChange:o(OrderType.FOK),disabled:!e.showExtra}),jsx("label",{htmlFor:"toggle_order_fok",className:"oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20",children:"FOK"})]})]}),jsxs(Flex,{gapX:6,children:[jsxs(Flex,{children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-orderConfirm-checkBox",id:"toggle_order_confirm",color:"white",checked:e.needConfirm,onCheckedChange:i=>{e.setNeedConfirm(!!i);}}),jsx("label",{htmlFor:"toggle_order_confirm",className:"oui-text-2xs oui-ml-1",children:"Order confirm"})]}),jsxs(Flex,{children:[jsx(Checkbox,{"data-testid":"oui-testid-orderEntry-hidden-checkBox",id:"toggle_order_hidden",color:"white",checked:e.hidden,onCheckedChange:i=>{e.setHidden(i);}}),jsx("label",{htmlFor:"toggle_order_hidden",className:"oui-text-2xs oui-ml-1",children:"Hidden"})]})]}),!t&&jsxs(Fragment,{children:[jsx(Divider,{className:"oui-my-3"}),jsxs(Flex,{children:[jsx(Switch,{"data-testid":"oui-testid-orderEntry-additional-keepVisible-switch",id:"toggle_order_keep_visible",onCheckedChange:i=>{e.setPinned(i);}}),jsx("label",{htmlFor:"toggle_order_keep_visible",className:"oui-text-2xs oui-ml-1",children:"Keep visible"})]})]})]})};var nt=()=>({});var fe=e=>{let t=nt();return jsx(ot,{...t,...e})};var Re=e=>{let{side:t,formattedOrder:r,setOrderValue:o,setOrderValues:i,symbolInfo:a,maxQty:y,freeCollateral:u,helper:s,submit:f,metaState:T,bboStatus:p,bboType:_,onBBOChange:P,toggleBBO:$}=e,{errors:R,validated:A}=T,[C,q]=useState(false),[l,w]=useLocalStorage("orderly_order_confirm",true),[D,K]=useLocalStorage("orderly-order-additional-pinned",true),[j,le]=useLocalStorage("orderly-order-hidden",false),Te=useMemo(()=>t===OrderSide.BUY?"Buy / Long":"Sell / Short",[t]);useEffect(()=>{A&&q(true);},[A]),useEffect(()=>{let c=G=>{G.target.closest("#order-entry-submit-button")||q(de=>de&&false);};return C?document.addEventListener("click",c):document.removeEventListener("click",c),()=>{document.removeEventListener("click",c);}},[C]);let _e=()=>{s.validate().then(c=>l?modal.show(Se,{order:r,quote:a.quote,base:a.base,quoteDP:a.quote_dp,baseDP:a.base_dp}):true,c=>{if(q(true),typeof c=="object"&&(c.total!=null||c.order_quantity!=null||c.order_price!=null||c.trigger_price!=null))return Promise.reject()}).then(()=>f().then(c=>{c.success||toast.error(c.message);})).catch(c=>{c!=="cancel"&&typeof c=="object"&&c.message&&toast.error(c.message);});};return jsx(Ke,{value:{errorMsgVisible:C},children:jsxs("div",{className:"oui-space-y-2 xl:oui-space-y-3 oui-text-base-contrast-54",ref:e.containerRef,children:[jsxs(Flex,{gapX:2,className:"oui-flex-col lg:oui-flex-row oui-gap-y-3",children:[jsxs("div",{className:"oui-grid oui-grid-cols-2 oui-w-full oui-flex-1 oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]",children:[jsx(Button,{onClick:()=>{e.setOrderValue("side",OrderSide.BUY);},size:"md",fullWidth:true,"data-type":OrderSide.BUY,className:cn(t===OrderSide.BUY&&e.canTrade?"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80":"oui-bg-base-7 hover:oui-bg-base-6 active:oui-bg-base-6 oui-text-base-contrast-36"),"data-testid":"oui-testid-orderEntry-side-buy-button",children:"Buy"}),jsx(Button,{onClick:()=>{e.setOrderValue("side",OrderSide.SELL);},"data-type":OrderSide.SELL,fullWidth:true,size:"md",className:cn(t===OrderSide.SELL&&e.canTrade?"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80":"oui-bg-base-7 hover:oui-bg-base-6 active:oui-bg-base-6 oui-text-base-contrast-36"),"data-testid":"oui-testid-orderEntry-side-sell-button",children:"Sell"})]}),jsx("div",{className:"oui-w-full lg:oui-flex-1",children:jsx(Nr,{type:r.order_type,side:t,canTrade:e.canTrade,onChange:c=>{o("order_type",c);}})})]}),jsxs(Flex,{justify:"between",children:[jsx(Text,{size:"2xs",children:"Available"}),jsx(Text.numeral,{unit:a.quote,size:"2xs",className:"oui-text-base-contrast-80",unitClassName:"oui-ml-1 oui-text-base-contrast-54",dp:2,padding:false,children:e.canTrade?u:0})]}),jsx(Ir,{type:e.type,symbolInfo:a,values:{quantity:r.order_quantity,price:r.order_price,trigger_price:r.trigger_price,total:r.total,level:r.level,side:r.side,order_type_ext:r.order_type_ext},errors:A?R:null,onChange:(c,G)=>{e.setOrderValue(c,G);},onValuesChange:e.setOrderValues,refs:e.refs,onBlur:e.onBlur,onFocus:e.onFocus,bbo:{bboStatus:p,bboType:_,onBBOChange:P,toggleBBO:$},priceInputContainerWidth:e.priceInputContainerWidth}),jsx(Sr,{canTrade:e.canTrade,maxQty:y,currentQtyPercentage:e.currentQtyPercentage,value:r.order_quantity?Number(r.order_quantity):0,tick:a.base_tick,dp:a.base_dp,setMaxQty:e.setMaxQty,onValueChange:c=>{o("order_quantity",c);},side:e.side}),jsx(AuthGuard,{buttonProps:{fullWidth:true},children:jsx(ThrottledButton,{fullWidth:true,id:"order-entry-submit-button","data-type":OrderSide.BUY,className:cn(t===OrderSide.BUY?"orderly-order-entry-submit-button-buy oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80":"orderly-order-entry-submit-button-sell oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80"),onClick:()=>{_e();},loading:e.isMutating,children:Te})}),jsx(Br,{canTrade:e.canTrade,quote:a.quote,estLiqPrice:e.estLiqPrice,estLeverage:e.estLeverage,currentLeverage:e.currentLeverage}),jsx(Divider,{className:"oui-w-full"}),jsx($e,{quote_dp:e.symbolInfo.quote_dp,switchState:e.tpslSwitch,onSwitchChanged:e.setTpslSwitch,orderType:r.order_type,errors:A?R:null,isReduceOnly:r.reduce_only,values:{tp:{trigger_price:r.tp_trigger_price??"",PnL:r.tp_pnl??"",Offset:r.tp_offset??"","Offset%":r.tp_offset_percentage??"",ROI:r.tp_ROI??""},sl:{trigger_price:r.sl_trigger_price??"",PnL:r.sl_pnl??"",Offset:r.sl_offset??"","Offset%":r.sl_offset_percentage??"",ROI:r.sl_ROI??""}},onChange:(c,G)=>{e.setOrderValue(c,G);}}),jsxs(Flex,{justify:"between",itemAlign:"center",className:"!oui-mt-[0px] xl:!oui-mt-3",children:[jsxs(Flex,{itemAlign:"center",gapX:1,children:[jsx(Switch,{"data-testid":"oui-testid-orderEntry-reduceOnly-switch",className:"oui-h-[14px]",id:"reduceOnly",checked:e.formattedOrder.reduce_only,onCheckedChange:c=>{e.setOrderValue("reduce_only",c);}}),jsx("label",{htmlFor:"reduceOnly",className:"oui-text-xs",children:"Reduce only"})]}),!D&&jsx(Rr,{pinned:D,setPinned:K,needConfirm:l,setNeedConfirm:w,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:le})]}),D&&jsxs(Box,{p:2,r:"md",intensity:700,position:"relative",children:[jsx(fe,{pinned:D,setPinned:K,needConfirm:l,setNeedConfirm:w,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:le}),jsx(Er,{onClick:()=>{K(false);},className:"oui-absolute oui-top-2 oui-right-2 oui-group","data-testid":"oui-testid-orderEntry-pinned-button"})]})]})})},lt="M10.007 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.852-2.523 1.233.361 1.95.015 2.961-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103 5.35 5.35 0 0 0-2.104-1.312c-.448-.15-.808-.208-1.042-.208",Er=e=>{let[t,r]=useState(lt);return jsx("button",{...e,children:jsx("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",onMouseEnter:()=>{r('M10.008 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.15-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.107.507.508.94 1.13 1.119 1.945-.636.61-1.026.658-1.662.323a.67.67 0 0 0-.779.117c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.292-.076 1.773-.48 2.206-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.515 2.226-.514 1.742.001 2.668-.448 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.686-.29-1.047.321-1.67"');},onMouseLeave:()=>{r(lt);},className:"oui-text-primary-darken ",children:jsx("path",{d:t})})})},Ir=e=>{let{type:t,symbolInfo:r,errors:o,values:i,onFocus:a,onBlur:y,bbo:u}=e,s=p=>o&&o[p]?o[p].message:"",f=u.bboStatus==="on",T=t===OrderType.LIMIT?jsxs(Flex,{direction:"column",itemAlign:"end",className:"oui-text-2xs",children:[r.quote,jsx(Flex,{height:20,width:48,justify:"center",itemAlign:"center",r:"base",className:cn("oui-border oui-cursor-pointer oui-mt-[2px] oui-select-none",u.bboStatus==="on"?"oui-border-primary":"oui-border-line-12",u.bboStatus==="disabled"&&"oui-cursor-not-allowed"),onClick:()=>{u.bboStatus==="disabled"?modal.dialog({title:"Tips",size:"xs",content:jsx(Text,{intensity:54,children:"BBO is not supported when TP/SL, Post-Only, IOC, or FOK is selected."})}):u.toggleBBO();},children:jsx(Text,{className:cn(u.bboStatus==="on"&&"oui-text-primary",u.bboStatus==="off"&&"oui-text-base-contrast-54",u.bboStatus==="disabled"&&"oui-text-base-contrast-20"),children:"BBO"})})]}):r.quote;return jsxs("div",{className:"oui-space-y-1",children:[t===OrderType.STOP_LIMIT||t===OrderType.STOP_MARKET?jsx("div",{className:"oui-group",children:jsx(ae,{label:"Trigger",suffix:r.quote,error:s("trigger_price"),id:"trigger",ref:e.refs.triggerPriceInputRef,value:i.trigger_price,onChange:p=>{e.onChange("trigger_price",p);},formatters:[inputFormatter.dpFormatter(r.quote_dp)],onFocus:a(1),onBlur:y(1)})}):null,t===OrderType.LIMIT||t===OrderType.STOP_LIMIT?jsxs("div",{ref:e.refs.priceInputContainerRef,className:"oui-relative oui-group oui-w-full",children:[jsx(ae,{label:"Price",suffix:T,id:"price",value:i.price,error:s("order_price"),ref:e.refs.priceInputRef,onChange:p=>{e.onChange("order_price",p);},formatters:[inputFormatter.dpFormatter(r.quote_dp)],onFocus:a(0),onBlur:y(0),readonly:f,classNames:{root:cn(f&&"focus-within:oui-outline-transparent "),input:cn(f&&"oui-cursor-auto")}}),u.bboStatus==="on"&&jsx("div",{className:cn("oui-absolute oui-left-0 oui-bottom-1"),children:jsx(wr,{value:u.bboType,onChange:u.onBBOChange,contentStyle:{width:e.priceInputContainerWidth}})})]}):null,jsxs(Grid,{cols:2,className:"oui-space-x-1 oui-group",children:[jsx(ae,{label:"Qty",suffix:r.base,id:"order_quantity_input",name:"order_quantity_input",className:"!oui-rounded-br !oui-rounded-tr",value:i.quantity,error:s("order_quantity"),onChange:p=>{e.onChange("order_quantity",p);},formatters:[inputFormatter.dpFormatter(r.base_dp)],onFocus:a(2),onBlur:y(2)}),jsx(ae,{label:"Total\u2248",suffix:r.quote,id:"total",className:"!oui-rounded-bl !oui-rounded-tl",value:i.total,error:s("total"),onChange:p=>{e.onChange("total",p);},onFocus:a(3),onBlur:y(3),formatters:[inputFormatter.dpFormatter(r.quote_dp)]})]})]})},ae=forwardRef((e,t)=>{let{errorMsgVisible:r}=useContext(ne),[o,i]=useState("0");return jsx(Input.tooltip,{ref:t,tooltip:r?e.error:void 0,autoComplete:"off",autoFocus:e.autoFocus,size:"lg",placeholder:e.readonly?"":o,id:e.id,name:e.name,color:e.error?"danger":void 0,prefix:jsx(Lr,{id:e.id,children:e.label}),suffix:e.suffix,value:e.readonly?"":e.value||"",onValueChange:e.onChange,onFocus:a=>{i(""),e.onFocus?.(a);},onBlur:a=>{i("0"),e.onBlur?.(a);},formatters:[...e.formatters??[],inputFormatter.numberFormatter,inputFormatter.currencyFormatter,inputFormatter.decimalPointFormatter],classNames:{root:cn("orderly-order-entry oui-relative oui-pt-8 oui-h-[54px] oui-px-2 oui-py-1 oui-pr-2 oui-border oui-border-solid oui-border-line oui-rounded group-first:oui-rounded-t-xl group-last:oui-rounded-b-xl",e.className,e.classNames?.root),input:cn("oui-mt-5 oui-mb-1 oui-h-5",e?.classNames?.input),prefix:cn("oui-absolute oui-left-2 oui-top-[7px] oui-text-base-contrast-36",e.classNames?.prefix),suffix:cn("oui-absolute oui-right-0 oui-top-0 oui-text-base-contrast-36 oui-text-2xs oui-justify-start oui-py-2",e.classNames?.suffix)},readOnly:e.readonly})});ae.displayName="CustomInput";var Lr=e=>jsx("label",{htmlFor:e.id,className:"oui-absolute oui-left-2 oui-top-[7px] oui-text-base-contrast-36 oui-text-2xs",children:e.children}),Sr=e=>{let{canTrade:t}=e,r=useMemo(()=>t?e.side===OrderSide.BUY?"buy":"sell":void 0,[e.side,t]),o=useMemo(()=>e.side===OrderSide.BUY?"Max buy":"Max sell",[e.side]);return jsxs("div",{children:[jsx(Slider.single,{disabled:e.maxQty===0||!t,value:e.value,color:r,markCount:4,showTip:true,max:e.maxQty,step:e.tick,onValueChange:e.onValueChange}),jsxs(Flex,{justify:"between",className:"oui-pt-1 xl:oui-pt-2",children:[jsx(Text.numeral,{rule:"percentages",size:"2xs",color:r,dp:2,padding:false,children:t?e.currentQtyPercentage:0}),jsxs(Flex,{children:[jsx("button",{className:textVariants({size:"2xs",className:"oui-mr-1"}),onClick:()=>e.setMaxQty(),"data-testid":"oui-testid-orderEntry-maxQty-value-button",children:o}),jsx(Text.numeral,{size:"2xs",color:r,dp:e.dp,padding:false,"data-testid":"oui-testid-orderEntry-maxQty-value",children:t?e.maxQty:0})]})]})]})},Nr=e=>{let t=[{label:"Limit order",value:OrderType.LIMIT},{label:"Market order",value:OrderType.MARKET},{label:"Stop limit",value:OrderType.STOP_LIMIT},{label:"Stop market",value:OrderType.STOP_MARKET}];return jsx(Select.options,{testid:"oui-testid-orderEntry-orderType-button",currentValue:e.type,value:e.type,options:t,onValueChange:e.onChange,contentProps:{className:"oui-bg-base-8 oui-w-full"},valueFormatter:(r,o)=>{let i=t.find(a=>a.value===r);return i?jsx(Text,{size:"xs",color:e.canTrade?e.side===OrderSide.BUY?"buy":"sell":void 0,children:i?.label.replace(" order","")}):jsx(Text,{size:"xs",children:o.placeholder})},size:"md"})};function Br(e){let{canTrade:t}=e;return jsxs("div",{className:"oui-space-y-[2px] xl:oui-space-y-1",children:[jsxs(Flex,{justify:"between",children:[jsx(Text,{size:"2xs",children:"Est. Liq. price"}),jsx(Text.numeral,{unit:e.quote,size:"2xs",className:"oui-text-base-contrast-80",unitClassName:"oui-ml-1 oui-text-base-contrast-36",children:t?e.estLiqPrice??"--":"--"})]}),jsxs(Flex,{justify:"between",children:[jsx(Text,{size:"2xs",children:"Account leverage"}),jsxs(Flex,{gapX:1,className:textVariants({size:"2xs",intensity:80}),children:[jsx(Text.numeral,{unit:t?"x":void 0,children:t?e.currentLeverage??"--":"--"}),e.estLeverage&&jsxs(Fragment,{children:[jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{d:"M2.505 4.997c0-.23.186-.416.416-.416H6.07L4.833 3.332l.586-.585 1.964 1.95a.42.42 0 0 1 .122.3.42.42 0 0 1-.122.3l-1.964 1.95-.586-.585L6.07 5.413H2.921a.416.416 0 0 1-.416-.416",fill:"#fff",fillOpacity:".54"})}),jsx("span",{children:`${e.estLeverage}x`})]})]})]})]})}function Rr(e){let[t,r]=useState(false);return jsxs(PopoverRoot,{open:t,onOpenChange:r,children:[jsx(PopoverTrigger,{asChild:true,children:jsx("button",{"data-testid":"oui-testid-orderEntry-additional-button",onClick:()=>{r(true);},children:jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"oui-fill-white/[.36] hover:oui-fill-white/80",children:jsx("path",{d:"M3.332 2.665a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667z"})})})}),jsx(PopoverContent,{side:"top",align:"end",className:"oui-w-[230px]",children:jsx(fe,{...e})})]})}var wr=e=>{let t=[{label:H[BBOOrderType.COUNTERPARTY1],value:BBOOrderType.COUNTERPARTY1},{label:H[BBOOrderType.COUNTERPARTY5],value:BBOOrderType.COUNTERPARTY5},{label:H[BBOOrderType.QUEUE1],value:BBOOrderType.QUEUE1},{label:H[BBOOrderType.QUEUE5],value:BBOOrderType.QUEUE5}];return jsx(Select.options,{testid:"oui-testid-orderEntry-bbo-orderType-button",currentValue:e.value,value:e.value,options:t,onValueChange:e.onChange,contentProps:{className:"oui-bg-base-8 oui-w-full",style:e.contentStyle},size:"sm",classNames:{trigger:"oui-border-none oui-bg-transparent"},valueFormatter:(r,o)=>{let i=t.find(a=>a.value===r);return jsx(Box,{children:jsx(Text,{size:"sm",children:i?.label})})}})};var ft=e=>{let[t,r]=useLocalStorage("orderly-order-entry-order-type",OrderType.LIMIT),[o,i]=useLocalStorage("orderly-order-entry-order-side",OrderSide.BUY),[a,y]=useLocalStorage("orderly_order_bbo_type",void 0),u=useRef(a),{formattedOrder:s,setValue:f,setValues:T,symbolInfo:p,..._}=useOrderEntry(e.symbol,{initialOrder:{symbol:e.symbol,order_type:t,side:o}}),[P,$]=useLocalStorage("orderly-order-entry-tp_sl-switch",false),{state:R}=useAccount(),{wrongNetwork:A}=useAppContext(),C=useMemo(()=>(R.status===AccountStatusEnum.EnableTrading||R.status===AccountStatusEnum.EnableTradingWithoutConnected)&&!A,[R.status,A]),{currentLeverage:q}=useMarginRatio(),l=useEventEmitter(),w=useRef(4),D=useRef(null),K=useRef(null),j=useRef(null),[le,Te]=useState(0),_e=useMemo(()=>Number(s.order_quantity)>=Number(_.maxQty)?1:convertValueToPercentage(Number(s.order_quantity??0),0,_.maxQty)/100,[s.order_quantity,_.maxQty]),c=()=>{if(p.base_tick<1)return;let d=utils.formatNumber(s?.order_quantity,new Decimal(p?.base_tick||"0").toNumber());f("order_quantity",d,{shouldUpdateLastChangedField:false});},G=d=>g=>{w.current=d;},Fe=d=>g=>{setTimeout(()=>{w.current===d&&(w.current=4);},300),d===2&&c();};useEffect(()=>{let d=g=>{if(w.current===1)(s.order_type===OrderType.STOP_LIMIT||s.order_type===OrderType.STOP_MARKET)&&(f("trigger_price",removeTrailingZeros(g[0])),Q(D.current));else if(s.order_type===OrderType.STOP_LIMIT||s.order_type===OrderType.LIMIT)f("order_price",removeTrailingZeros(g[0])),Q(K.current);else {let E;s.order_type===OrderType.STOP_MARKET?(f("trigger_price",removeTrailingZeros(g[0])),Q(D.current),E=OrderType.STOP_LIMIT):s.order_type===OrderType.MARKET&&(E=OrderType.LIMIT),typeof E<"u"&&f("order_type",E),f("order_price",removeTrailingZeros(g[0])),Q(K.current);}function Q(E){setTimeout(()=>{E?.focus();},0);}};return l.on("orderbook:item:click",d),()=>{l.off("orderbook:item:click",d);}},[s,p]);let de=()=>{T({tp_trigger_price:"",sl_trigger_price:""});},gt=()=>{T({order_type_ext:void 0});},yt=()=>{f("order_quantity",_.maxQty);},xt=(d,g,Q)=>{if(d==="order_type"&&r(g),d==="side"&&i(g),d==="reduce_only"&&g||d==="order_type"&&(g===OrderType.STOP_LIMIT||g===OrderType.STOP_MARKET)){let E={tp_trigger_price:"",sl_trigger_price:"",[d]:g};d==="order_type"&&(E.order_type_ext=""),T(E);return}if(d==="order_type"&&g!==OrderType.LIMIT){let E={level:void 0,order_type_ext:void 0,[d]:g};T(E);return}f(d,g,Q);},bt=d=>{$(d),d?gt():de();},oe=useMemo(()=>P||[OrderType.POST_ONLY,OrderType.IOC,OrderType.FOK].includes(s.order_type_ext)?"disabled":a&&s.order_type===OrderType.LIMIT?"on":"off",[a,P,s.order_type,s.order_type_ext]),Tt=()=>{a?(y(void 0),T({order_type_ext:void 0,level:void 0})):y(u.current||BBOOrderType.COUNTERPARTY1);},_t=d=>{y(d),u.current=d;};return useEffect(()=>{if(oe==="disabled"){let{order_type_ext:d}=s;T({order_type_ext:pe({order_type_ext:d})?void 0:d,level:void 0});}},[oe,s.order_type_ext]),useEffect(()=>{if(oe==="on"){let d=Xe(a,s.side),g=Ze(a);T({order_type_ext:d,level:g});}},[a,oe,s.side]),useEffect(()=>{let d=j.current;if(!d)return;let g=new ResizeObserver(Q=>{for(let E of Q){let Me=E.contentRect.width;Me&&Te(Me);}});return g.observe(d),()=>{g.unobserve(d);}},[j,s.order_type_ext]),{..._,currentQtyPercentage:_e,side:s.side,type:s.order_type,level:s.level,setOrderValue:xt,setOrderValues:T,currentLeverage:q,formattedOrder:s,tpslSwitch:P,setTpslSwitch:bt,setMaxQty:yt,symbolInfo:p,onFocus:G,onBlur:Fe,refs:{triggerPriceInputRef:D,priceInputRef:K,priceInputContainerRef:j},canTrade:C,bboStatus:oe,bboType:a,onBBOChange:_t,toggleBBO:Tt,priceInputContainerWidth:le}};var Gr=e=>{let t=ft(e);return jsx(Re,{...t,containerRef:e.containerRef})};
|
|
11
11
|
|
|
12
12
|
export { fe as AdditionalInfoWidget, Le as OrderConfirmDialog, Re as OrderEntry, Gr as OrderEntryWidget };
|
|
13
13
|
//# sourceMappingURL=out.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orderly.network/ui-order-entry",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"access": "public"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@orderly.network/hooks": "2.0.
|
|
16
|
-
"@orderly.network/
|
|
17
|
-
"@orderly.network/ui
|
|
18
|
-
"@orderly.network/
|
|
19
|
-
"@orderly.network/
|
|
20
|
-
"@orderly.network/
|
|
15
|
+
"@orderly.network/hooks": "2.0.4",
|
|
16
|
+
"@orderly.network/ui-connector": "2.0.4",
|
|
17
|
+
"@orderly.network/ui": "2.0.4",
|
|
18
|
+
"@orderly.network/types": "2.0.4",
|
|
19
|
+
"@orderly.network/utils": "2.0.4",
|
|
20
|
+
"@orderly.network/react-app": "2.0.4"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/react": "^18.3.2",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"tailwindcss": "^3.4.4",
|
|
28
28
|
"tsup": "^7.1.0",
|
|
29
29
|
"typescript": "^5.1.6",
|
|
30
|
-
"tsconfig": "0.3.
|
|
30
|
+
"tsconfig": "0.3.20"
|
|
31
31
|
},
|
|
32
32
|
"scripts": {
|
|
33
33
|
"build": "tsup && pnpm run build:css",
|