@orderly.network/ui-tpsl 3.0.0-beta.3 → 3.0.0-beta.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 +13 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.js +70 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +70 -23
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -10
package/dist/index.mjs
CHANGED
|
@@ -17,6 +17,7 @@ var SymbolBadge = (props) => {
|
|
|
17
17
|
const badge = brokerName ?? brokerId ?? void 0;
|
|
18
18
|
return /* @__PURE__ */ jsx(SymbolBadge$1, { badge, fullName: brokerNameRaw });
|
|
19
19
|
};
|
|
20
|
+
var LIQ_DISTANCE_THRESHOLD = 10;
|
|
20
21
|
var OrderInfo = (props) => {
|
|
21
22
|
const { t } = useTranslation();
|
|
22
23
|
const { order: order2, symbolLeverage } = props;
|
|
@@ -29,6 +30,8 @@ var OrderInfo = (props) => {
|
|
|
29
30
|
props.marginMode
|
|
30
31
|
);
|
|
31
32
|
const currentLeverage = symbolLeverage || leverage;
|
|
33
|
+
const markPriceValue = markPrice?.data;
|
|
34
|
+
const estLiqPrice = props.estLiqPrice === 0 || !markPriceValue || markPriceValue === 0 || Math.abs((props.estLiqPrice ?? 0) - markPriceValue) / markPriceValue >= LIQ_DISTANCE_THRESHOLD ? "--" : props.estLiqPrice ?? "--";
|
|
32
35
|
return /* @__PURE__ */ jsxs(
|
|
33
36
|
Flex,
|
|
34
37
|
{
|
|
@@ -152,7 +155,7 @@ var OrderInfo = (props) => {
|
|
|
152
155
|
className: "oui-text-warning",
|
|
153
156
|
size: "2xs",
|
|
154
157
|
dp: props.quoteDP ?? 2,
|
|
155
|
-
children:
|
|
158
|
+
children: estLiqPrice
|
|
156
159
|
}
|
|
157
160
|
)
|
|
158
161
|
] })
|
|
@@ -285,6 +288,10 @@ var usePNLInputBuilder = (props) => {
|
|
|
285
288
|
return `${type.toLowerCase()}_offset`;
|
|
286
289
|
case "Offset%" /* PERCENTAGE */:
|
|
287
290
|
return `${type.toLowerCase()}_offset_percentage`;
|
|
291
|
+
case "OffsetFromMark" /* OFFSET_FROM_MARK */:
|
|
292
|
+
return `${type.toLowerCase()}_offset_from_mark`;
|
|
293
|
+
case "PercentageFromMark" /* PERCENTAGE_FROM_MARK */:
|
|
294
|
+
return `${type.toLowerCase()}_offset_percentage_from_mark`;
|
|
288
295
|
default:
|
|
289
296
|
return `${type.toLowerCase()}_pnl`;
|
|
290
297
|
}
|
|
@@ -302,15 +309,34 @@ var usePNLInputBuilder = (props) => {
|
|
|
302
309
|
{
|
|
303
310
|
label: t("tpsl.offset"),
|
|
304
311
|
value: "Offset" /* OFFSET */,
|
|
305
|
-
testId: `${"Offset" /* OFFSET */}
|
|
312
|
+
testId: `${"Offset" /* OFFSET */}_menu_item`
|
|
306
313
|
},
|
|
307
314
|
{
|
|
308
|
-
label:
|
|
315
|
+
label: t("tpsl.offsetPercent"),
|
|
309
316
|
value: "Offset%" /* PERCENTAGE */,
|
|
310
317
|
testId: `${"Offset%" /* PERCENTAGE */}_menu_item`
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
label: t("tpsl.offsetMark"),
|
|
321
|
+
value: "OffsetFromMark" /* OFFSET_FROM_MARK */,
|
|
322
|
+
testId: `${"OffsetFromMark" /* OFFSET_FROM_MARK */}_menu_item`
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
label: t("tpsl.offsetPercentMark"),
|
|
326
|
+
value: "PercentageFromMark" /* PERCENTAGE_FROM_MARK */,
|
|
327
|
+
testId: `${"PercentageFromMark" /* PERCENTAGE_FROM_MARK */}_menu_item`
|
|
311
328
|
}
|
|
312
329
|
];
|
|
313
330
|
}, [t]);
|
|
331
|
+
const modeLabelMap = useMemo(() => {
|
|
332
|
+
return {
|
|
333
|
+
["PnL" /* PnL */]: t("tpsl.pnl"),
|
|
334
|
+
["Offset" /* OFFSET */]: t("tpsl.offsetHolder"),
|
|
335
|
+
["Offset%" /* PERCENTAGE */]: t("tpsl.offsetHolder"),
|
|
336
|
+
["OffsetFromMark" /* OFFSET_FROM_MARK */]: t("tpsl.offsetHolder"),
|
|
337
|
+
["PercentageFromMark" /* PERCENTAGE_FROM_MARK */]: t("tpsl.offsetHolder")
|
|
338
|
+
};
|
|
339
|
+
}, [t]);
|
|
314
340
|
const percentageSuffix = useRef("");
|
|
315
341
|
const onValueChange = (value2) => {
|
|
316
342
|
props.onChange(key, value2);
|
|
@@ -321,7 +347,7 @@ var usePNLInputBuilder = (props) => {
|
|
|
321
347
|
onRenderBefore: (value2, options2) => {
|
|
322
348
|
value2 = `${value2}`;
|
|
323
349
|
if (value2 === "" || value2 === "-") return "";
|
|
324
|
-
if (mode === "Offset%" /* PERCENTAGE */) {
|
|
350
|
+
if (mode === "Offset%" /* PERCENTAGE */ || mode === "PercentageFromMark" /* PERCENTAGE_FROM_MARK */) {
|
|
325
351
|
try {
|
|
326
352
|
return `${new Decimal(
|
|
327
353
|
value2.replace(
|
|
@@ -332,7 +358,7 @@ var usePNLInputBuilder = (props) => {
|
|
|
332
358
|
} catch {
|
|
333
359
|
return "";
|
|
334
360
|
}
|
|
335
|
-
} else if (mode === "Offset" /* OFFSET */) {
|
|
361
|
+
} else if (mode === "Offset" /* OFFSET */ || mode === "OffsetFromMark" /* OFFSET_FROM_MARK */) {
|
|
336
362
|
value2 = todpIfNeed(value2, dp);
|
|
337
363
|
} else ;
|
|
338
364
|
return `${value2}`;
|
|
@@ -341,7 +367,7 @@ var usePNLInputBuilder = (props) => {
|
|
|
341
367
|
if (/^\-?0{2,}$/.test(value2)) {
|
|
342
368
|
return "0";
|
|
343
369
|
}
|
|
344
|
-
if (mode === "Offset%" /* PERCENTAGE */) {
|
|
370
|
+
if (mode === "Offset%" /* PERCENTAGE */ || mode === "PercentageFromMark" /* PERCENTAGE_FROM_MARK */) {
|
|
345
371
|
if (value2 !== "") {
|
|
346
372
|
value2 = todpIfNeed(value2, 2);
|
|
347
373
|
const endStr = value2.match(/\.0{0,2}$/);
|
|
@@ -370,6 +396,7 @@ var usePNLInputBuilder = (props) => {
|
|
|
370
396
|
return {
|
|
371
397
|
mode,
|
|
372
398
|
modes,
|
|
399
|
+
modeLabelMap,
|
|
373
400
|
type: props.type,
|
|
374
401
|
formatter,
|
|
375
402
|
onModeChange: (mode2) => {
|
|
@@ -386,6 +413,7 @@ var PNLInput = (props) => {
|
|
|
386
413
|
const {
|
|
387
414
|
mode,
|
|
388
415
|
modes,
|
|
416
|
+
modeLabelMap,
|
|
389
417
|
onModeChange,
|
|
390
418
|
onValueChange,
|
|
391
419
|
quote,
|
|
@@ -393,26 +421,19 @@ var PNLInput = (props) => {
|
|
|
393
421
|
value,
|
|
394
422
|
pnl
|
|
395
423
|
} = props;
|
|
396
|
-
const
|
|
397
|
-
const [prefix, setPrefix] = useState(mode);
|
|
398
|
-
const [placeholder, setPlaceholder] = useState(
|
|
399
|
-
mode === "Offset%" /* PERCENTAGE */ ? "%" : quote
|
|
400
|
-
);
|
|
424
|
+
const [isInputFocused, setIsInputFocused] = useState(false);
|
|
401
425
|
const color = useMemo(() => {
|
|
402
426
|
const num = Number(pnl);
|
|
403
427
|
if (isNaN(num) || num === 0) return "";
|
|
404
428
|
if (num > 0) return "oui-text-trade-profit";
|
|
405
429
|
if (num < 0) return "oui-text-trade-loss";
|
|
406
430
|
}, [pnl]);
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
setPrefix(label);
|
|
410
|
-
setPlaceholder(mode === "Offset%" /* PERCENTAGE */ ? "%" : quote);
|
|
411
|
-
}, [mode, modes]);
|
|
431
|
+
const prefixLabel = String(modeLabelMap[mode] ?? mode ?? "");
|
|
432
|
+
const placeholder = isInputFocused ? "" : mode === "Offset%" /* PERCENTAGE */ || mode === "PercentageFromMark" /* PERCENTAGE_FROM_MARK */ ? "%" : quote;
|
|
412
433
|
return /* @__PURE__ */ jsx(
|
|
413
434
|
Input,
|
|
414
435
|
{
|
|
415
|
-
prefix,
|
|
436
|
+
prefix: prefixLabel,
|
|
416
437
|
size: {
|
|
417
438
|
initial: "lg",
|
|
418
439
|
lg: "md"
|
|
@@ -435,15 +456,15 @@ var PNLInput = (props) => {
|
|
|
435
456
|
root: "oui-outline-line-12 focus-within:oui-outline-primary-light"
|
|
436
457
|
},
|
|
437
458
|
onFocus: () => {
|
|
438
|
-
|
|
459
|
+
setIsInputFocused(true);
|
|
439
460
|
props.setFocus(true);
|
|
440
461
|
},
|
|
441
462
|
onBlur: () => {
|
|
442
|
-
|
|
463
|
+
setIsInputFocused(false);
|
|
443
464
|
props.setFocus(false);
|
|
444
465
|
},
|
|
445
466
|
suffix: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
446
|
-
mode === "Offset%" /* PERCENTAGE */ && !!value && /* @__PURE__ */ jsx(
|
|
467
|
+
(mode === "Offset%" /* PERCENTAGE */ || mode === "PercentageFromMark" /* PERCENTAGE_FROM_MARK */) && !!value && /* @__PURE__ */ jsx(
|
|
447
468
|
Text,
|
|
448
469
|
{
|
|
449
470
|
size: "2xs",
|
|
@@ -472,7 +493,7 @@ var PNLMenus = (props) => {
|
|
|
472
493
|
menu: props.modes,
|
|
473
494
|
align: "end",
|
|
474
495
|
size: "xs",
|
|
475
|
-
className: "oui-min-w-[
|
|
496
|
+
className: "oui-min-w-[120px]",
|
|
476
497
|
onSelect: (item) => props.onModeChange(item),
|
|
477
498
|
children: /* @__PURE__ */ jsx("button", { className: "oui-p-2", children: /* @__PURE__ */ jsx(CaretDownIcon, { size: 12, color: "white" }) })
|
|
478
499
|
}
|
|
@@ -1025,6 +1046,8 @@ var TPSL = (props) => {
|
|
|
1025
1046
|
PnL: TPSL_OrderEntity.tp_pnl?.toString() ?? void 0,
|
|
1026
1047
|
Offset: TPSL_OrderEntity.tp_offset?.toString() ?? void 0,
|
|
1027
1048
|
"Offset%": TPSL_OrderEntity.tp_offset_percentage?.toString() ?? void 0,
|
|
1049
|
+
OffsetFromMark: TPSL_OrderEntity.tp_offset_from_mark?.toString() ?? void 0,
|
|
1050
|
+
PercentageFromMark: TPSL_OrderEntity.tp_offset_percentage_from_mark?.toString() ?? void 0,
|
|
1028
1051
|
order_price: TPSL_OrderEntity.tp_order_price?.toString() ?? void 0,
|
|
1029
1052
|
order_type: TPSL_OrderEntity.tp_order_type ?? OrderType.MARKET
|
|
1030
1053
|
},
|
|
@@ -1062,6 +1085,8 @@ var TPSL = (props) => {
|
|
|
1062
1085
|
PnL: TPSL_OrderEntity.sl_pnl?.toString() ?? void 0,
|
|
1063
1086
|
Offset: TPSL_OrderEntity.sl_offset?.toString() ?? void 0,
|
|
1064
1087
|
"Offset%": TPSL_OrderEntity.sl_offset_percentage?.toString() ?? void 0,
|
|
1088
|
+
OffsetFromMark: TPSL_OrderEntity.sl_offset_from_mark?.toString() ?? void 0,
|
|
1089
|
+
PercentageFromMark: TPSL_OrderEntity.sl_offset_percentage_from_mark?.toString() ?? void 0,
|
|
1065
1090
|
order_price: TPSL_OrderEntity.sl_order_price?.toString() ?? void 0,
|
|
1066
1091
|
order_type: TPSL_OrderEntity.sl_order_type ?? OrderType.MARKET
|
|
1067
1092
|
},
|
|
@@ -1686,6 +1711,8 @@ var TPSLAdvancedUI = (props) => {
|
|
|
1686
1711
|
PnL: formattedOrder.tp_pnl ?? "",
|
|
1687
1712
|
Offset: formattedOrder.tp_offset ?? "",
|
|
1688
1713
|
"Offset%": formattedOrder.tp_offset_percentage ?? "",
|
|
1714
|
+
OffsetFromMark: formattedOrder.tp_offset_from_mark ?? "",
|
|
1715
|
+
PercentageFromMark: formattedOrder.tp_offset_percentage_from_mark ?? "",
|
|
1689
1716
|
ROI: formattedOrder.tp_ROI ?? ""
|
|
1690
1717
|
});
|
|
1691
1718
|
const [slValues, setSlValues] = useState({
|
|
@@ -1696,6 +1723,8 @@ var TPSLAdvancedUI = (props) => {
|
|
|
1696
1723
|
PnL: formattedOrder.sl_pnl ?? "",
|
|
1697
1724
|
Offset: formattedOrder.sl_offset ?? "",
|
|
1698
1725
|
"Offset%": formattedOrder.sl_offset_percentage ?? "",
|
|
1726
|
+
OffsetFromMark: formattedOrder.sl_offset_from_mark ?? "",
|
|
1727
|
+
PercentageFromMark: formattedOrder.sl_offset_percentage_from_mark ?? "",
|
|
1699
1728
|
ROI: formattedOrder.sl_ROI ?? ""
|
|
1700
1729
|
});
|
|
1701
1730
|
useEffect(() => {
|
|
@@ -1708,6 +1737,8 @@ var TPSLAdvancedUI = (props) => {
|
|
|
1708
1737
|
PnL: formattedOrder.tp_pnl ?? "",
|
|
1709
1738
|
Offset: formattedOrder.tp_offset ?? "",
|
|
1710
1739
|
"Offset%": formattedOrder.tp_offset_percentage ?? "",
|
|
1740
|
+
OffsetFromMark: formattedOrder.tp_offset_from_mark ?? "",
|
|
1741
|
+
PercentageFromMark: formattedOrder.tp_offset_percentage_from_mark ?? "",
|
|
1711
1742
|
ROI: formattedOrder.tp_ROI ?? ""
|
|
1712
1743
|
}));
|
|
1713
1744
|
}, [formattedOrder]);
|
|
@@ -1721,6 +1752,8 @@ var TPSLAdvancedUI = (props) => {
|
|
|
1721
1752
|
PnL: formattedOrder.sl_pnl ?? "",
|
|
1722
1753
|
Offset: formattedOrder.sl_offset ?? "",
|
|
1723
1754
|
"Offset%": formattedOrder.sl_offset_percentage ?? "",
|
|
1755
|
+
OffsetFromMark: formattedOrder.sl_offset_from_mark ?? "",
|
|
1756
|
+
PercentageFromMark: formattedOrder.sl_offset_percentage_from_mark ?? "",
|
|
1724
1757
|
ROI: formattedOrder.sl_ROI ?? ""
|
|
1725
1758
|
}));
|
|
1726
1759
|
}, [formattedOrder]);
|
|
@@ -1951,16 +1984,23 @@ var useTPSLAdvanced = (props) => {
|
|
|
1951
1984
|
sl_pnl: order2.sl_pnl,
|
|
1952
1985
|
sl_offset: order2.sl_offset,
|
|
1953
1986
|
sl_offset_percentage: order2.sl_offset_percentage,
|
|
1987
|
+
sl_offset_from_mark: order2.sl_offset_from_mark,
|
|
1988
|
+
sl_offset_percentage_from_mark: order2.sl_offset_percentage_from_mark,
|
|
1954
1989
|
tp_pnl: order2.tp_pnl,
|
|
1955
1990
|
tp_offset: order2.tp_offset,
|
|
1956
1991
|
tp_offset_percentage: order2.tp_offset_percentage,
|
|
1992
|
+
tp_offset_from_mark: order2.tp_offset_from_mark,
|
|
1993
|
+
tp_offset_percentage_from_mark: order2.tp_offset_percentage_from_mark,
|
|
1957
1994
|
margin_mode: order2.margin_mode
|
|
1958
1995
|
}
|
|
1959
1996
|
});
|
|
1960
1997
|
const slPriceError = useTpslPriceChecker({
|
|
1961
1998
|
slPrice: formattedOrder.sl_trigger_price,
|
|
1962
1999
|
liqPrice: state.estLiqPrice,
|
|
1963
|
-
side: formattedOrder.side
|
|
2000
|
+
side: formattedOrder.side,
|
|
2001
|
+
markPrice: state.markPrice,
|
|
2002
|
+
currentPosition: state.currentPosition,
|
|
2003
|
+
orderQuantity: Number(formattedOrder.order_quantity)
|
|
1964
2004
|
});
|
|
1965
2005
|
const onSubmit = () => {
|
|
1966
2006
|
const isSlPriceError = slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_ERROR;
|
|
@@ -2634,7 +2674,6 @@ var TPSLDetailUI = (props) => {
|
|
|
2634
2674
|
symbolInfo
|
|
2635
2675
|
} = props;
|
|
2636
2676
|
const { estLiqPrice } = useTPSLDetailContext();
|
|
2637
|
-
console.log("----- position", position);
|
|
2638
2677
|
return /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(ScrollArea, { className: cn(isMobile && "oui-h-[calc(100vh-100px)]"), children: [
|
|
2639
2678
|
/* @__PURE__ */ jsx(
|
|
2640
2679
|
OrderInfo,
|
|
@@ -3473,6 +3512,8 @@ var EditBracketOrderUI = (props) => {
|
|
|
3473
3512
|
PnL: formattedOrder.tp_pnl ?? "",
|
|
3474
3513
|
Offset: formattedOrder.tp_offset ?? "",
|
|
3475
3514
|
"Offset%": formattedOrder.tp_offset_percentage ?? "",
|
|
3515
|
+
OffsetFromMark: formattedOrder.tp_offset_from_mark ?? "",
|
|
3516
|
+
PercentageFromMark: formattedOrder.tp_offset_percentage_from_mark ?? "",
|
|
3476
3517
|
ROI: formattedOrder.tp_ROI ?? ""
|
|
3477
3518
|
});
|
|
3478
3519
|
const [slValues, setSlValues] = useState({
|
|
@@ -3483,6 +3524,8 @@ var EditBracketOrderUI = (props) => {
|
|
|
3483
3524
|
PnL: formattedOrder.sl_pnl ?? "",
|
|
3484
3525
|
Offset: formattedOrder.sl_offset ?? "",
|
|
3485
3526
|
"Offset%": formattedOrder.sl_offset_percentage ?? "",
|
|
3527
|
+
OffsetFromMark: formattedOrder.sl_offset_from_mark ?? "",
|
|
3528
|
+
PercentageFromMark: formattedOrder.sl_offset_percentage_from_mark ?? "",
|
|
3486
3529
|
ROI: formattedOrder.sl_ROI ?? ""
|
|
3487
3530
|
});
|
|
3488
3531
|
useEffect(() => {
|
|
@@ -3495,6 +3538,8 @@ var EditBracketOrderUI = (props) => {
|
|
|
3495
3538
|
PnL: formattedOrder.tp_pnl ?? "",
|
|
3496
3539
|
Offset: formattedOrder.tp_offset ?? "",
|
|
3497
3540
|
"Offset%": formattedOrder.tp_offset_percentage ?? "",
|
|
3541
|
+
OffsetFromMark: formattedOrder.tp_offset_from_mark ?? "",
|
|
3542
|
+
PercentageFromMark: formattedOrder.tp_offset_percentage_from_mark ?? "",
|
|
3498
3543
|
ROI: formattedOrder.tp_ROI ?? ""
|
|
3499
3544
|
}));
|
|
3500
3545
|
}, [formattedOrder]);
|
|
@@ -3508,6 +3553,8 @@ var EditBracketOrderUI = (props) => {
|
|
|
3508
3553
|
PnL: formattedOrder.sl_pnl ?? "",
|
|
3509
3554
|
Offset: formattedOrder.sl_offset ?? "",
|
|
3510
3555
|
"Offset%": formattedOrder.sl_offset_percentage ?? "",
|
|
3556
|
+
OffsetFromMark: formattedOrder.sl_offset_from_mark ?? "",
|
|
3557
|
+
PercentageFromMark: formattedOrder.sl_offset_percentage_from_mark ?? "",
|
|
3511
3558
|
ROI: formattedOrder.sl_ROI ?? ""
|
|
3512
3559
|
}));
|
|
3513
3560
|
}, [formattedOrder]);
|