@orderly.network/ui-order-entry 2.0.7 → 2.0.8-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as _orderly_network_hooks from '@orderly.network/hooks';
2
3
  import * as react from 'react';
3
4
  import { FocusEvent } from 'react';
4
5
  import * as _orderly_network_types from '@orderly.network/types';
@@ -63,390 +64,15 @@ declare const useOrderEntryScript: (inputs: OrderEntryScriptInputs) => {
63
64
  estLiqPrice: number | null;
64
65
  estLeverage: number | null;
65
66
  helper: {
66
- validator: () => Promise<{
67
- symbol?: {
68
- type: string;
69
- message: string;
70
- } | undefined;
71
- order_type?: {
72
- type: string;
73
- message: string;
74
- } | undefined;
75
- order_type_ext?: {
76
- type: string;
77
- message: string;
78
- } | undefined;
79
- order_price?: {
80
- type: string;
81
- message: string;
82
- } | undefined;
83
- order_quantity?: {
84
- type: string;
85
- message: string;
86
- } | undefined;
87
- order_amount?: {
88
- type: string;
89
- message: string;
90
- } | undefined;
91
- visible_quantity?: {
92
- type: string;
93
- message: string;
94
- } | undefined;
95
- side?: {
96
- type: string;
97
- message: string;
98
- } | undefined;
99
- reduce_only?: {
100
- type: string;
101
- message: string;
102
- } | undefined;
103
- slippage?: {
104
- type: string;
105
- message: string;
106
- } | undefined;
107
- order_tag?: {
108
- type: string;
109
- message: string;
110
- } | undefined;
111
- level?: {
112
- type: string;
113
- message: string;
114
- } | undefined;
115
- post_only_adjust?: {
116
- type: string;
117
- message: string;
118
- } | undefined;
119
- total?: {
120
- type: string;
121
- message: string;
122
- } | undefined;
123
- quantity?: {
124
- type: string;
125
- message: string;
126
- } | undefined;
127
- type?: {
128
- type: string;
129
- message: string;
130
- } | undefined;
131
- price?: {
132
- type: string;
133
- message: string;
134
- } | undefined;
135
- algo_type?: {
136
- type: string;
137
- message: string;
138
- } | undefined;
139
- trigger_price_type?: {
140
- type: string;
141
- message: string;
142
- } | undefined;
143
- trigger_price?: {
144
- type: string;
145
- message: string;
146
- } | undefined;
147
- child_orders?: {
148
- type: string;
149
- message: string;
150
- } | undefined;
151
- tp_pnl?: {
152
- type: string;
153
- message: string;
154
- } | undefined;
155
- tp_offset?: {
156
- type: string;
157
- message: string;
158
- } | undefined;
159
- tp_offset_percentage?: {
160
- type: string;
161
- message: string;
162
- } | undefined;
163
- tp_ROI?: {
164
- type: string;
165
- message: string;
166
- } | undefined;
167
- tp_trigger_price?: {
168
- type: string;
169
- message: string;
170
- } | undefined;
171
- sl_pnl?: {
172
- type: string;
173
- message: string;
174
- } | undefined;
175
- sl_offset?: {
176
- type: string;
177
- message: string;
178
- } | undefined;
179
- sl_offset_percentage?: {
180
- type: string;
181
- message: string;
182
- } | undefined;
183
- sl_ROI?: {
184
- type: string;
185
- message: string;
186
- } | undefined;
187
- sl_trigger_price?: {
188
- type: string;
189
- message: string;
190
- } | undefined;
191
- } | null>;
192
- validate: () => Promise<{
193
- symbol?: {
194
- type: string;
195
- message: string;
196
- } | undefined;
197
- order_type?: {
198
- type: string;
199
- message: string;
200
- } | undefined;
201
- order_type_ext?: {
202
- type: string;
203
- message: string;
204
- } | undefined;
205
- order_price?: {
206
- type: string;
207
- message: string;
208
- } | undefined;
209
- order_quantity?: {
210
- type: string;
211
- message: string;
212
- } | undefined;
213
- order_amount?: {
214
- type: string;
215
- message: string;
216
- } | undefined;
217
- visible_quantity?: {
218
- type: string;
219
- message: string;
220
- } | undefined;
221
- side?: {
222
- type: string;
223
- message: string;
224
- } | undefined;
225
- reduce_only?: {
226
- type: string;
227
- message: string;
228
- } | undefined;
229
- slippage?: {
230
- type: string;
231
- message: string;
232
- } | undefined;
233
- order_tag?: {
234
- type: string;
235
- message: string;
236
- } | undefined;
237
- level?: {
238
- type: string;
239
- message: string;
240
- } | undefined;
241
- post_only_adjust?: {
242
- type: string;
243
- message: string;
244
- } | undefined;
245
- total?: {
246
- type: string;
247
- message: string;
248
- } | undefined;
249
- quantity?: {
250
- type: string;
251
- message: string;
252
- } | undefined;
253
- type?: {
254
- type: string;
255
- message: string;
256
- } | undefined;
257
- price?: {
258
- type: string;
259
- message: string;
260
- } | undefined;
261
- algo_type?: {
262
- type: string;
263
- message: string;
264
- } | undefined;
265
- trigger_price_type?: {
266
- type: string;
267
- message: string;
268
- } | undefined;
269
- trigger_price?: {
270
- type: string;
271
- message: string;
272
- } | undefined;
273
- child_orders?: {
274
- type: string;
275
- message: string;
276
- } | undefined;
277
- tp_pnl?: {
278
- type: string;
279
- message: string;
280
- } | undefined;
281
- tp_offset?: {
282
- type: string;
283
- message: string;
284
- } | undefined;
285
- tp_offset_percentage?: {
286
- type: string;
287
- message: string;
288
- } | undefined;
289
- tp_ROI?: {
290
- type: string;
291
- message: string;
292
- } | undefined;
293
- tp_trigger_price?: {
294
- type: string;
295
- message: string;
296
- } | undefined;
297
- sl_pnl?: {
298
- type: string;
299
- message: string;
300
- } | undefined;
301
- sl_offset?: {
302
- type: string;
303
- message: string;
304
- } | undefined;
305
- sl_offset_percentage?: {
306
- type: string;
307
- message: string;
308
- } | undefined;
309
- sl_ROI?: {
310
- type: string;
311
- message: string;
312
- } | undefined;
313
- sl_trigger_price?: {
314
- type: string;
315
- message: string;
316
- } | undefined;
317
- } | null>;
67
+ validator: () => Promise<_orderly_network_hooks.OrderValidationResult | null>;
68
+ validate: () => Promise<_orderly_network_hooks.OrderValidationResult | null>;
318
69
  };
319
70
  freeCollateral: number;
320
71
  metaState: {
321
72
  dirty: { [K in keyof _orderly_network_types.OrderlyOrder]?: boolean; };
322
73
  submitted: boolean;
323
74
  validated: boolean;
324
- errors: {
325
- symbol?: {
326
- type: string;
327
- message: string;
328
- } | undefined;
329
- order_type?: {
330
- type: string;
331
- message: string;
332
- } | undefined;
333
- order_type_ext?: {
334
- type: string;
335
- message: string;
336
- } | undefined;
337
- order_price?: {
338
- type: string;
339
- message: string;
340
- } | undefined;
341
- order_quantity?: {
342
- type: string;
343
- message: string;
344
- } | undefined;
345
- order_amount?: {
346
- type: string;
347
- message: string;
348
- } | undefined;
349
- visible_quantity?: {
350
- type: string;
351
- message: string;
352
- } | undefined;
353
- side?: {
354
- type: string;
355
- message: string;
356
- } | undefined;
357
- reduce_only?: {
358
- type: string;
359
- message: string;
360
- } | undefined;
361
- slippage?: {
362
- type: string;
363
- message: string;
364
- } | undefined;
365
- order_tag?: {
366
- type: string;
367
- message: string;
368
- } | undefined;
369
- level?: {
370
- type: string;
371
- message: string;
372
- } | undefined;
373
- post_only_adjust?: {
374
- type: string;
375
- message: string;
376
- } | undefined;
377
- total?: {
378
- type: string;
379
- message: string;
380
- } | undefined;
381
- quantity?: {
382
- type: string;
383
- message: string;
384
- } | undefined;
385
- type?: {
386
- type: string;
387
- message: string;
388
- } | undefined;
389
- price?: {
390
- type: string;
391
- message: string;
392
- } | undefined;
393
- algo_type?: {
394
- type: string;
395
- message: string;
396
- } | undefined;
397
- trigger_price_type?: {
398
- type: string;
399
- message: string;
400
- } | undefined;
401
- trigger_price?: {
402
- type: string;
403
- message: string;
404
- } | undefined;
405
- child_orders?: {
406
- type: string;
407
- message: string;
408
- } | undefined;
409
- tp_pnl?: {
410
- type: string;
411
- message: string;
412
- } | undefined;
413
- tp_offset?: {
414
- type: string;
415
- message: string;
416
- } | undefined;
417
- tp_offset_percentage?: {
418
- type: string;
419
- message: string;
420
- } | undefined;
421
- tp_ROI?: {
422
- type: string;
423
- message: string;
424
- } | undefined;
425
- tp_trigger_price?: {
426
- type: string;
427
- message: string;
428
- } | undefined;
429
- sl_pnl?: {
430
- type: string;
431
- message: string;
432
- } | undefined;
433
- sl_offset?: {
434
- type: string;
435
- message: string;
436
- } | undefined;
437
- sl_offset_percentage?: {
438
- type: string;
439
- message: string;
440
- } | undefined;
441
- sl_ROI?: {
442
- type: string;
443
- message: string;
444
- } | undefined;
445
- sl_trigger_price?: {
446
- type: string;
447
- message: string;
448
- } | undefined;
449
- } | null;
75
+ errors: _orderly_network_hooks.OrderValidationResult | null;
450
76
  };
451
77
  isMutating: boolean;
452
78
  markPrice: number | undefined;
package/dist/index.js CHANGED
@@ -1,22 +1,23 @@
1
1
  'use strict';
2
2
 
3
3
  var ui = require('@orderly.network/ui');
4
- var He = require('react');
4
+ var je = require('react');
5
5
  var types = require('@orderly.network/types');
6
6
  var utils = require('@orderly.network/utils');
7
7
  var hooks = require('@orderly.network/hooks');
8
+ var i18n = require('@orderly.network/i18n');
8
9
  var jsxRuntime = require('react/jsx-runtime');
9
10
  var reactApp = require('@orderly.network/react-app');
10
11
 
11
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
13
 
13
- var He__default = /*#__PURE__*/_interopDefault(He);
14
+ var je__default = /*#__PURE__*/_interopDefault(je);
14
15
 
15
- 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:v=>{let{dp:D=2}=v;return {onRenderBefore:(d,k)=>(d=`${d}`,t==="SL"&&i==="PnL"&&(d=d.startsWith("-")?d:"-"+d),d===""||d==="-"?"":i==="Offset%"?`${new utils.Decimal(d.replace(new RegExp(_.current.replace(".","\\.")+"$"),"")).mul(100).todp(2,4).toString()}${_.current}`:(i==="Offset"&&(d=utils.todpIfNeed(d,D)),`${d}`)),onSendBefore:d=>{if(/^\-?0{2,}$/.test(d))return "0";if(i==="Offset%"){if(d!==""){d=utils.todpIfNeed(d,2);let k=d.match(/\.0{0,2}$/);k?_.current=k[0]:_.current="",d=new utils.Decimal(d).div(100).toString(),d=`${d}${_.current}`;}}else d=utils.todpIfNeed(d,D);return d===""||d==="-"?"":d}}},onModeChange:v=>{a(v);},onFocus:()=>{s(true);},onBlur:()=>{s(false);},value:T,onValueChange:v=>{e.onChange(f,v);},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 M=He.useMemo(()=>`${s.toLowerCase()}_${t.toLowerCase()}`,[]);return jsxRuntime.jsx(ui.Input.tooltip,{prefix:_,size:"md",placeholder:$,id:M,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(kt,{mode:t,modes:r,onModeChange:v=>o(v.value),testId:e.testIds?.dropDown})]})})},kt=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 ie=He.createContext({}),Ke=ie.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 Zt=e=>{let {errorMsgVisible:t}=He.useContext(ie),{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(Zt,{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(ar,{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 ar=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})},sr=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,sr,{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:M}=T,[v,D]=He.useState(false),[d,k]=hooks.useLocalStorage("orderly_order_confirm",true),[V,K]=hooks.useLocalStorage("orderly-order-additional-pinned",true),[j,X]=hooks.useLocalStorage("orderly-order-hidden",false),Te=He.useMemo(()=>t===types.OrderSide.BUY?"Buy / Long":"Sell / Short",[t]);He.useEffect(()=>{M&&D(true);},[M]),He.useEffect(()=>{let c=G=>{G.target.closest("#order-entry-submit-button")||D(de=>de&&false);};return v?document.addEventListener("click",c):document.removeEventListener("click",c),()=>{document.removeEventListener("click",c);}},[v]);let _e=()=>{s.validate().then(c=>d?ui.modal.show(Se,{order:r,quote:a.quote,base:a.base,quoteDP:a.quote_dp,baseDP:a.base_dp}):true,c=>{if(D(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:v},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:M?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(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,disabled:!e.canTrade,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:M?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"})]}),!V&&jsxRuntime.jsx(Rr,{pinned:V,setPinned:K,needConfirm:d,setNeedConfirm:k,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===types.OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:X})]}),V&&jsxRuntime.jsxs(ui.Box,{p:2,r:"md",intensity:700,position:"relative",children:[jsxRuntime.jsx(fe,{pinned:V,setPinned:K,needConfirm:d,setNeedConfirm:k,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===types.OrderType.LIMIT&&!e.tpslSwitch,hidden:j,setHidden:X}),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(se,{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(se,{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(se,{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(se,{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)]})]})]})},se=He.forwardRef((e,t)=>{let{errorMsgVisible:r}=He.useContext(ie),[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})});se.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:M,disabledConnect:v}=reactApp.useAppContext(),D=He.useMemo(()=>!M&&!v&&(R.status===types.AccountStatusEnum.EnableTrading||R.status===types.AccountStatusEnum.EnableTradingWithoutConnected),[R.status,M,v]),{currentLeverage:d}=hooks.useMarginRatio(),k=hooks.useEventEmitter(),V=He.useRef(4),K=He.useRef(null),j=He.useRef(null),X=He.useRef(null),[Te,_e]=He.useState(0),c=He.useMemo(()=>Number(s.order_quantity)>=Number(_.maxQty)?1:ui.convertValueToPercentage(Number(s.order_quantity??0),0,_.maxQty)/100,[s.order_quantity,_.maxQty]),G=()=>{if(p.base_tick<1)return;let l=hooks.utils.formatNumber(s?.order_quantity,new utils.Decimal(p?.base_tick||"0").toNumber());f("order_quantity",l,{shouldUpdateLastChangedField:false});},Fe=l=>g=>{V.current=l;},de=l=>g=>{setTimeout(()=>{V.current===l&&(V.current=4);},300),l===2&&G();};He.useEffect(()=>{let l=g=>{if(V.current===1)(s.order_type===types.OrderType.STOP_LIMIT||s.order_type===types.OrderType.STOP_MARKET)&&(f("trigger_price",utils.removeTrailingZeros(g[0])),Q(K.current));else if(s.order_type===types.OrderType.STOP_LIMIT||s.order_type===types.OrderType.LIMIT)f("order_price",utils.removeTrailingZeros(g[0])),Q(j.current);else {let E;s.order_type===types.OrderType.STOP_MARKET?(f("trigger_price",utils.removeTrailingZeros(g[0])),Q(K.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(j.current);}function Q(E){setTimeout(()=>{E?.focus();},0);}};return k.on("orderbook:item:click",l),()=>{k.off("orderbook:item:click",l);}},[s,p]);let gt=()=>{T({tp_trigger_price:"",sl_trigger_price:""});},yt=()=>{T({order_type_ext:void 0});},xt=()=>{f("order_quantity",_.maxQty);},bt=(l,g,Q)=>{if(l==="order_type"&&r(g),l==="side"&&i(g),l==="reduce_only"&&g||l==="order_type"&&(g===types.OrderType.STOP_LIMIT||g===types.OrderType.STOP_MARKET)){let E={tp_trigger_price:"",sl_trigger_price:"",[l]:g};l==="order_type"&&(E.order_type_ext=""),T(E);return}if(l==="order_type"&&g!==types.OrderType.LIMIT){let E={level:void 0,order_type_ext:void 0,[l]:g};T(E);return}f(l,g,Q);},Tt=l=>{$(l),l?yt():gt();},ne=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]),_t=()=>{a?(y(void 0),T({order_type_ext:void 0,level:void 0})):y(u.current||types.BBOOrderType.COUNTERPARTY1);},ht=l=>{y(l),u.current=l;};return He.useEffect(()=>{if(ne==="disabled"){let{order_type_ext:l}=s;T({order_type_ext:pe({order_type_ext:l})?void 0:l,level:void 0});}},[ne,s.order_type_ext]),He.useEffect(()=>{if(ne==="on"){let l=Xe(a,s.side),g=Ze(a);T({order_type_ext:l,level:g});}},[a,ne,s.side]),He.useEffect(()=>{let l=X.current;if(!l)return;let g=new ResizeObserver(Q=>{for(let E of Q){let Me=E.contentRect.width;Me&&_e(Me);}});return g.observe(l),()=>{g.unobserve(l);}},[X,s.order_type_ext]),{..._,currentQtyPercentage:c,side:s.side,type:s.order_type,level:s.level,setOrderValue:bt,setOrderValues:T,currentLeverage:d,formattedOrder:s,tpslSwitch:P,setTpslSwitch:Tt,setMaxQty:xt,symbolInfo:p,onFocus:Fe,onBlur:de,refs:{triggerPriceInputRef:K,priceInputRef:j,priceInputContainerRef:X},canTrade:D,bboStatus:ne,bboType:a,onBBOChange:ht,toggleBBO:_t,priceInputContainerWidth:Te}};var Gr=e=>{let t=ft(e);return jsxRuntime.jsx(Re,{...t,containerRef:e.containerRef})};
16
+ var De=je.createContext({}),ce=()=>je.useContext(De),Pe=e=>{let{type:t,values:r}=e,[o,s]=hooks.useLocalStorage("TP/SL_Mode","Offset%"),{t:n}=i18n.useTranslation(),p=je.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:o==="PnL"?n("orderEntry.estRoi"):n("orderEntry.estPnL")}),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(De.Provider,{value:{mode:o,setMode:s,tipsEle:p},children:e.children})};var Qe=e=>{let{type:t,values:r,quote_dp:o}=e,{t:s}=i18n.useTranslation(),{mode:n,setMode:p,tipsEle:c}=ce(),[a,f]=je.useState(false),d=je.useMemo(()=>{switch(n){case "Offset":return `${t.toLowerCase()}_offset`;case "Offset%":return `${t.toLowerCase()}_offset_percentage`;default:return `${t.toLowerCase()}_pnl`}},[n]),_=je.useMemo(()=>r[n],[r,n]),g=je.useMemo(()=>[{label:s("tpsl.pnl"),value:"PnL",testId:"PnL_menu_item"},{label:s("tpsl.offset"),value:"Offset",testId:"Offset_mneu_item"},{label:`${s("tpsl.offset")}%`,value:"Offset%",testId:"Offset%_menu_item"}],[s]),v=je.useMemo(()=>({PnL:s("tpsl.pnl"),Offset:s("tpsl.offset"),"Offset%":`${s("tpsl.offset")}%`}),[s]),T=je.useRef("");return {mode:n,modes:g,modeLabelMap:v,formatter:R=>{let{dp:U=2}=R;return {onRenderBefore:(l,w)=>(l=`${l}`,t==="SL"&&n==="PnL"&&(l=l.startsWith("-")?l:"-"+l),l===""||l==="-"?"":n==="Offset%"?`${new utils.Decimal(l.replace(new RegExp(T.current.replace(".","\\.")+"$"),"")).mul(100).todp(2,4).toString()}${T.current}`:(n==="Offset"&&(l=utils.todpIfNeed(l,U)),`${l}`)),onSendBefore:l=>{if(/^\-?0{2,}$/.test(l))return "0";if(n==="Offset%"){if(l!==""){l=utils.todpIfNeed(l,2);let w=l.match(/\.0{0,2}$/);w?T.current=w[0]:T.current="",l=new utils.Decimal(l).div(100).toString(),l=`${l}${T.current}`;}}else l=utils.todpIfNeed(l,U);return l===""||l==="-"?"":l}}},onModeChange:R=>{p(R);},onFocus:()=>{f(true);},onBlur:()=>{f(false);},value:_,onValueChange:R=>{e.onChange(d,R);},quote_dp:o,tips:a?c:void 0}};var Ge=e=>{let{mode:t,modes:r,modeLabelMap:o,onModeChange:s,onValueChange:n,quote:p,quote_dp:c,value:a,type:f,tips:d,onFocus:_,onBlur:g}=e,[v,T]=je.useState(t),[h,A]=je.useState(t==="Offset%"?"%":p);je.useEffect(()=>{T(t),A(t==="Offset%"?"%":p);},[t]),je.useEffect(()=>{T(a?"":t);},[a]);let V=je.useMemo(()=>`${f.toLowerCase()}_${t.toLowerCase()}`,[]);return jsxRuntime.jsx(ui.Input.tooltip,{prefix:o[v]||v,size:"md",placeholder:h,id:V,align:"right",value:a,tooltip:d,tooltipProps:{content:{side:e.type==="TP"?"top":"bottom"}},"data-testid":e.testIds?.input,autoComplete:"off",onValueChange:n,formatters:[e.formatter({dp:c,mode:t,type:f}),ui.inputFormatter.currencyFormatter],classNames:{root:f==="TP"?"oui-text-trade-profit":"oui-text-trade-loss",additional:"oui-text-base-contrast-54",input:"oui-text-inherit"},onFocus:()=>{T(""),A(""),_();},onBlur:()=>{T(a?"":t),A(t==="Offset%"?"%":p),g();},suffix:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t==="Offset%"&&!!a&&jsxRuntime.jsx(ui.Text,{size:"2xs",color:"inherit",className:"oui-ml-[2px]",children:"%"}),jsxRuntime.jsx(Qt,{mode:t,modes:r,onModeChange:Q=>s(Q.value),testId:e.testIds?.dropDown})]})})},Qt=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 He=e=>{let{testIds:t,quote:r,...o}=e,s=Qe(o);return jsxRuntime.jsx(Ge,{...s,testIds:t,quote:r,type:e.type})};var ne=je.createContext({}),We=ne.Provider;var Je=e=>{let t=je__default.default.useRef(null),{t:r}=i18n.useTranslation();return je.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:o=>{e.onSwitchChanged(o);}}),jsxRuntime.jsx("label",{htmlFor:"order_entry_tpsl",className:"oui-text-xs",children:r("common.tpsl")}),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:r("common.tips"),size:"xs",content:jsxRuntime.jsx(ui.Text,{intensity:54,children:r("orderEntry.tpsl.tips")})});}})]}),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(et,{ref:t,onChange:e.onChange,values:e.values,errors:e.errors,quote_dp:e.quote_dp})})]})},et=je__default.default.forwardRef((e,t)=>{let{parseErrorMsg:r}=reactApp.useOrderEntryFormErrorMsg(e.errors);return 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(Pe,{values:e.values.tp,type:"TP",children:jsxRuntime.jsx($e,{type:"TP",error:r("tp_trigger_price"),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(Pe,{values:e.values.sl,type:"SL",children:jsxRuntime.jsx($e,{type:"SL",error:r("sl_trigger_price"),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"}})})]})});et.displayName="TPSLInputForm";var ir=e=>{let{t}=i18n.useTranslation(),{errorMsgVisible:r}=je.useContext(ne),{tipsEle:o}=ce(),[s,n]=je.useState(`${e.type} Price`),[p,c]=je.useState("USDC"),[a,f]=je.useState(false),d=je.useMemo(()=>e.error&&r?e.error:a?o:null,[e.error,r,a,o]),_=g=>{let v=e.type==="TP"?t("tpsl.tpPrice"):t("tpsl.slPrice");return g&&(v=e.type==="TP"?t("tpsl.tp"):t("tpsl.sl")),v};return je.useEffect(()=>{n(_(e.values.trigger_price));},[e.type,e.values.trigger_price]),jsxRuntime.jsx(ui.Input.tooltip,{"data-testid":e.testId,prefix:s,size:"md",placeholder:p,align:"right",onFocus:()=>{n(e.type==="TP"?t("tpsl.tp"):t("tpsl.sl")),c(""),f(true);},onBlur:()=>{n(_(e.values.trigger_price)),c("USDC"),f(false);},tooltip:d,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]})},$e=e=>{let t=e.type==="SL"?"sl_trigger_price":"tp_trigger_price";return jsxRuntime.jsxs(ui.Grid,{cols:2,gapX:1,children:[jsxRuntime.jsx(ir,{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(He,{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}})]})};function ye(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 tt(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 rt(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 ot(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 Se=e=>{let{baseDP:t,quoteDP:r,order:o,onConfirm:s,onCancel:n}=e,{side:p,order_type:c,order_type_ext:a,level:f}=o,{t:d}=i18n.useTranslation(),[_,g]=hooks.useLocalStorage("orderly_order_confirm",true),v=()=>{if(c===types.OrderType.MARKET||c===types.OrderType.STOP_MARKET)return jsxRuntime.jsx(ui.Text,{intensity:80,children:d("common.marketPrice")});if(ye({order_type:c,order_type_ext:a})){let T=ot({type:a,side:p,level:f}),h={[types.BBOOrderType.COUNTERPARTY1]:d("orderEntry.bbo.counterparty1"),[types.BBOOrderType.COUNTERPARTY5]:d("orderEntry.bbo.counterparty5"),[types.BBOOrderType.QUEUE1]:d("orderEntry.bbo.queue1"),[types.BBOOrderType.QUEUE5]:d("orderEntry.bbo.queue5")}[T];return jsxRuntime.jsx(ui.Text,{intensity:80,children:h})}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(yr,{type:c}),p===types.OrderSide.BUY?jsxRuntime.jsx(ui.Badge,{color:"buy",size:"sm",children:d("common.buy")}):jsxRuntime.jsx(ui.Badge,{color:"sell",size:"sm",children:d("common.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:d("common.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:d("common.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:d("common.price")}),v()]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{children:d("common.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:d("orderEntry.tpMarkPrice")}),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:d("orderEntry.slMarkPrice")}),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:T=>{g(!T);}}),jsxRuntime.jsx("label",{htmlFor:"orderConfirm",className:ui.textVariants({size:"xs",intensity:54}),children:d("orderEntry.disableOrderConfirm")})]}),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:d("orderEntry.tpsl.trigger.description")})}):null,jsxRuntime.jsxs(ui.Grid,{cols:2,gapX:3,children:[jsxRuntime.jsx(ui.Button,{color:"secondary",size:"md",onClick:()=>n(),children:d("common.cancel")}),jsxRuntime.jsx(ui.Button,{size:"md",onClick:()=>s(),children:d("common.confirm")})]})]})};Se.displayName="OrderConfirmDialog";var yr=e=>{let{t}=i18n.useTranslation(),r=je.useMemo(()=>{switch(e.type){case types.OrderType.LIMIT:return t("orderEntry.orderType.limit");case types.OrderType.MARKET:return t("common.marketPrice");case types.OrderType.STOP_LIMIT:return t("orderEntry.orderType.stopLimit");case types.OrderType.STOP_MARKET:return t("orderEntry.orderType.stopMarket");default:return ""}},[e.type]);return jsxRuntime.jsx(ui.Badge,{color:"neutral",size:"sm",children:r})},fr=e=>{let{close:t,resolve:r,reject:o,...s}=e;return jsxRuntime.jsx(Se,{...s,onCancel:t,onConfirm:()=>{r(),t();}})},Be="orderConfirm";ui.registerSimpleDialog(Be,fr,{size:"sm",title:()=>i18n.i18n.t("orderEntry.orderConfirm")});var dt=e=>{let{pinned:t,orderTypeExtra:r}=e,{t:o}=i18n.useTranslation(),s=n=>p=>{e.onValueChange&&e.onValueChange("order_type_ext",p?n:"");};return je.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",wrap:"wrap",gapY:1,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:s(types.OrderType.POST_ONLY)}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_post_only",className:ui.cn("oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20","oui-break-normal oui-whitespace-nowrap"),children:o("orderEntry.orderType.postOnly")})]}),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:s(types.OrderType.IOC),disabled:!e.showExtra}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_iov",className:ui.cn("oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20","oui-break-normal oui-whitespace-nowrap"),children:o("orderEntry.orderType.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:s(types.OrderType.FOK),disabled:!e.showExtra}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_fok",className:ui.cn("oui-text-2xs oui-ml-1 peer-data-[disabled]:oui-text-base-contrast-20","oui-break-normal oui-whitespace-nowrap"),children:o("orderEntry.orderType.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:n=>{e.setNeedConfirm(!!n);}}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_confirm",className:"oui-text-2xs oui-ml-1",children:o("orderEntry.orderConfirm")})]}),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:n=>{e.setHidden(n);}}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_hidden",className:"oui-text-2xs oui-ml-1",children:o("orderEntry.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:n=>{e.setPinned(n);}}),jsxRuntime.jsx("label",{htmlFor:"toggle_order_keep_visible",className:"oui-text-2xs oui-ml-1",children:o("orderEntry.keepVisible")})]})]})]})};var lt=()=>({});var ge=e=>{let t=lt();return jsxRuntime.jsx(dt,{...t,...e})};var Re=e=>{let{side:t,formattedOrder:r,setOrderValue:o,setOrderValues:s,symbolInfo:n,maxQty:p,freeCollateral:c,helper:a,submit:f,metaState:d,bboStatus:_,bboType:g,onBBOChange:v,toggleBBO:T}=e,{t:h}=i18n.useTranslation(),{errors:A,validated:V}=d,[Q,R]=je.useState(false),[U,l]=hooks.useLocalStorage("orderly_order_confirm",true),[w,G]=hooks.useLocalStorage("orderly-order-additional-pinned",true),[$,de]=hooks.useLocalStorage("orderly-order-hidden",false),Oe=je.useMemo(()=>t===types.OrderSide.BUY?h("orderEntry.buyLong"):h("orderEntry.sellShort"),[t,h]);je.useEffect(()=>{V&&R(true);},[V]),je.useEffect(()=>{let m=H=>{H.target.closest("#order-entry-submit-button")||R(le=>le&&false);};return Q?document.addEventListener("click",m):document.removeEventListener("click",m),()=>{document.removeEventListener("click",m);}},[Q]);let Ee=()=>{a.validate().then(m=>U?ui.modal.show(Be,{order:r,quote:n.quote,base:n.base,quoteDP:n.quote_dp,baseDP:n.base_dp}):true,m=>{if(R(true),typeof m=="object"&&(m.total!=null||m.order_quantity!=null||m.order_price!=null||m.trigger_price!=null))return Promise.reject()}).then(()=>f().then(m=>{m.success||ui.toast.error(m.message);})).catch(m=>{m!=="cancel"&&typeof m=="object"&&m.message&&ui.toast.error(m.message);});};return jsxRuntime.jsx(We,{value:{errorMsgVisible:Q},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:h("common.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:h("common.sell")})]}),jsxRuntime.jsx("div",{className:"oui-w-full lg:oui-flex-1",children:jsxRuntime.jsx(Ur,{type:r.order_type,side:t,canTrade:e.canTrade,onChange:m=>{o("order_type",m);}})})]}),jsxRuntime.jsxs(ui.Flex,{justify:"between",children:[jsxRuntime.jsx(ui.Text,{size:"2xs",children:h("common.available")}),jsxRuntime.jsx(ui.Text.numeral,{unit:n.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?c:0})]}),jsxRuntime.jsx(Ar,{type:e.type,symbolInfo:n,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:V?A:null,onChange:(m,H)=>{e.setOrderValue(m,H);},onValuesChange:e.setOrderValues,refs:e.refs,onBlur:e.onBlur,onFocus:e.onFocus,bbo:{bboStatus:_,bboType:g,onBBOChange:v,toggleBBO:T},priceInputContainerWidth:e.priceInputContainerWidth}),jsxRuntime.jsx(qr,{canTrade:e.canTrade,maxQty:p,currentQtyPercentage:e.currentQtyPercentage,value:r.order_quantity?Number(r.order_quantity):0,tick:n.base_tick,dp:n.base_dp,setMaxQty:e.setMaxQty,onValueChange:m=>{o("order_quantity",m);},side:e.side}),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:()=>{Ee();},loading:e.isMutating,disabled:!e.canTrade,children:Oe}),jsxRuntime.jsx(Dr,{canTrade:e.canTrade,quote:n.quote,estLiqPrice:e.estLiqPrice,estLeverage:e.estLeverage,currentLeverage:e.currentLeverage}),jsxRuntime.jsx(ui.Divider,{className:"oui-w-full"}),jsxRuntime.jsx(Je,{quote_dp:e.symbolInfo.quote_dp,switchState:e.tpslSwitch,onSwitchChanged:e.setTpslSwitch,orderType:r.order_type,errors:V?A: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:(m,H)=>{e.setOrderValue(m,H);}}),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:m=>{e.setOrderValue("reduce_only",m);}}),jsxRuntime.jsx("label",{htmlFor:"reduceOnly",className:"oui-text-xs",children:h("orderEntry.reduceOnly")})]}),!w&&jsxRuntime.jsx(zr,{pinned:w,setPinned:G,needConfirm:U,setNeedConfirm:l,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===types.OrderType.LIMIT&&!e.tpslSwitch,hidden:$,setHidden:de})]}),w&&jsxRuntime.jsxs(ui.Box,{p:2,r:"md",intensity:700,position:"relative",children:[jsxRuntime.jsx(ge,{pinned:w,setPinned:G,needConfirm:U,setNeedConfirm:l,onValueChange:o,orderTypeExtra:r.order_type_ext,showExtra:r.order_type===types.OrderType.LIMIT&&!e.tpslSwitch,hidden:$,setHidden:de}),jsxRuntime.jsx(kr,{onClick:()=>{G(false);},className:"oui-absolute oui-top-2 oui-right-2 oui-group","data-testid":"oui-testid-orderEntry-pinned-button"})]})]})})},pt="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",kr=e=>{let[t,r]=je.useState(pt);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(pt);},className:"oui-text-primary-darken ",children:jsxRuntime.jsx("path",{d:t})})})},Ar=e=>{let{type:t,symbolInfo:r,errors:o,values:s,onFocus:n,onBlur:p,bbo:c}=e,{t:a}=i18n.useTranslation(),{parseErrorMsg:f}=reactApp.useOrderEntryFormErrorMsg(o),d=c.bboStatus==="on",_=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,px:3,justify:"center",itemAlign:"center",r:"base",className:ui.cn("oui-border oui-cursor-pointer oui-mt-[2px] oui-select-none",c.bboStatus==="on"?"oui-border-primary":"oui-border-line-12",c.bboStatus==="disabled"&&"oui-cursor-not-allowed"),onClick:()=>{c.bboStatus==="disabled"?ui.modal.dialog({title:a("common.tips"),size:"xs",content:jsxRuntime.jsx(ui.Text,{intensity:54,children:a("orderEntry.bbo.disabled.tips")})}):c.toggleBBO();},children:jsxRuntime.jsx(ui.Text,{className:ui.cn(c.bboStatus==="on"&&"oui-text-primary",c.bboStatus==="off"&&"oui-text-base-contrast-54",c.bboStatus==="disabled"&&"oui-text-base-contrast-20"),children:a("orderEntry.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:a("common.trigger"),suffix:r.quote,error:f("trigger_price"),id:"trigger",ref:e.refs.triggerPriceInputRef,value:s.trigger_price,onChange:g=>{e.onChange("trigger_price",g);},formatters:[ui.inputFormatter.dpFormatter(r.quote_dp)],onFocus:n(1),onBlur:p(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:a("common.price"),suffix:_,id:"price",value:s.price,error:f("order_price"),ref:e.refs.priceInputRef,onChange:g=>{e.onChange("order_price",g);},formatters:[ui.inputFormatter.dpFormatter(r.quote_dp)],onFocus:n(0),onBlur:p(0),readonly:d,classNames:{root:ui.cn(d&&"focus-within:oui-outline-transparent "),input:ui.cn(d&&"oui-cursor-auto")}}),c.bboStatus==="on"&&jsxRuntime.jsx("div",{className:ui.cn("oui-absolute oui-left-0 oui-bottom-1"),children:jsxRuntime.jsx(Qr,{value:c.bboType,onChange:c.onBBOChange,contentStyle:{width:e.priceInputContainerWidth}})})]}):null,jsxRuntime.jsxs(ui.Grid,{cols:2,className:"oui-space-x-1 oui-group",children:[jsxRuntime.jsx(ae,{label:a("common.qty"),suffix:r.base,id:"order_quantity_input",name:"order_quantity_input",className:"!oui-rounded-br !oui-rounded-tr",value:s.quantity,error:f("order_quantity"),onChange:g=>{e.onChange("order_quantity",g);},formatters:[ui.inputFormatter.dpFormatter(r.base_dp)],onFocus:n(2),onBlur:p(2)}),jsxRuntime.jsx(ae,{label:`${a("common.total")}\u2248`,suffix:r.quote,id:"total",className:"!oui-rounded-bl !oui-rounded-tl",value:s.total,error:f("total"),onChange:g=>{e.onChange("total",g);},onFocus:n(3),onBlur:p(3),formatters:[ui.inputFormatter.dpFormatter(r.quote_dp)]})]})]})},ae=je.forwardRef((e,t)=>{let{errorMsgVisible:r}=je.useContext(ne),[o,s]=je.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(Vr,{id:e.id,children:e.label}),suffix:e.suffix,value:e.readonly?"":e.value||"",onValueChange:e.onChange,onFocus:n=>{s(""),e.onFocus?.(n);},onBlur:n=>{s("0"),e.onBlur?.(n);},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 Vr=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}),qr=e=>{let{canTrade:t}=e,{t:r}=i18n.useTranslation(),o=je.useMemo(()=>t?e.side===types.OrderSide.BUY?"buy":"sell":void 0,[e.side,t]),s=je.useMemo(()=>e.side===types.OrderSide.BUY?r("orderEntry.maxBuy"):r("orderEntry.maxSell"),[e.side,r]);return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(ui.Slider.single,{disabled:e.maxQty===0||!t,value:e.value,color:o,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:o,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:s}),jsxRuntime.jsx(ui.Text.numeral,{size:"2xs",color:o,dp:e.dp,padding:false,"data-testid":"oui-testid-orderEntry-maxQty-value",children:t?e.maxQty:0})]})]})]})},Ur=e=>{let{t}=i18n.useTranslation(),r=[{label:t("orderEntry.orderType.limitOrder"),value:types.OrderType.LIMIT},{label:t("orderEntry.orderType.marketOrder"),value:types.OrderType.MARKET},{label:t("orderEntry.orderType.stopLimit"),value:types.OrderType.STOP_LIMIT},{label:t("orderEntry.orderType.stopMarket"),value:types.OrderType.STOP_MARKET}];return jsxRuntime.jsx(ui.Select.options,{testid:"oui-testid-orderEntry-orderType-button",currentValue:e.type,value:e.type,options:r,onValueChange:e.onChange,contentProps:{className:"oui-bg-base-8 oui-w-full"},valueFormatter:(o,s)=>{if(!r.find(c=>c.value===o))return jsxRuntime.jsx(ui.Text,{size:"xs",children:s.placeholder});let p={[types.OrderType.LIMIT]:t("orderEntry.orderType.limit"),[types.OrderType.MARKET]:t("common.marketPrice"),[types.OrderType.STOP_LIMIT]:t("orderEntry.orderType.stopLimit"),[types.OrderType.STOP_MARKET]:t("orderEntry.orderType.stopMarket")}[o];return jsxRuntime.jsx(ui.Text,{size:"xs",color:e.canTrade?e.side===types.OrderSide.BUY?"buy":"sell":void 0,children:p})},size:"md"})};function Dr(e){let{canTrade:t}=e,{t:r}=i18n.useTranslation();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:r("orderEntry.estLiqPrice")}),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:r("leverage.accountLeverage")}),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 zr(e){let[t,r]=je.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(ge,{...e})})]})}var Qr=e=>{let{t}=i18n.useTranslation(),r=[{label:t("orderEntry.bbo.counterparty1"),value:types.BBOOrderType.COUNTERPARTY1},{label:t("orderEntry.bbo.counterparty5"),value:types.BBOOrderType.COUNTERPARTY5},{label:t("orderEntry.bbo.queue1"),value:types.BBOOrderType.QUEUE1},{label:t("orderEntry.bbo.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:r,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:(o,s)=>{let n=r.find(p=>p.value===o);return jsxRuntime.jsx(ui.Box,{children:jsxRuntime.jsx(ui.Text,{size:"sm",children:n?.label})})}})};var Tt=e=>{let[t,r]=hooks.useLocalStorage("orderly-order-entry-order-type",types.OrderType.LIMIT),[o,s]=hooks.useLocalStorage("orderly-order-entry-order-side",types.OrderSide.BUY),[n,p]=hooks.useLocalStorage("orderly_order_bbo_type",void 0),c=je.useRef(n),{formattedOrder:a,setValue:f,setValues:d,symbolInfo:_,...g}=hooks.useOrderEntry(e.symbol,{initialOrder:{symbol:e.symbol,order_type:t,side:o}}),[v,T]=hooks.useLocalStorage("orderly-order-entry-tp_sl-switch",false),{state:h}=hooks.useAccount(),{wrongNetwork:A,disabledConnect:V}=reactApp.useAppContext(),Q=je.useMemo(()=>!A&&!V&&(h.status===types.AccountStatusEnum.EnableTrading||h.status===types.AccountStatusEnum.EnableTradingWithoutConnected),[h.status,A,V]),{currentLeverage:R}=hooks.useMarginRatio(),U=hooks.useEventEmitter(),l=je.useRef(4),w=je.useRef(null),G=je.useRef(null),$=je.useRef(null),[de,Oe]=je.useState(0),Ee=je.useMemo(()=>Number(a.order_quantity)>=Number(g.maxQty)?1:ui.convertValueToPercentage(Number(a.order_quantity??0),0,g.maxQty)/100,[a.order_quantity,g.maxQty]),m=()=>{if(_.base_tick<1)return;let u=hooks.utils.formatNumber(a?.order_quantity,new utils.Decimal(_?.base_tick||"0").toNumber());f("order_quantity",u,{shouldUpdateLastChangedField:false});},H=u=>b=>{l.current=u;},Ae=u=>b=>{setTimeout(()=>{l.current===u&&(l.current=4);},300),u===2&&m();};je.useEffect(()=>{let u=b=>{if(l.current===1)(a.order_type===types.OrderType.STOP_LIMIT||a.order_type===types.OrderType.STOP_MARKET)&&(f("trigger_price",utils.removeTrailingZeros(b[0])),Y(w.current));else if(a.order_type===types.OrderType.STOP_LIMIT||a.order_type===types.OrderType.LIMIT)f("order_price",utils.removeTrailingZeros(b[0])),Y(G.current);else {let L;a.order_type===types.OrderType.STOP_MARKET?(f("trigger_price",utils.removeTrailingZeros(b[0])),Y(w.current),L=types.OrderType.STOP_LIMIT):a.order_type===types.OrderType.MARKET&&(L=types.OrderType.LIMIT),typeof L<"u"&&f("order_type",L),f("order_price",utils.removeTrailingZeros(b[0])),Y(G.current);}function Y(L){setTimeout(()=>{L?.focus();},0);}};return U.on("orderbook:item:click",u),()=>{U.off("orderbook:item:click",u);}},[a,_]);let le=()=>{d({tp_trigger_price:"",sl_trigger_price:""});},_t=()=>{d({order_type_ext:void 0});},ht=()=>{f("order_quantity",g.maxQty);},Ot=(u,b,Y)=>{if(u==="order_type"&&r(b),u==="side"&&s(b),u==="reduce_only"&&b||u==="order_type"&&(b===types.OrderType.STOP_LIMIT||b===types.OrderType.STOP_MARKET)){let L={tp_trigger_price:"",sl_trigger_price:"",[u]:b};u==="order_type"&&(L.order_type_ext=""),d(L);return}if(u==="order_type"&&b!==types.OrderType.LIMIT){let L={level:void 0,order_type_ext:void 0,[u]:b};d(L);return}f(u,b,Y);},Et=u=>{T(u),u?_t():le();},oe=je.useMemo(()=>v||[types.OrderType.POST_ONLY,types.OrderType.IOC,types.OrderType.FOK].includes(a.order_type_ext)?"disabled":n&&a.order_type===types.OrderType.LIMIT?"on":"off",[n,v,a.order_type,a.order_type_ext]),Pt=()=>{n?(p(void 0),d({order_type_ext:void 0,level:void 0})):p(c.current||types.BBOOrderType.COUNTERPARTY1);},vt=u=>{p(u),c.current=u;};return je.useEffect(()=>{if(oe==="disabled"){let{order_type_ext:u}=a;d({order_type_ext:ye({order_type_ext:u})?void 0:u,level:void 0});}},[oe,a.order_type_ext]),je.useEffect(()=>{if(oe==="on"){let u=tt(n,a.side),b=rt(n);d({order_type_ext:u,level:b});}},[n,oe,a.side]),je.useEffect(()=>{let u=$.current;if(!u)return;let b=new ResizeObserver(Y=>{for(let L of Y){let Ve=L.contentRect.width;Ve&&Oe(Ve);}});return b.observe(u),()=>{b.unobserve(u);}},[$,a.order_type_ext]),{...g,currentQtyPercentage:Ee,side:a.side,type:a.order_type,level:a.level,setOrderValue:Ot,setOrderValues:d,currentLeverage:R,formattedOrder:a,tpslSwitch:v,setTpslSwitch:Et,setMaxQty:ht,symbolInfo:_,onFocus:H,onBlur:Ae,refs:{triggerPriceInputRef:w,priceInputRef:G,priceInputContainerRef:$},canTrade:Q,bboStatus:oe,bboType:n,onBBOChange:vt,toggleBBO:Pt,priceInputContainerWidth:de}};var ro=e=>{let t=Tt(e);return jsxRuntime.jsx(Re,{...t,containerRef:e.containerRef})};
16
17
 
17
- exports.AdditionalInfoWidget = fe;
18
- exports.OrderConfirmDialog = Le;
18
+ exports.AdditionalInfoWidget = ge;
19
+ exports.OrderConfirmDialog = Se;
19
20
  exports.OrderEntry = Re;
20
- exports.OrderEntryWidget = Gr;
21
+ exports.OrderEntryWidget = ro;
21
22
  //# sourceMappingURL=out.js.map
22
23
  //# sourceMappingURL=index.js.map