@orderly.network/ui-tpsl 3.0.0-beta.1 → 3.0.0-beta.10

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.mjs CHANGED
@@ -1,26 +1,37 @@
1
1
  import { SDKError, MarginMode, PositionType, AlgoOrderRootType, OrderType, OrderSide, OrderStatus, AlgoOrderType } from '@orderly.network/types';
2
- import { Flex, Input, inputFormatter, cn, Slider, Text, registerSimpleSheet, registerSimpleDialog, useScreen, ScrollArea, DotStatus, Grid, Button, ThrottledButton, Divider, Box, toast, TokenIcon, capitalizeFirstLetter, modal, Tooltip, ExclamationFillIcon, Select, ChevronDownIcon, Badge, textVariants, Checkbox, SimpleDropdownMenu, CaretDownIcon, useModal } from '@orderly.network/ui';
2
+ import { Flex, Input, inputFormatter, cn, Slider, Text, registerSimpleSheet, registerSimpleDialog, useScreen, ScrollArea, DotStatus, Grid, Button, ThrottledButton, Divider, Box, toast, TokenIcon, modal, SymbolBadge as SymbolBadge$1, Tooltip, ExclamationFillIcon, Select, ChevronDownIcon, Badge, textVariants, Checkbox, SimpleDropdownMenu, CaretDownIcon, useModal } from '@orderly.network/ui';
3
3
  import { memo, useRef, useState, useEffect, createContext, useMemo, useContext, Fragment as Fragment$1 } from 'react';
4
- import { utils, useSymbolsInfo, useAccount, useEventEmitter, useLocalStorage, useMarginModeBySymbol, usePositionStream, useEstLiqPriceBySymbol, useTPSLOrder, useTpslPriceChecker, ERROR_MSG_CODES, useMemoizedFn, useOrderEntry, useGetEstLiqPrice, useOrderStream, useSubAccountAlgoOrderStream, findPositionTPSLFromOrders, useMutation, useMarkPrice, useIndexPrice, useLeverageBySymbol, useMaxQty, findTPSLFromOrder, findTPSLOrderPriceFromOrder } from '@orderly.network/hooks';
4
+ import { utils, useSymbolsInfo, useAccount, useEventEmitter, useLocalStorage, useMarginModeBySymbol, usePositionStream, useEstLiqPriceBySymbol, useTPSLOrder, useTpslPriceChecker, ERROR_MSG_CODES, useMemoizedFn, useOrderEntry, useGetEstLiqPrice, useOrderStream, useSubAccountAlgoOrderStream, findPositionTPSLFromOrders, useMutation, useMarkPrice, useIndexPrice, useLeverageBySymbol, useMaxQty, useBadgeBySymbol, useSymbolWithBroker, findTPSLFromOrder, findTPSLOrderPriceFromOrder } from '@orderly.network/hooks';
5
5
  import { useTranslation, i18n, Trans } from '@orderly.network/i18n';
6
6
  import { useOrderEntryFormErrorMsg } from '@orderly.network/react-app';
7
7
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
8
- import { Decimal, checkIsNaN, transSymbolformString, getTPSLDirection, formatNum, todpIfNeed } from '@orderly.network/utils';
8
+ import { Decimal, checkIsNaN, getTPSLDirection, formatNum, todpIfNeed } from '@orderly.network/utils';
9
9
  import { order, positions } from '@orderly.network/perp';
10
10
  import { AuthGuardDataTable } from '@orderly.network/ui-connector';
11
11
 
12
12
  // src/editorPopover.tsx
13
+ var SymbolBadge = (props) => {
14
+ const { brokerId, brokerName, brokerNameRaw } = useBadgeBySymbol(
15
+ props.symbol
16
+ );
17
+ const badge = brokerName ?? brokerId ?? void 0;
18
+ return /* @__PURE__ */ jsx(SymbolBadge$1, { badge, fullName: brokerNameRaw });
19
+ };
20
+ var LIQ_DISTANCE_THRESHOLD = 10;
13
21
  var OrderInfo = (props) => {
14
22
  const { t } = useTranslation();
15
23
  const { order: order2, symbolLeverage } = props;
16
24
  const { symbol } = order2;
17
25
  const markPrice = useMarkPrice(symbol);
18
26
  const indexPrice = useIndexPrice(symbol);
27
+ const marginModeLabel = props.marginMode === MarginMode.ISOLATED ? t("marginMode.isolated") : props.marginMode === MarginMode.CROSS ? t("marginMode.cross") : void 0;
19
28
  const leverage = useLeverageBySymbol(
20
29
  symbolLeverage ? void 0 : symbol,
21
30
  props.marginMode
22
31
  );
23
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 ?? "--";
24
35
  return /* @__PURE__ */ jsxs(
25
36
  Flex,
26
37
  {
@@ -44,20 +55,21 @@ var OrderInfo = (props) => {
44
55
  {
45
56
  className: "oui-whitespace-nowrap oui-break-normal",
46
57
  rule: "symbol",
47
- formatString: "base-type",
58
+ formatString: "base",
48
59
  size: "sm",
49
60
  weight: "semibold",
50
61
  intensity: 98,
62
+ suffix: /* @__PURE__ */ jsx(SymbolBadge, { symbol: symbol ?? "" }),
51
63
  children: symbol
52
64
  }
53
65
  )
54
66
  ] }),
55
- props.marginMode && /* @__PURE__ */ jsx(
67
+ marginModeLabel && /* @__PURE__ */ jsx(
56
68
  Text,
57
69
  {
58
70
  size: "2xs",
59
71
  className: "oui-h-[18px] oui-rounded oui-bg-base-7 oui-px-2 oui-font-semibold oui-text-base-contrast-36",
60
- children: capitalizeFirstLetter(props.marginMode)
72
+ children: marginModeLabel
61
73
  }
62
74
  ),
63
75
  /* @__PURE__ */ jsxs(
@@ -143,7 +155,7 @@ var OrderInfo = (props) => {
143
155
  className: "oui-text-warning",
144
156
  size: "2xs",
145
157
  dp: props.quoteDP ?? 2,
146
- children: props.estLiqPrice ?? "--"
158
+ children: estLiqPrice
147
159
  }
148
160
  )
149
161
  ] })
@@ -253,6 +265,7 @@ var useTPSLInputRowScript = (props) => {
253
265
  });
254
266
  return roi2 * 100;
255
267
  } catch (error) {
268
+ console.error("error", error);
256
269
  return null;
257
270
  }
258
271
  }, [values, leverage, rootOrderPrice, type, side]);
@@ -275,6 +288,10 @@ var usePNLInputBuilder = (props) => {
275
288
  return `${type.toLowerCase()}_offset`;
276
289
  case "Offset%" /* PERCENTAGE */:
277
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`;
278
295
  default:
279
296
  return `${type.toLowerCase()}_pnl`;
280
297
  }
@@ -292,15 +309,34 @@ var usePNLInputBuilder = (props) => {
292
309
  {
293
310
  label: t("tpsl.offset"),
294
311
  value: "Offset" /* OFFSET */,
295
- testId: `${"Offset" /* OFFSET */}_mneu_item`
312
+ testId: `${"Offset" /* OFFSET */}_menu_item`
296
313
  },
297
314
  {
298
- label: `${t("tpsl.offset")}%`,
315
+ label: t("tpsl.offsetPercent"),
299
316
  value: "Offset%" /* PERCENTAGE */,
300
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`
301
328
  }
302
329
  ];
303
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]);
304
340
  const percentageSuffix = useRef("");
305
341
  const onValueChange = (value2) => {
306
342
  props.onChange(key, value2);
@@ -311,7 +347,7 @@ var usePNLInputBuilder = (props) => {
311
347
  onRenderBefore: (value2, options2) => {
312
348
  value2 = `${value2}`;
313
349
  if (value2 === "" || value2 === "-") return "";
314
- if (mode === "Offset%" /* PERCENTAGE */) {
350
+ if (mode === "Offset%" /* PERCENTAGE */ || mode === "PercentageFromMark" /* PERCENTAGE_FROM_MARK */) {
315
351
  try {
316
352
  return `${new Decimal(
317
353
  value2.replace(
@@ -322,7 +358,7 @@ var usePNLInputBuilder = (props) => {
322
358
  } catch {
323
359
  return "";
324
360
  }
325
- } else if (mode === "Offset" /* OFFSET */) {
361
+ } else if (mode === "Offset" /* OFFSET */ || mode === "OffsetFromMark" /* OFFSET_FROM_MARK */) {
326
362
  value2 = todpIfNeed(value2, dp);
327
363
  } else ;
328
364
  return `${value2}`;
@@ -331,7 +367,7 @@ var usePNLInputBuilder = (props) => {
331
367
  if (/^\-?0{2,}$/.test(value2)) {
332
368
  return "0";
333
369
  }
334
- if (mode === "Offset%" /* PERCENTAGE */) {
370
+ if (mode === "Offset%" /* PERCENTAGE */ || mode === "PercentageFromMark" /* PERCENTAGE_FROM_MARK */) {
335
371
  if (value2 !== "") {
336
372
  value2 = todpIfNeed(value2, 2);
337
373
  const endStr = value2.match(/\.0{0,2}$/);
@@ -360,6 +396,7 @@ var usePNLInputBuilder = (props) => {
360
396
  return {
361
397
  mode,
362
398
  modes,
399
+ modeLabelMap,
363
400
  type: props.type,
364
401
  formatter,
365
402
  onModeChange: (mode2) => {
@@ -376,6 +413,7 @@ var PNLInput = (props) => {
376
413
  const {
377
414
  mode,
378
415
  modes,
416
+ modeLabelMap,
379
417
  onModeChange,
380
418
  onValueChange,
381
419
  quote,
@@ -383,26 +421,19 @@ var PNLInput = (props) => {
383
421
  value,
384
422
  pnl
385
423
  } = props;
386
- const { t } = useTranslation();
387
- const [prefix, setPrefix] = useState(mode);
388
- const [placeholder, setPlaceholder] = useState(
389
- mode === "Offset%" /* PERCENTAGE */ ? "%" : quote
390
- );
424
+ const [isInputFocused, setIsInputFocused] = useState(false);
391
425
  const color = useMemo(() => {
392
426
  const num = Number(pnl);
393
427
  if (isNaN(num) || num === 0) return "";
394
428
  if (num > 0) return "oui-text-trade-profit";
395
429
  if (num < 0) return "oui-text-trade-loss";
396
430
  }, [pnl]);
397
- useEffect(() => {
398
- const label = modes.find((item) => item.value === mode)?.label;
399
- setPrefix(label);
400
- setPlaceholder(mode === "Offset%" /* PERCENTAGE */ ? "%" : quote);
401
- }, [mode, modes]);
431
+ const prefixLabel = String(modeLabelMap[mode] ?? mode ?? "");
432
+ const placeholder = isInputFocused ? "" : mode === "Offset%" /* PERCENTAGE */ || mode === "PercentageFromMark" /* PERCENTAGE_FROM_MARK */ ? "%" : quote;
402
433
  return /* @__PURE__ */ jsx(
403
434
  Input,
404
435
  {
405
- prefix,
436
+ prefix: prefixLabel,
406
437
  size: {
407
438
  initial: "lg",
408
439
  lg: "md"
@@ -425,15 +456,15 @@ var PNLInput = (props) => {
425
456
  root: "oui-outline-line-12 focus-within:oui-outline-primary-light"
426
457
  },
427
458
  onFocus: () => {
428
- setPlaceholder("");
459
+ setIsInputFocused(true);
429
460
  props.setFocus(true);
430
461
  },
431
462
  onBlur: () => {
432
- setPlaceholder(mode === "Offset%" /* PERCENTAGE */ ? "%" : quote);
463
+ setIsInputFocused(false);
433
464
  props.setFocus(false);
434
465
  },
435
466
  suffix: /* @__PURE__ */ jsxs(Fragment, { children: [
436
- mode === "Offset%" /* PERCENTAGE */ && !!value && /* @__PURE__ */ jsx(
467
+ (mode === "Offset%" /* PERCENTAGE */ || mode === "PercentageFromMark" /* PERCENTAGE_FROM_MARK */) && !!value && /* @__PURE__ */ jsx(
437
468
  Text,
438
469
  {
439
470
  size: "2xs",
@@ -462,7 +493,7 @@ var PNLMenus = (props) => {
462
493
  menu: props.modes,
463
494
  align: "end",
464
495
  size: "xs",
465
- className: "oui-min-w-[80px]",
496
+ className: "oui-min-w-[120px]",
466
497
  onSelect: (item) => props.onModeChange(item),
467
498
  children: /* @__PURE__ */ jsx("button", { className: "oui-p-2", children: /* @__PURE__ */ jsx(CaretDownIcon, { size: 12, color: "white" }) })
468
499
  }
@@ -829,10 +860,10 @@ var TPSLQuantity = memo((props) => {
829
860
  tooltip: errorMsg,
830
861
  color: errorMsg ? "danger" : void 0,
831
862
  formatters: [
863
+ inputFormatter.decimalPointFormatter,
832
864
  inputFormatter.dpFormatter(props.base_dp),
833
865
  inputFormatter.numberFormatter,
834
- inputFormatter.currencyFormatter,
835
- inputFormatter.decimalPointFormatter
866
+ inputFormatter.currencyFormatter
836
867
  ],
837
868
  onValueChange: (value) => {
838
869
  props.onQuantityChange?.(value);
@@ -1015,6 +1046,8 @@ var TPSL = (props) => {
1015
1046
  PnL: TPSL_OrderEntity.tp_pnl?.toString() ?? void 0,
1016
1047
  Offset: TPSL_OrderEntity.tp_offset?.toString() ?? void 0,
1017
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,
1018
1051
  order_price: TPSL_OrderEntity.tp_order_price?.toString() ?? void 0,
1019
1052
  order_type: TPSL_OrderEntity.tp_order_type ?? OrderType.MARKET
1020
1053
  },
@@ -1052,6 +1085,8 @@ var TPSL = (props) => {
1052
1085
  PnL: TPSL_OrderEntity.sl_pnl?.toString() ?? void 0,
1053
1086
  Offset: TPSL_OrderEntity.sl_offset?.toString() ?? void 0,
1054
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,
1055
1090
  order_price: TPSL_OrderEntity.sl_order_price?.toString() ?? void 0,
1056
1091
  order_type: TPSL_OrderEntity.sl_order_type ?? OrderType.MARKET
1057
1092
  },
@@ -1104,6 +1139,7 @@ var TPSL = (props) => {
1104
1139
  props.close?.();
1105
1140
  onComplete?.();
1106
1141
  }).catch((err) => {
1142
+ console.log("--->>>cancel order", err);
1107
1143
  });
1108
1144
  },
1109
1145
  children: t("common.confirm")
@@ -1182,21 +1218,25 @@ var PositionTPSLConfirm = (props) => {
1182
1218
  );
1183
1219
  };
1184
1220
  const isPositionTPSL = _isPositionTPSL;
1221
+ const displaySymbol = useSymbolWithBroker(symbol);
1185
1222
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1186
- isEditing && /* @__PURE__ */ jsx(Text, { as: "div", size: "2xs", intensity: 80, className: "oui-mb-3", children: t("tpsl.agreement", { symbol: transSymbolformString(symbol) }) }),
1223
+ isEditing && /* @__PURE__ */ jsx(Text, { as: "div", size: "2xs", intensity: 80, className: "oui-mb-3", children: t("tpsl.agreement", { symbol: displaySymbol }) }),
1187
1224
  /* @__PURE__ */ jsxs(Flex, { pb: 4, children: [
1188
- /* @__PURE__ */ jsx(Box, { grow: true, children: /* @__PURE__ */ jsx(
1189
- Text.formatted,
1190
- {
1191
- rule: "symbol",
1192
- formatString: "base-type",
1193
- size: "base",
1194
- showIcon: true,
1195
- as: "div",
1196
- intensity: 80,
1197
- children: symbol
1198
- }
1199
- ) }),
1225
+ /* @__PURE__ */ jsxs(Flex, { direction: "column", itemAlign: "start", gap: 1, grow: true, children: [
1226
+ /* @__PURE__ */ jsx(Box, { grow: true, children: /* @__PURE__ */ jsx(
1227
+ Text.formatted,
1228
+ {
1229
+ rule: "symbol",
1230
+ formatString: "base",
1231
+ size: "base",
1232
+ showIcon: true,
1233
+ as: "div",
1234
+ intensity: 80,
1235
+ children: symbol
1236
+ }
1237
+ ) }),
1238
+ /* @__PURE__ */ jsx(SymbolBadge, { symbol })
1239
+ ] }),
1200
1240
  /* @__PURE__ */ jsxs(Flex, { gap: 1, children: [
1201
1241
  isPositionTPSL && /* @__PURE__ */ jsx(Badge, { size: "xs", color: "primary", children: t("common.position") }),
1202
1242
  /* @__PURE__ */ jsx(TPSLOrderType, { tpPrice, slPrice }),
@@ -1341,9 +1381,10 @@ var useTPSLBuilder = (options) => {
1341
1381
  const [needConfirm] = useLocalStorage("orderly_order_confirm", true);
1342
1382
  const { marginMode: symbolMarginMode } = useMarginModeBySymbol(symbol);
1343
1383
  const [{ rows: positions }] = usePositionStream();
1344
- const mainAccountPosition = positions.find(
1345
- (item) => item.symbol === symbol && item.margin_mode === (options.position?.margin_mode ?? symbolMarginMode)
1346
- );
1384
+ const mainAccountPosition = positions.find((item) => {
1385
+ const marginMode = options.position?.margin_mode ?? symbolMarginMode;
1386
+ return item.symbol === symbol && item.margin_mode === marginMode;
1387
+ });
1347
1388
  const isSubAccount = options.position?.account_id && options.position?.account_id !== state.mainAccountId;
1348
1389
  const position = isSubAccount ? options.position : mainAccountPosition;
1349
1390
  const estLiqPrice = useEstLiqPriceBySymbol(
@@ -1670,6 +1711,8 @@ var TPSLAdvancedUI = (props) => {
1670
1711
  PnL: formattedOrder.tp_pnl ?? "",
1671
1712
  Offset: formattedOrder.tp_offset ?? "",
1672
1713
  "Offset%": formattedOrder.tp_offset_percentage ?? "",
1714
+ OffsetFromMark: formattedOrder.tp_offset_from_mark ?? "",
1715
+ PercentageFromMark: formattedOrder.tp_offset_percentage_from_mark ?? "",
1673
1716
  ROI: formattedOrder.tp_ROI ?? ""
1674
1717
  });
1675
1718
  const [slValues, setSlValues] = useState({
@@ -1680,6 +1723,8 @@ var TPSLAdvancedUI = (props) => {
1680
1723
  PnL: formattedOrder.sl_pnl ?? "",
1681
1724
  Offset: formattedOrder.sl_offset ?? "",
1682
1725
  "Offset%": formattedOrder.sl_offset_percentage ?? "",
1726
+ OffsetFromMark: formattedOrder.sl_offset_from_mark ?? "",
1727
+ PercentageFromMark: formattedOrder.sl_offset_percentage_from_mark ?? "",
1683
1728
  ROI: formattedOrder.sl_ROI ?? ""
1684
1729
  });
1685
1730
  useEffect(() => {
@@ -1692,6 +1737,8 @@ var TPSLAdvancedUI = (props) => {
1692
1737
  PnL: formattedOrder.tp_pnl ?? "",
1693
1738
  Offset: formattedOrder.tp_offset ?? "",
1694
1739
  "Offset%": formattedOrder.tp_offset_percentage ?? "",
1740
+ OffsetFromMark: formattedOrder.tp_offset_from_mark ?? "",
1741
+ PercentageFromMark: formattedOrder.tp_offset_percentage_from_mark ?? "",
1695
1742
  ROI: formattedOrder.tp_ROI ?? ""
1696
1743
  }));
1697
1744
  }, [formattedOrder]);
@@ -1705,6 +1752,8 @@ var TPSLAdvancedUI = (props) => {
1705
1752
  PnL: formattedOrder.sl_pnl ?? "",
1706
1753
  Offset: formattedOrder.sl_offset ?? "",
1707
1754
  "Offset%": formattedOrder.sl_offset_percentage ?? "",
1755
+ OffsetFromMark: formattedOrder.sl_offset_from_mark ?? "",
1756
+ PercentageFromMark: formattedOrder.sl_offset_percentage_from_mark ?? "",
1708
1757
  ROI: formattedOrder.sl_ROI ?? ""
1709
1758
  }));
1710
1759
  }, [formattedOrder]);
@@ -1935,22 +1984,31 @@ var useTPSLAdvanced = (props) => {
1935
1984
  sl_pnl: order2.sl_pnl,
1936
1985
  sl_offset: order2.sl_offset,
1937
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,
1938
1989
  tp_pnl: order2.tp_pnl,
1939
1990
  tp_offset: order2.tp_offset,
1940
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,
1941
1994
  margin_mode: order2.margin_mode
1942
1995
  }
1943
1996
  });
1944
1997
  const slPriceError = useTpslPriceChecker({
1945
1998
  slPrice: formattedOrder.sl_trigger_price,
1946
1999
  liqPrice: state.estLiqPrice,
1947
- side: formattedOrder.side
2000
+ side: formattedOrder.side,
2001
+ markPrice: state.markPrice,
2002
+ currentPosition: state.currentPosition,
2003
+ orderQuantity: Number(formattedOrder.order_quantity)
1948
2004
  });
1949
2005
  const onSubmit = () => {
1950
2006
  const isSlPriceError = slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_ERROR;
1951
2007
  helper.validate(isSlPriceError ? slPriceError : void 0).then(() => {
1952
2008
  props.onSubmit(formattedOrder);
1953
2009
  }).catch((err) => {
2010
+ console.log("metaState", metaState);
2011
+ console.log("err", err);
1954
2012
  });
1955
2013
  };
1956
2014
  return {
@@ -2910,9 +2968,8 @@ registerSimpleSheet(TPSLDetailSheetId, TPSLDetailWidget, {
2910
2968
  }
2911
2969
  });
2912
2970
  var useTPSLSimpleDialog = (options) => {
2913
- const { type, triggerPrice, symbol } = options;
2971
+ const { type, triggerPrice, symbol, marginMode } = options;
2914
2972
  const symbolInfo = useSymbolsInfo();
2915
- const { marginMode } = useMarginModeBySymbol(symbol ?? "");
2916
2973
  const [{ rows: positions }, positionsInfo] = usePositionStream(symbol);
2917
2974
  const position = positions?.find((item) => item.margin_mode === marginMode);
2918
2975
  useRef(AlgoOrderRootType.TP_SL);
@@ -3162,7 +3219,7 @@ var TPSLSimpleDialogUI = (props) => {
3162
3219
  TPSLQuantity,
3163
3220
  {
3164
3221
  maxQty: props.maxQty,
3165
- quantity: Number(props.orderQuantity ?? props.maxQty),
3222
+ quantity: props.orderQuantity ?? props.maxQty,
3166
3223
  baseTick: props.symbolInfo("base_tick"),
3167
3224
  base_dp: props.symbolInfo("base_dp"),
3168
3225
  base: props.symbolInfo("base"),
@@ -3455,6 +3512,8 @@ var EditBracketOrderUI = (props) => {
3455
3512
  PnL: formattedOrder.tp_pnl ?? "",
3456
3513
  Offset: formattedOrder.tp_offset ?? "",
3457
3514
  "Offset%": formattedOrder.tp_offset_percentage ?? "",
3515
+ OffsetFromMark: formattedOrder.tp_offset_from_mark ?? "",
3516
+ PercentageFromMark: formattedOrder.tp_offset_percentage_from_mark ?? "",
3458
3517
  ROI: formattedOrder.tp_ROI ?? ""
3459
3518
  });
3460
3519
  const [slValues, setSlValues] = useState({
@@ -3465,6 +3524,8 @@ var EditBracketOrderUI = (props) => {
3465
3524
  PnL: formattedOrder.sl_pnl ?? "",
3466
3525
  Offset: formattedOrder.sl_offset ?? "",
3467
3526
  "Offset%": formattedOrder.sl_offset_percentage ?? "",
3527
+ OffsetFromMark: formattedOrder.sl_offset_from_mark ?? "",
3528
+ PercentageFromMark: formattedOrder.sl_offset_percentage_from_mark ?? "",
3468
3529
  ROI: formattedOrder.sl_ROI ?? ""
3469
3530
  });
3470
3531
  useEffect(() => {
@@ -3477,6 +3538,8 @@ var EditBracketOrderUI = (props) => {
3477
3538
  PnL: formattedOrder.tp_pnl ?? "",
3478
3539
  Offset: formattedOrder.tp_offset ?? "",
3479
3540
  "Offset%": formattedOrder.tp_offset_percentage ?? "",
3541
+ OffsetFromMark: formattedOrder.tp_offset_from_mark ?? "",
3542
+ PercentageFromMark: formattedOrder.tp_offset_percentage_from_mark ?? "",
3480
3543
  ROI: formattedOrder.tp_ROI ?? ""
3481
3544
  }));
3482
3545
  }, [formattedOrder]);
@@ -3490,6 +3553,8 @@ var EditBracketOrderUI = (props) => {
3490
3553
  PnL: formattedOrder.sl_pnl ?? "",
3491
3554
  Offset: formattedOrder.sl_offset ?? "",
3492
3555
  "Offset%": formattedOrder.sl_offset_percentage ?? "",
3556
+ OffsetFromMark: formattedOrder.sl_offset_from_mark ?? "",
3557
+ PercentageFromMark: formattedOrder.sl_offset_percentage_from_mark ?? "",
3493
3558
  ROI: formattedOrder.sl_ROI ?? ""
3494
3559
  }));
3495
3560
  }, [formattedOrder]);
@@ -3631,6 +3696,7 @@ var EditBracketOrderUI = (props) => {
3631
3696
  props.onSubmit().then(() => {
3632
3697
  props.onClose?.();
3633
3698
  }).catch((err) => {
3699
+ console.log("--->>>cancel order", err);
3634
3700
  });
3635
3701
  },
3636
3702
  children: t("common.confirm")