@orderly.network/ui-tpsl 2.10.2 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +54 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +57 -20
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -10
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/orderInfo.tsx","../src/components/pnlInfo.tsx","../src/components/tpslInputRow/tpslInputRow.script.ts","../src/pnlInput/useBuilder.script.ts","../src/pnlInput/pnlInput.ui.tsx","../src/pnlInput/pnlInput.widget.tsx","../src/components/orderPriceType.tsx","../src/components/tpslInputRow/priceInput.tsx","../src/components/tpslInputRow/tpslInputRow.ui.tsx","../src/components/tpslInputRow/tpslInputRow.widget.tsx","../src/components/tpslPostionType/tpslPositionType.script.tsx","../src/components/tpslPostionType/tpslPositionType.ui.tsx","../src/components/tpslPostionType/tpslPostionType.widget.tsx","../src/components/tpslQty.tsx","../src/positionTPSL/tpsl.ui.tsx","../src/positionTPSL/positionTpslConfirm.tsx","../src/positionTPSL/useTPSL.script.tsx","../src/positionTPSL/tpsl.widget.tsx","../src/editorPopover.tsx","../src/editorSheet.tsx","../src/tpslAdvanced/tpslAdvanced.ui.tsx","../src/tpslAdvanced/useTPSLAdvanced.script.ts","../src/tpslAdvanced/tpslAdvanced.widget.tsx","../src/tpslDetail/tpslDetail.script.tsx","../src/tpslDetail/tpslDetailProvider.tsx","../src/tpslDetail/components/common.tsx","../src/tpslDetail/components/estPnl.tsx","../src/tpslDetail/components/orderPrice.tsx","../src/tpslDetail/components/qty.tsx","../src/tpslDetail/components/triggerPrice.tsx","../src/components/closeLiqPriceIcon.tsx","../src/tpslDetail/components/type.tsx","../src/tpslDetail/useColum.tsx","../src/tpslDetail/ordersTable.tsx","../src/tpslDetail/ordersTable.mobile.tsx","../src/tpslDetail/tsplDetail.ui.tsx","../src/tpslDetail/tpslDetail.widget.tsx","../src/tpslSimpleDialog/tpslSimpleDialog.script.tsx","../src/tpslSimpleDialog/tpslSimpleDialog.ui.tsx","../src/tpslSimpleDialog/tpslSimpleDialog.widget.tsx","../src/editBracketOrder/editBracketOrder.script.tsx","../src/editBracketOrder/editBracketOrder.ui.tsx","../src/editBracketOrder/editBracketOrder.widget.tsx"],"names":["order","useTranslation","jsx","Text","jsxs","Flex","cn","useLeverageBySymbol","useMemo","roi","value","options","Decimal","mode","useState","OrderType","Input","inputFormatter","Grid","PositionType","Fragment","Select","useRef","useEffect","qty","useOrderEntryFormErrorMsg","OrderSide","useLocalStorage","Box","Checkbox","ERROR_MSG_CODES","type","utils","maxQty","AlgoOrderRootType","modal","Button","ScrollArea","Divider","DotStatus","useTpslPriceChecker","registerSimpleSheet","registerSimpleDialog","useSymbolsInfo","useEventEmitter","useAccount","useScreen","partialPositionOrders","useEstLiqPriceBySymbol","perpPositions","findTPSLFromOrder","ExclamationFillIcon","Tooltip","ThrottledButton","toast","AuthGuardDataTable","CancelAllBtn","usePositionStream","useTPSLOrder","useMemoizedFn","SDKError","useOrderEntry"],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n useIndexPrice,\n useMarkPrice,\n useLeverageBySymbol,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderlyOrder } from \"@orderly.network/types\";\nimport { cn, Flex, Grid, Text, TokenIcon } from \"@orderly.network/ui\";\n\ntype Props = {\n order: Partial<OrderlyOrder>;\n baseDP?: number;\n quoteDP?: number;\n estLiqPrice?: number;\n className?: string;\n classNames?: {\n root?: string;\n symbol?: string;\n container?: string;\n };\n symbolLeverage?: number;\n};\nexport const OrderInfo = (props: Props) => {\n const { t } = useTranslation();\n const { order, symbolLeverage } = props;\n const { symbol } = order;\n const markPrice = useMarkPrice(symbol!);\n const indexPrice = useIndexPrice(symbol!);\n\n const leverage = useLeverageBySymbol(symbolLeverage ? undefined : symbol);\n\n const currentLeverage = symbolLeverage || leverage;\n\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className={cn(\n \"oui-w-full oui-gap-3 oui-font-semibold \",\n props.classNames?.root,\n )}\n >\n <Flex\n itemAlign={\"center\"}\n className={cn(\"oui-gap-2 \", props.classNames?.symbol)}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <TokenIcon symbol={symbol} className=\"oui-size-5\" />\n <Text.formatted\n className=\"oui-whitespace-nowrap oui-break-normal\"\n rule=\"symbol\"\n formatString=\"base-type\"\n size=\"sm\"\n weight=\"semibold\"\n intensity={98}\n >\n {symbol}\n </Text.formatted>\n </Flex>\n <Text\n size=\"2xs\"\n className=\"oui-h-[18px] oui-rounded oui-bg-base-7 oui-px-2 oui-font-semibold oui-text-base-contrast-36\"\n >\n {currentLeverage}x\n </Text>\n </Flex>\n <Grid\n cols={2}\n gapX={2}\n gapY={1}\n className={cn(\"oui-w-full oui-gap-x-2 \", props.classNames?.container)}\n >\n <Flex justify={\"between\"} className=\" oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"common.quantity\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-base-contrast-80\"\n size=\"2xs\"\n dp={props.baseDP ?? 2}\n >\n {Number(order.order_quantity)}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"common.lastPrice\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-base-contrast-80\"\n size=\"2xs\"\n dp={props.quoteDP ?? 2}\n >\n {indexPrice?.data}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"common.orderPrice\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-base-contrast-80\"\n size=\"2xs\"\n dp={props.quoteDP ?? 2}\n >\n {Number(order.order_price)}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"common.markPrice\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-base-contrast-80\"\n size=\"2xs\"\n dp={props.quoteDP ?? 2}\n >\n {markPrice?.data}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"positions.column.liqPrice\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-warning\"\n size=\"2xs\"\n dp={props.quoteDP ?? 2}\n >\n {props.estLiqPrice ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Grid>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal, checkIsNaN } from \"@orderly.network/utils\";\n\ntype Props = {\n tp_pnl?: string | number;\n sl_pnl?: string | number;\n className?: string;\n};\n\nexport const PnlInfo = (props: Props) => {\n const { t } = useTranslation();\n const { tp_pnl, sl_pnl } = props;\n const riskRatio = useMemo(() => {\n const defaultNode = <Text className=\"oui-text-base-contrast-36\">-- x</Text>;\n if (tp_pnl === undefined || sl_pnl === undefined) {\n return defaultNode;\n }\n if (checkIsNaN(tp_pnl) || checkIsNaN(sl_pnl)) {\n return defaultNode;\n }\n const tpDecimal = new Decimal(tp_pnl);\n const slDecimal = new Decimal(sl_pnl);\n if (slDecimal.isZero() || tpDecimal.isZero()) {\n return defaultNode;\n }\n const ratio = tpDecimal.div(slDecimal).abs().toNumber().toFixed(2);\n return (\n <Flex gap={1} itemAlign={\"center\"} className=\"oui-text-base-contrast-80\">\n <Text>{ratio}</Text>\n <Text className=\"oui-text-base-contrast-36\">x</Text>\n </Flex>\n );\n return defaultNode;\n }, [tp_pnl, sl_pnl]);\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className={cn(\n \"oui-w-full oui-gap-1 oui-text-2xs oui-text-base-contrast-36\",\n props.className,\n )}\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.totalEstTpPnl\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-text-base-contrast-36 oui-ml-1\">USDC</Text>\n }\n rule=\"price\"\n coloring\n visible={true}\n size=\"2xs\"\n dp={2}\n >\n {tp_pnl ? Number(tp_pnl) : \"--\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.totalEstSlPnl\")}</Text>\n {sl_pnl ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-text-base-contrast-36 oui-ml-1\">USDC</Text>\n }\n coloring\n visible={true}\n size=\"2xs\"\n dp={2}\n >\n {Number(sl_pnl)}\n </Text.numeral>\n ) : (\n <Text size=\"2xs\">-- USDC</Text>\n )}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.riskRewardRatio\")}</Text>\n <Text className=\"oui-text-base-contrast-80\" size=\"2xs\">\n {riskRatio}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport {\n OrderValidationResult,\n useLeverageBySymbol,\n} from \"@orderly.network/hooks\";\nimport { order } from \"@orderly.network/perp\";\nimport { OrderSide, OrderType, PositionType } from \"@orderly.network/types\";\n\nexport type Props = {\n disableOrderTypeSelector?: boolean;\n type: \"tp\" | \"sl\";\n quote_dp: number;\n positionType: PositionType;\n errors: OrderValidationResult | null;\n hideOrderPrice?: boolean;\n values: {\n // enable: boolean;\n trigger_price: string | undefined;\n PnL: string | undefined;\n Offset: string | undefined;\n \"Offset%\": string | undefined;\n ROI?: string | undefined;\n order_price: string | undefined;\n order_type: OrderType;\n };\n onChange: (key: string, value: string | boolean | number) => void;\n rootOrderPrice: string | undefined;\n symbol: string;\n disableEnableCheckbox?: boolean;\n symbolLeverage?: number;\n side: OrderSide;\n inputWarnNode?: React.ReactNode;\n};\nexport const useTPSLInputRowScript = (props: Props) => {\n const { values, side, type, rootOrderPrice } = props;\n // if symbolLeverage is not provided, get it from useLeverageBySymbol\n const symbolLeverage = useLeverageBySymbol(\n props.symbolLeverage ? undefined : props.symbol,\n );\n\n const leverage = props.symbolLeverage || symbolLeverage;\n\n const roi = useMemo(() => {\n if (!leverage || !rootOrderPrice || Number(rootOrderPrice) === 0) {\n return null;\n }\n\n let closePrice: string | undefined;\n if (values.order_type === OrderType.MARKET) {\n closePrice = values.trigger_price;\n } else if (values.order_type === OrderType.LIMIT) {\n closePrice = values.order_price;\n }\n if (!closePrice) {\n return null;\n }\n\n try {\n const roi = order.tpslROI({\n side,\n type,\n closePrice: Number(closePrice),\n orderPrice: Number(rootOrderPrice),\n leverage,\n });\n return roi * 100;\n } catch (error) {\n console.error(\"error\", error);\n return null;\n }\n }, [values, leverage, rootOrderPrice, type, side]);\n\n return {\n ...props,\n roi,\n };\n};\n","import { useMemo, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { MenuItem } from \"@orderly.network/ui\";\nimport type {\n InputFormatter,\n InputFormatterOptions,\n} from \"@orderly.network/ui\";\nimport { Decimal, todpIfNeed } from \"@orderly.network/utils\";\n\nexport enum PnLMode {\n PnL = \"PnL\",\n OFFSET = \"Offset\",\n PERCENTAGE = \"Offset%\",\n}\n\nexport type PNL_Values = {\n PnL: string | undefined;\n Offset: string | undefined;\n \"Offset%\": string | undefined;\n};\n\nexport type BuilderProps = {\n type: \"TP\" | \"SL\";\n\n quote_dp?: number;\n onChange: (key: string, value: number | string) => void;\n\n values: PNL_Values;\n};\n\nexport const usePNLInputBuilder = (props: BuilderProps) => {\n const { type, values } = props;\n const [mode, setMode] = useLocalStorage<PnLMode>(\n \"TP/SL_Mode\",\n PnLMode.PERCENTAGE,\n );\n const [focus, setFocus] = useState(true);\n\n const { t } = useTranslation();\n\n const key = useMemo(() => {\n switch (mode) {\n case PnLMode.OFFSET:\n return `${type.toLowerCase()}_offset`;\n case PnLMode.PERCENTAGE:\n return `${type.toLowerCase()}_offset_percentage`;\n default:\n return `${type.toLowerCase()}_pnl`;\n }\n }, [mode]);\n\n const value = useMemo(() => {\n return values[mode as keyof PNL_Values];\n }, [values, mode]);\n\n const modes = useMemo<MenuItem[]>(() => {\n return [\n {\n label: t(\"tpsl.pnl\"),\n value: PnLMode.PnL,\n testId: `${PnLMode.PnL}_menu_item`,\n },\n {\n label: t(\"tpsl.offset\"),\n value: PnLMode.OFFSET,\n testId: `${PnLMode.OFFSET}_mneu_item`,\n },\n {\n label: `${t(\"tpsl.offset\")}%`,\n value: PnLMode.PERCENTAGE,\n testId: `${PnLMode.PERCENTAGE}_menu_item`,\n },\n ];\n }, [t]);\n\n const percentageSuffix = useRef<string>(\"\");\n\n const onValueChange = (value: string) => {\n props.onChange(key, value);\n };\n\n const formatter = (options: {\n dp?: number;\n mode: PnLMode;\n }): InputFormatter => {\n const { dp = 2 } = options;\n return {\n onRenderBefore: (\n value: string | number,\n options: InputFormatterOptions,\n ) => {\n value = `${value}`; // convert to string\n\n if (focus) {\n // not need to add \"-\", because the value is already negative\n // if (type === \"SL\" && mode === PnLMode.PnL) {\n // value = value.startsWith(\"-\") ? value : \"-\" + value;\n // }\n }\n\n if (value === \"\" || value === \"-\") return \"\";\n // if (mode === PnLMode.PnL || mode === PnLMode.OFFSET) {\n // return commify(value);\n // }\n\n if (mode === PnLMode.PERCENTAGE) {\n try {\n // fix value is invalid decimal string, like \"-\"\n return `${new Decimal(\n value.replace(\n new RegExp(percentageSuffix.current.replace(\".\", \"\\\\.\") + \"$\"),\n \"\",\n ),\n )\n .mul(100)\n .todp(2, 4)\n .toString()}${percentageSuffix.current}`;\n } catch {\n return \"\";\n }\n } else if (mode === PnLMode.OFFSET) {\n value = todpIfNeed(value, dp);\n } else {\n // value = new Decimal(value).todp(2).toString();\n }\n\n return `${value}`;\n },\n onSendBefore: (value: string) => {\n if (/^\\-?0{2,}$/.test(value)) {\n return \"0\";\n }\n\n if (mode === PnLMode.PERCENTAGE) {\n // console.log(\"value\", value);\n if (value !== \"\") {\n // percentageSuffix.current = value.endsWith(\".\") ? \".\" : \"\";\n value = todpIfNeed(value, 2);\n const endStr = value.match(/\\.0{0,2}$/);\n if (!!endStr) {\n percentageSuffix.current = endStr[0];\n } else {\n percentageSuffix.current = \"\";\n }\n // fix value is invalid decimal string, like \"1-46.35\"\n try {\n value = new Decimal(value).div(100).toString();\n } catch {\n value = \"\";\n }\n value = `${value}${percentageSuffix.current}`;\n }\n } else if (mode === PnLMode.PnL && type === \"SL\" && focus) {\n // not need to add \"-\", because the value is already negative\n value = value.startsWith(\"-\") ? value : \"-\" + value;\n } else {\n value = todpIfNeed(value, dp);\n }\n\n if (value === \"\" || value === \"-\") return \"\";\n\n return value;\n },\n };\n // return {\n // onRenderBefore: (\n // value: string | number,\n // options: InputFormatterOptions\n // ) => {\n // // console.log(\"???\", options);\n // const { isFocused } = options;\n // value = `${value}`;\n // if (value === \"\" || value === \"-\") return \"\";\n\n // // if (type === \"SL\" && mode === PnLMode.PnL) {\n // // if (isFocused) {\n // // value = value.startsWith(\"-\") ? value : \"-\" + value;\n // // }\n // // }\n\n // if (mode === PnLMode.PERCENTAGE) {\n // return `${todpIfNeed(new Decimal(value).mul(100).toString(), 2)}${\n // percentageSuffix.current\n // }`;\n // // return (Number(value) * 100).toFixed(2);\n // } else if (mode === PnLMode.OFFSET) {\n // value = todpIfNeed(value, 2);\n // } else {\n // // value = new Decimal(value).todp(2).toString();\n // }\n\n // return value;\n // },\n // onSendBefore: (value: string, options: InputFormatterOptions) => {\n // const { isFocused } = options;\n\n // if (mode === PnLMode.PERCENTAGE) {\n // if (value !== \"\") {\n // percentageSuffix.current = value.endsWith(\".\") ? \".\" : \"\";\n // value = new Decimal(value).div(100).toString();\n // value = todpIfNeed(value, 4);\n // }\n // } else {\n // // value = todpIfNeed(value, quote_dp);\n // if (isFocused) {\n // if (type === \"SL\" && mode === PnLMode.PnL) {\n // // if (\n // // typeof values[PnLMode.PnL] !== \"undefined\" &&\n // // values[PnLMode.PnL] !== \"\"\n // // )\n // // return value;\n // const num = Number(value);\n // if (!isNaN(num) && num !== 0) {\n // value = (Math.abs(num) * -1).toString();\n // } else {\n // value = \"\";\n // }\n // }\n // }\n // }\n\n // return value;\n // },\n // };\n };\n\n return {\n mode,\n modes,\n type: props.type,\n formatter,\n onModeChange: (mode: PnLMode) => {\n setMode(mode);\n },\n value,\n pnl: values[PnLMode.PnL],\n onValueChange,\n quote_dp: props.quote_dp,\n setFocus,\n };\n};\n\nexport type PNLInputState = ReturnType<typeof usePNLInputBuilder>;\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n CaretDownIcon,\n cn,\n Input,\n MenuItem,\n SimpleDropdownMenu,\n} from \"@orderly.network/ui\";\nimport { inputFormatter, Text } from \"@orderly.network/ui\";\nimport { PNLInputState, PnLMode } from \"./useBuilder.script\";\n\nexport type PNLInputProps = PNLInputState & { testId?: string; quote: string };\n\nexport const PNLInput = (props: PNLInputProps) => {\n const {\n mode,\n modes,\n onModeChange,\n onValueChange,\n quote,\n quote_dp,\n value,\n pnl,\n } = props;\n const { t } = useTranslation();\n\n const [prefix, setPrefix] = useState<string>(mode);\n const [placeholder, setPlaceholder] = useState<string>(\n mode === PnLMode.PERCENTAGE ? \"%\" : quote,\n );\n\n const color = useMemo(() => {\n const num = Number(pnl);\n\n if (isNaN(num) || num === 0) return \"\";\n\n if (num > 0) return \"oui-text-trade-profit\";\n if (num < 0) return \"oui-text-trade-loss\";\n }, [pnl]);\n\n useEffect(() => {\n const label = modes.find((item) => item.value === mode)?.label;\n setPrefix(label!);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n }, [mode, modes]);\n\n return (\n <Input\n prefix={prefix}\n size={{\n initial: \"lg\",\n lg: \"md\",\n }}\n placeholder={placeholder}\n align={\"right\"}\n value={value}\n data-testid={props.testId}\n autoComplete={\"off\"}\n onValueChange={onValueChange}\n formatters={[\n // inputFormatter.numberFormatter,\n props.formatter({ dp: quote_dp, mode }),\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]}\n // className={color}\n classNames={{\n input: cn(\"oui-text-2xs\", color),\n prefix: \"oui-text-base-contrast-54 oui-text-2xs\",\n root: \"oui-outline-line-12 focus-within:oui-outline-primary-light\",\n }}\n onFocus={() => {\n setPlaceholder(\"\");\n props.setFocus(true);\n }}\n onBlur={() => {\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n props.setFocus(false);\n }}\n // value={props.value}\n suffix={\n <>\n {mode === PnLMode.PERCENTAGE && !!value && (\n <Text\n size={\"2xs\"}\n color=\"inherit\"\n className={cn(\"oui-ml-[2px]\", color)}\n >\n %\n </Text>\n )}\n <PNLMenus\n mode={mode}\n modes={modes}\n onModeChange={(item) => onModeChange(item.value as PnLMode)}\n />\n </>\n }\n />\n );\n};\n\nconst PNLMenus = (props: {\n mode?: string;\n modes: MenuItem[];\n onModeChange: (value: MenuItem) => void;\n}) => {\n return (\n <SimpleDropdownMenu\n currentValue={props.mode}\n menu={props.modes}\n align={\"end\"}\n size={\"xs\"}\n className={\"oui-min-w-[80px]\"}\n onSelect={(item) => props.onModeChange(item as MenuItem)}\n >\n <button className={\"oui-p-2\"}>\n <CaretDownIcon size={12} color={\"white\"} />\n </button>\n </SimpleDropdownMenu>\n );\n};\n","import { PNLInput } from \"./pnlInput.ui\";\nimport { BuilderProps, usePNLInputBuilder } from \"./useBuilder.script\";\n\nexport const PnlInputWidget = (\n props: BuilderProps & {\n testId?: string;\n quote: string;\n }\n) => {\n const { testId, quote, ...rest } = props;\n const state = usePNLInputBuilder(rest);\n return <PNLInput {...state} testId={testId} quote={quote} />;\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { Select, Text } from \"@orderly.network/ui\";\n\ntype Props = {\n type: OrderType;\n onChange: (type: OrderType) => void;\n disabled?: boolean;\n};\n\nexport const OrderPriceType = (props: Props) => {\n const { t } = useTranslation();\n const options = [\n { label: t(\"orderEntry.orderType.limitOrder\"), value: OrderType.LIMIT },\n { label: t(\"orderEntry.orderType.marketOrder\"), value: OrderType.MARKET },\n ];\n return (\n <Select.options\n value={props.type}\n options={options}\n disabled={props.disabled}\n onValueChange={props.onChange}\n size={\"xs\"}\n classNames={{\n trigger:\n \"oui-bg-transparent oui-w-auto oui-outline-line-1 oui-input-root oui-bg-base-6 oui-h-10 lg:oui-h-8 oui-outline-line-12 \",\n }}\n valueFormatter={(value, option) => {\n const displayLabel = {\n [OrderType.LIMIT]: t(\"orderEntry.orderType.limit\"),\n [OrderType.MARKET]: t(\"common.marketPrice\"),\n }[value];\n return <Text size={\"2xs\"}>{displayLabel}</Text>;\n }}\n />\n );\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Input, inputFormatter } from \"@orderly.network/ui\";\n\nexport const PriceInput: React.FC<{\n type: string;\n label?: string;\n value?: string | number;\n error?: string;\n onValueChange: (value: string) => void;\n quote_dp: number;\n disabled?: boolean;\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}> = (props) => {\n const [placeholder, setPlaceholder] = useState<string>(\"USDC\");\n const { t } = useTranslation();\n\n return (\n <Input.tooltip\n data-testid={`oui-testid-tpsl-popUp-${props.type.toLowerCase()}-input`}\n prefix={props.label ?? t(\"common.markPrice\")}\n size={{ initial: \"lg\", lg: \"md\" }}\n tooltip={props.error}\n placeholder={placeholder}\n disabled={props.disabled}\n align={\"right\"}\n autoComplete={\"off\"}\n value={props.value}\n color={props.error ? \"danger\" : undefined}\n classNames={{\n input: cn(\n \"oui-text-2xs placeholder:oui-text-2xs\",\n props.classNames?.input,\n ),\n prefix: cn(\n \"oui-text-base-contrast-54 oui-text-2xs\",\n props.classNames?.prefix,\n ),\n root: cn(\"oui-w-full\", props.classNames?.root),\n }}\n onValueChange={props.onValueChange}\n onFocus={() => {\n setPlaceholder(\"\");\n }}\n onBlur={() => {\n setPlaceholder(\"USDC\");\n }}\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(props.quote_dp),\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]}\n />\n );\n};\n","import { FC, Fragment, useEffect } from \"react\";\nimport { useMemoizedFn } from \"@orderly.network/hooks\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport { OrderType, PositionType } from \"@orderly.network/types\";\nimport { Flex, Text, Grid, Checkbox, cn } from \"@orderly.network/ui\";\nimport { PnlInputWidget } from \"../../pnlInput/pnlInput.widget\";\nimport { OrderPriceType } from \"../orderPriceType\";\nimport { PriceInput } from \"./priceInput\";\nimport { useTPSLInputRowScript } from \"./tpslInputRow.script\";\n\ntype TPSLInputRowProps = ReturnType<typeof useTPSLInputRowScript>;\n\nexport const TPSLInputRowUI: FC<TPSLInputRowProps> = (props) => {\n const { t } = useTranslation();\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n const { values, positionType } = props;\n\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"start\"}\n className=\"oui-w-full\"\n >\n {/* <Flex className=\"oui-w-full\" itemAlign={\"center\"} justify={\"start\"}>\n {!props.disableEnableCheckbox && (\n <Checkbox\n data-testid={`oui-testid-orderEntry-${props.type}-enable-checkBox`}\n id={`enable_${props.type}`}\n color={\"white\"}\n checked={values.enable}\n onCheckedChange={(checked: boolean) => {\n props.onChange(`${props.type}_enable`, !!checked);\n }}\n />\n )}\n <label\n htmlFor={`enable_${props.type}`}\n className={cn(\n \"oui-text-sm\",\n props.disableEnableCheckbox\n ? \"oui-ml-0 oui-text-base-contrast\"\n : \"oui-ml-1 oui-text-base-contrast-36\",\n )}\n >\n {props.type === \"tp\" ? t(\"tpsl.takeProfit\") : t(\"tpsl.stopLoss\")}\n </label>\n </Flex> */}\n <Text size=\"sm\" intensity={98}>\n {props.type === \"tp\" ? t(\"tpsl.takeProfit\") : t(\"tpsl.stopLoss\")}\n </Text>\n <Flex\n direction={\"column\"}\n gap={2}\n itemAlign={\"start\"}\n className={\"oui-w-full oui-pt-2\"}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-w-full oui-gap-0.5\"\n >\n <Text className=\"oui-text-2xs oui-text-base-contrast-54\">\n {t(\"common.triggerPrice\")}\n </Text>\n <Grid cols={2} gap={2} className=\"oui-w-full oui-px-0.5\">\n <PriceInput\n type={`${props.type} price`}\n value={values.trigger_price}\n error={getErrorMsg(`${props.type}_trigger_price`)}\n onValueChange={(value) => {\n props.onChange(`${props.type}_trigger_price`, value);\n }}\n quote_dp={props.quote_dp}\n classNames={{\n root: props.inputWarnNode\n ? \"oui-outline-warning-darken focus-within:oui-outline-warning-darken\"\n : undefined,\n }}\n />\n <PnlInputWidget\n type={props.type === \"tp\" ? \"TP\" : \"SL\"}\n onChange={(key, value) => {\n props.onChange(key, value as string);\n }}\n quote={\"USDC\"}\n quote_dp={2}\n values={values}\n />\n </Grid>\n </Flex>\n {props.inputWarnNode}\n <Flex\n direction={\"column\"}\n className={cn(\n \"oui-w-full oui-gap-0.5\",\n props.hideOrderPrice ? \"oui-hidden\" : \"\",\n )}\n itemAlign={\"start\"}\n >\n <Text className=\"oui-text-2xs oui-text-base-contrast-54\">\n {t(\"common.orderPrice\")}\n </Text>\n <Grid cols={2} gap={2} className=\"oui-w-full oui-px-0.5\">\n <PriceInput\n disabled={\n positionType === PositionType.FULL ||\n values.order_type === OrderType.MARKET\n }\n type={\"order price\"}\n label={\n values.order_type === OrderType.LIMIT\n ? t(\"common.limit\")\n : t(\"common.market\")\n }\n value={values.order_price}\n error={getErrorMsg(`${props.type}_order_price`)}\n onValueChange={(value) => {\n props.onChange(`${props.type}_order_price`, value);\n }}\n quote_dp={props.quote_dp}\n />\n <OrderPriceType\n disabled={\n positionType === PositionType.FULL ||\n props.disableOrderTypeSelector\n }\n type={values.order_type}\n onChange={(value) => {\n props.onChange(`${props.type}_order_type`, value as OrderType);\n }}\n />\n </Grid>\n </Flex>\n </Flex>\n <RenderROI\n price={\n values.order_type === OrderType.MARKET\n ? values.trigger_price\n : values.order_price\n }\n orderType={values.order_type}\n pnl={values.PnL}\n roi={props.roi}\n dp={props.quote_dp}\n className=\"oui-mt-1\"\n />\n </Flex>\n );\n};\n\nconst RenderROI: React.FC<{\n className?: string;\n price?: number | string;\n pnl?: number | string;\n roi?: number | null;\n dp: number;\n orderType: OrderType;\n}> = (props) => {\n const { t } = useTranslation();\n const { price, pnl, roi, dp, className, orderType } = props;\n if (!roi || !price || !pnl) {\n return null;\n }\n return (\n <Text className={cn(\"oui-text-2xs oui-text-base-contrast-36\", className)}>\n <Trans\n i18nKey=\"tpsl.advanced.ROI\"\n components={[\n <Fragment key=\"price\">\n <Text.numeral\n className=\"oui-px-1 oui-text-base-contrast\"\n dp={dp}\n suffix={<Text className=\"oui-pl-0.5\">USDC</Text>}\n >\n {price}\n </Text.numeral>\n </Fragment>,\n <Fragment key=\"orderType\">\n <Text className=\"oui-px-1 oui-text-base-contrast\">\n {orderType === OrderType.MARKET\n ? t(\"common.market\")\n : t(\"common.limit\")}\n </Text>\n </Fragment>,\n <Fragment key=\"pnl\">\n <Text.numeral\n coloring\n className=\"oui-whitespace-nowrap oui-px-1\"\n dp={2}\n suffix={<Text className=\"oui-pl-0.5\">USDC</Text>}\n >\n {pnl}\n </Text.numeral>\n </Fragment>,\n\n <Fragment key=\"roi\">\n <Text.numeral\n coloring\n className=\"oui-whitespace-nowrap oui-px-1\"\n dp={2}\n suffix=\"%\"\n >\n {roi}\n </Text.numeral>\n </Fragment>,\n ]}\n />\n </Text>\n );\n};\n","import { Props, useTPSLInputRowScript } from \"./tpslInputRow.script\";\nimport { TPSLInputRowUI } from \"./tpslInputRow.ui\";\n\nexport const TPSLInputRowWidget = (props: Props) => {\n const state = useTPSLInputRowScript(props);\n return <TPSLInputRowUI {...state} />;\n};\n","import { useState } from \"react\";\nimport { OrderlyOrder, PositionType } from \"@orderly.network/types\";\n\ntype OrderValueKeys = keyof OrderlyOrder;\nexport type PositionTypeProps = {\n disableSelector?: boolean;\n value: PositionType;\n onChange: (key: OrderValueKeys, value: any) => void;\n};\n\nexport const useTPSLPositionTypeScript = (props: PositionTypeProps) => {\n return {\n value: props.value,\n onChange: props.onChange,\n disableSelector: props.disableSelector,\n };\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { PositionType } from \"@orderly.network/types\";\nimport {\n ExclamationFillIcon,\n Flex,\n Select,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { useTPSLPositionTypeScript } from \"./tpslPositionType.script\";\n\ntype TPSLPositionTypeUIProps = ReturnType<typeof useTPSLPositionTypeScript>;\n\nconst positionTypeKey = \"position_type\";\nexport const TPSLPositionTypeUI = (props: TPSLPositionTypeUIProps) => {\n const { t } = useTranslation();\n const options = [\n {\n label: t(\"tpsl.partialPosition\"),\n value: PositionType.PARTIAL,\n },\n {\n label: t(\"tpsl.fullPosition\"),\n value: PositionType.FULL,\n },\n ];\n\n return (\n <Flex gap={1} itemAlign={\"center\"} justify={\"start\"}>\n <Tooltip\n className=\"oui-w-[280px] oui-p-3\"\n content={\n props.value === PositionType.FULL\n ? t(\"tpsl.positionType.full.tips\")\n : t(\"tpsl.positionType.partial.tips\")\n }\n >\n <ExclamationFillIcon\n className=\"oui-cursor-pointer oui-text-base-contrast-54\"\n size={12}\n />\n </Tooltip>\n {props.disableSelector ? (\n props.value === PositionType.FULL ? (\n <Text className=\"oui-text-2xs oui-font-normal oui-text-base-contrast-54\">\n {t(\"tpsl.positionType.full\")}\n </Text>\n ) : (\n <Text className=\"oui-text-2xs oui-font-normal oui-text-base-contrast-54\">\n {t(\"tpsl.positionType.partial\")}\n </Text>\n )\n ) : (\n <Select.options\n value={props.value}\n options={options}\n onValueChange={(event) => {\n props.onChange(positionTypeKey, event as PositionType);\n }}\n size={\"xs\"}\n classNames={{\n trigger:\n \" oui-bg-transparent oui-border-0 oui-w-auto oui-px-0 oui-font-normal\",\n }}\n contentProps={{\n className: \" oui-bg-base-8 oui-border-0\",\n }}\n />\n )}\n </Flex>\n );\n};\n","import {\n PositionTypeProps,\n useTPSLPositionTypeScript,\n} from \"./tpslPositionType.script\";\nimport { TPSLPositionTypeUI } from \"./tpslPositionType.ui\";\n\nexport const TPSLPositionTypeWidget = (props: PositionTypeProps) => {\n const state = useTPSLPositionTypeScript(props);\n return <TPSLPositionTypeUI {...state} />;\n};\n","import { memo, useEffect, useRef, useState } from \"react\";\nimport { utils } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Input, Slider, Text } from \"@orderly.network/ui\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { cn } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type TPSLQuantityProps = {\n maxQty: number;\n baseTick: number;\n base_dp: number;\n base: string;\n onQuantityChange?: (value: number | string) => void;\n quantity: number;\n isEditing?: boolean;\n errorMsg?: string;\n};\n\nexport const TPSLQuantity = memo<TPSLQuantityProps>((props) => {\n const { maxQty, base_dp, baseTick, quantity } = props;\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { t } = useTranslation();\n const [sliderValue, setSliderValue] = useState(0);\n\n // format quantity to base tick\n const formatQuantity = (value: string) => {\n let _qty = value;\n if (Number(value) > maxQty) {\n _qty = maxQty.toString();\n }\n if (baseTick > 0) {\n props.onQuantityChange?.(utils.formatNumber(_qty, baseTick) ?? value);\n }\n };\n\n const onSliderValueChange = (value: number) => {\n setSliderValue(value);\n // transform slider value to quantity\n const qty = new Decimal(value)\n .div(100)\n .mul(maxQty)\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n\n formatQuantity(qty);\n };\n\n useEffect(() => {\n const qty = Math.min(Number(quantity || 0), maxQty);\n // transform quantity to slider value\n const slider = new Decimal(qty)\n .div(maxQty)\n .mul(100)\n .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n .toNumber();\n\n setSliderValue(slider);\n }, [quantity, maxQty]);\n\n const errorMsg =\n props.quantity.toString().length > 0 ? props.errorMsg : undefined;\n\n return (\n <>\n <Flex gap={2}>\n <div className={\"oui-flex-1\"}>\n <Input.tooltip\n data-testid=\"oui-testid-tpsl-popUp-quantity-input\"\n ref={inputRef}\n prefix={t(\"common.quantity\")}\n size={{\n initial: \"md\",\n lg: \"sm\",\n }}\n align=\"right\"\n value={props.quantity}\n autoComplete=\"off\"\n classNames={{\n prefix: \"oui-text-base-contrast-54\",\n root: cn(\n \"oui-bg-base-5 oui-outline-line-12\",\n errorMsg && \"oui-outline-danger\",\n ),\n }}\n tooltipProps={{\n content: {\n className: \"oui-bg-base-6 oui-text-base-contrast-80\",\n },\n arrow: {\n className: \"oui-fill-base-6\",\n },\n }}\n tooltip={errorMsg}\n color={errorMsg ? \"danger\" : undefined}\n formatters={[\n inputFormatter.dpFormatter(props.base_dp),\n inputFormatter.numberFormatter,\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]}\n onValueChange={(value) => {\n props.onQuantityChange?.(value);\n // TODO: optimize this\n const qty = Number(value);\n if (qty && qty > props.maxQty) {\n const qty = props.maxQty;\n props.onQuantityChange?.(qty);\n inputRef.current?.blur();\n }\n }}\n onBlur={(e) => formatQuantity(e.target.value)}\n suffix={\n <span className=\"oui-px-3 oui-text-2xs oui-text-base-contrast-54\">\n {props.base}\n </span>\n }\n />\n </div>\n </Flex>\n <Flex mt={2} itemAlign={\"center\"} height={\"15px\"}>\n <Slider\n min={0}\n max={100}\n markCount={5}\n showTip\n value={[sliderValue]}\n color=\"primary\"\n onValueChange={(value) => {\n onSliderValueChange(value[0]);\n }}\n />\n </Flex>\n <Flex justify={\"between\"}>\n <Text.numeral color={\"primary\"} size={\"2xs\"} suffix=\"%\">\n {sliderValue}\n </Text.numeral>\n <Flex itemAlign={\"center\"} gap={1}>\n <button\n className={\"oui-leading-none\"}\n style={{ lineHeight: 0 }}\n onClick={() => {\n props.onQuantityChange?.(props.maxQty);\n }}\n >\n <Text color={\"primary\"} size={\"2xs\"}>\n {t(\"common.max\")}\n </Text>\n </button>\n\n <Text.numeral\n rule={\"price\"}\n size={\"2xs\"}\n intensity={54}\n tick={props.baseTick}\n >\n {props.maxQty}\n </Text.numeral>\n </Flex>\n </Flex>\n </>\n );\n});\n","import React, { useMemo } from \"react\";\nimport { ERROR_MSG_CODES } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport {\n Box,\n Button,\n Flex,\n Grid,\n Text,\n cn,\n ThrottledButton,\n ScrollArea,\n useScreen,\n ExclamationFillIcon,\n DotStatus,\n} from \"@orderly.network/ui\";\nimport { CloseToLiqPriceIcon } from \"../components/closeLiqPriceIcon\";\nimport { OrderInfo } from \"../components/orderInfo\";\nimport { PnlInfo } from \"../components/pnlInfo\";\nimport { TPSLInputRowWidget } from \"../components/tpslInputRow\";\nimport { TPSLPositionTypeWidget } from \"../components/tpslPostionType\";\nimport { TPSLQuantity } from \"../components/tpslQty\";\nimport { TPSLBuilderState } from \"./useTPSL.script\";\n\nexport type TPSLProps = {\n close?: () => void;\n onCancel?: () => void;\n onComplete?: () => void;\n withTriggerPrice?: boolean;\n};\n\n//------------- TPSL form start ---------------\nexport const TPSL: React.FC<TPSLBuilderState & TPSLProps> = (props) => {\n const {\n TPSL_OrderEntity,\n symbolInfo,\n onCancel,\n onComplete,\n status,\n position,\n setValues,\n isEditing,\n } = props;\n\n const { errors, validated } = props.metaState;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n // Filter errors for TP and SL components separately\n const tpErrors = useMemo(() => {\n if (!errors) return null;\n const { sl_trigger_price, ...rest } = errors;\n return rest;\n }, [errors]);\n\n const slErrors = useMemo(() => {\n if (!errors) return null;\n const { tp_trigger_price, ...rest } = errors;\n return rest;\n }, [errors]);\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n const { getErrorMsg: getSlPriceErrorMsg } = useOrderEntryFormErrorMsg(\n props.slPriceError,\n );\n\n const isSlPriceWarning =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n\n if (!position) {\n return null;\n }\n\n const tpslEnable =\n TPSL_OrderEntity.tp_trigger_price || TPSL_OrderEntity.sl_trigger_price;\n\n const renderQtyInput = () => {\n if (TPSL_OrderEntity.position_type === PositionType.FULL) {\n return null;\n }\n\n return (\n <Box className=\"oui-px-0.5\">\n <TPSLQuantity\n maxQty={props.maxQty}\n quantity={(props.orderQuantity ?? props.maxQty) as number}\n baseTick={symbolInfo(\"base_tick\")}\n base_dp={symbolInfo(\"base_dp\")}\n onQuantityChange={props.setQuantity}\n base={symbolInfo(\"base\")}\n isEditing={props.isEditing}\n errorMsg={validated ? getErrorMsg(\"quantity\") : undefined}\n />\n </Box>\n );\n };\n\n return (\n <div id=\"orderly-tp_sl-order-edit-content\">\n <ScrollArea className={cn(isMobile && \"oui-h-[calc(100vh-200px)]\")}>\n <div className=\"oui-px-2\">\n <OrderInfo\n baseDP={symbolInfo(\"base_dp\")}\n quoteDP={symbolInfo(\"quote_dp\")}\n estLiqPrice={props.estLiqPrice}\n classNames={{\n root: \"oui-mb-3\",\n container: \"oui-gap-x-[30px]\",\n }}\n order={{\n symbol: position.symbol,\n order_quantity: position.position_qty.toString(),\n order_price: position.average_open_price.toString(),\n }}\n symbolLeverage={position.leverage}\n />\n <Flex\n direction=\"column\"\n justify=\"start\"\n itemAlign={\"start\"}\n gap={3}\n className=\"oui-mb-3 oui-w-full\"\n >\n {!isEditing && (\n <TPSLPositionTypeWidget\n disableSelector\n value={TPSL_OrderEntity.position_type ?? PositionType.PARTIAL}\n onChange={(key, value) => {\n props.setOrderValue(key as keyof OrderlyOrder, value);\n }}\n />\n )}\n {TPSL_OrderEntity.position_type === PositionType.FULL && (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={t(\"tpsl.positionType.full.tips.market\")}\n />\n )}\n </Flex>\n {renderQtyInput()}\n <Flex\n direction=\"column\"\n itemAlign={\"start\"}\n justify={\"start\"}\n gap={6}\n className=\"oui-mt-3 oui-w-full\"\n >\n <TPSLInputRowWidget\n symbol={position.symbol}\n rootOrderPrice={position.average_open_price.toString()}\n type=\"tp\"\n side={position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL}\n values={{\n // enable: TPSL_OrderEntity.tp_enable ?? false,\n trigger_price:\n TPSL_OrderEntity.tp_trigger_price?.toString() ?? undefined,\n PnL: TPSL_OrderEntity.tp_pnl?.toString() ?? undefined,\n Offset: TPSL_OrderEntity.tp_offset?.toString() ?? undefined,\n \"Offset%\":\n TPSL_OrderEntity.tp_offset_percentage?.toString() ??\n undefined,\n order_price:\n TPSL_OrderEntity.tp_order_price?.toString() ?? undefined,\n order_type: TPSL_OrderEntity.tp_order_type ?? OrderType.MARKET,\n }}\n hideOrderPrice={\n TPSL_OrderEntity.position_type === PositionType.FULL\n }\n errors={validated ? tpErrors : null}\n disableOrderTypeSelector={isEditing}\n quote_dp={symbolInfo(\"quote_dp\")}\n positionType={\n TPSL_OrderEntity.position_type ?? PositionType.PARTIAL\n }\n onChange={(key, value) => {\n props.setOrderValue(key as keyof OrderlyOrder, value);\n }}\n symbolLeverage={position.leverage}\n />\n\n <TPSLInputRowWidget\n inputWarnNode={\n isSlPriceWarning && (\n <DotStatus\n color=\"warning\"\n label={getSlPriceErrorMsg(\"sl_trigger_price\")}\n classNames={{\n root: \"oui-mt-1\",\n }}\n />\n )\n }\n symbol={position.symbol}\n rootOrderPrice={position.average_open_price.toString()}\n type=\"sl\"\n side={position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL}\n values={{\n // enable: TPSL_OrderEntity.sl_enable ?? false,\n trigger_price:\n TPSL_OrderEntity.sl_trigger_price?.toString() ?? undefined,\n PnL: TPSL_OrderEntity.sl_pnl?.toString() ?? undefined,\n Offset: TPSL_OrderEntity.sl_offset?.toString() ?? undefined,\n \"Offset%\":\n TPSL_OrderEntity.sl_offset_percentage?.toString() ??\n undefined,\n order_price:\n TPSL_OrderEntity.sl_order_price?.toString() ?? undefined,\n order_type: TPSL_OrderEntity.sl_order_type ?? OrderType.MARKET,\n }}\n hideOrderPrice={\n TPSL_OrderEntity.position_type === PositionType.FULL\n }\n errors={\n validated\n ? slErrors\n : isSlPriceError\n ? props.slPriceError\n : null\n }\n quote_dp={symbolInfo(\"quote_dp\")}\n positionType={\n TPSL_OrderEntity.position_type ?? PositionType.PARTIAL\n }\n disableOrderTypeSelector={isEditing}\n onChange={(key, value) => {\n props.setOrderValue(key as keyof OrderlyOrder, value);\n }}\n symbolLeverage={position.leverage}\n />\n </Flex>\n <PnlInfo\n tp_pnl={TPSL_OrderEntity.tp_pnl}\n sl_pnl={TPSL_OrderEntity.sl_pnl}\n className=\"oui-my-3\"\n />\n </div>\n </ScrollArea>\n <Grid px={2} cols={2} gap={3} mt={4}>\n <Button\n size={\"md\"}\n color={\"secondary\"}\n data-testid={\"tpsl-cancel\"}\n onClick={() => {\n props.close?.();\n onCancel?.();\n }}\n >\n {t(\"common.cancel\")}\n </Button>\n <ThrottledButton\n size={\"md\"}\n data-testid={\"tpsl-confirm\"}\n disabled={status.isCreateMutating || !tpslEnable}\n loading={status.isCreateMutating || status.isUpdateMutating}\n onClick={() => {\n props\n .onSubmit()\n .then(() => {\n props.close?.();\n onComplete?.();\n })\n .catch((err) => {\n console.log(\"--->>>cancel order\", err);\n });\n }}\n >\n {t(\"common.confirm\")}\n </ThrottledButton>\n </Grid>\n </div>\n );\n};\n","import {\n ComputedAlgoOrder,\n useLocalStorage,\n utils,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide, PositionType } from \"@orderly.network/types\";\nimport {\n Badge,\n Box,\n Checkbox,\n cn,\n Divider,\n Flex,\n Text,\n textVariants,\n} from \"@orderly.network/ui\";\nimport { transSymbolformString } from \"@orderly.network/utils\";\n\nexport type PositionTPSLConfirmProps = {\n symbol: string;\n qty: number;\n tpPrice?: number;\n slPrice?: number;\n maxQty: number;\n side: OrderSide;\n // symbolConfig:API.SymbolExt\n baseDP: number;\n quoteDP: number;\n isEditing?: boolean;\n isPositionTPSL?: boolean;\n orderInfo: ComputedAlgoOrder;\n};\n\nconst TPSLOrderType = (props: { tpPrice?: number; slPrice?: number }) => {\n const { tpPrice, slPrice } = props;\n const { t } = useTranslation();\n\n if (!!tpPrice && !!slPrice) {\n return (\n <Badge size=\"xs\" color=\"neutral\">\n {t(\"common.tpsl\")}\n </Badge>\n );\n }\n\n if (!!tpPrice) {\n return (\n <Badge size=\"xs\" color=\"neutral\">\n {t(\"tpsl.tp\")}\n </Badge>\n );\n }\n\n if (!!slPrice) {\n return (\n <Badge size=\"xs\" color=\"neutral\">\n {t(\"tpsl.sl\")}\n </Badge>\n );\n }\n\n return null;\n};\n\n// ------------ Position TP/SL Confirm dialog start------------\nexport const PositionTPSLConfirm = (props: PositionTPSLConfirmProps) => {\n const {\n symbol,\n tpPrice,\n slPrice,\n qty,\n maxQty,\n side,\n quoteDP,\n baseDP,\n isEditing,\n isPositionTPSL: _isPositionTPSL,\n orderInfo: order,\n } = props;\n const { t } = useTranslation();\n\n const [needConfirm, setNeedConfirm] = useLocalStorage(\n \"orderly_order_confirm\",\n true,\n );\n const renderPositionType = () => {\n if (order.position_type === PositionType.FULL) {\n return <Text>{t(\"tpsl.positionType.full\")}</Text>;\n }\n return <Text>{t(\"tpsl.positionType.partial\")}</Text>;\n };\n // console.log(\"PositionTPSLConfirm\", qty, maxQty, quoteDP);\n\n const renderTPSLPrice = ({\n price,\n isOrderPrice,\n isEnable,\n colorType,\n }: {\n price: string | number;\n isOrderPrice?: boolean;\n isEnable?: boolean;\n colorType: \"TP\" | \"SL\";\n }) => {\n if (!isEnable) {\n return <Text className=\"oui-text-base-contrast-36\">-- USDC</Text>;\n }\n if (!price) {\n if (isOrderPrice) {\n return (\n <Text className=\"oui-text-base-contrast-36\">\n {t(\"common.market\")}\n </Text>\n );\n }\n }\n return (\n <Text.numeral\n unit={\"USDC\"}\n rule={\"price\"}\n className={cn(\n \"oui-text-base-contrast\",\n colorType === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n dp={quoteDP}\n padding={false}\n >\n {price}\n </Text.numeral>\n );\n };\n\n const isPositionTPSL = _isPositionTPSL;\n\n return (\n <>\n {isEditing && (\n <Text as=\"div\" size=\"2xs\" intensity={80} className=\"oui-mb-3\">\n {t(\"tpsl.agreement\", { symbol: transSymbolformString(symbol) })}\n </Text>\n )}\n\n <Flex pb={4}>\n <Box grow>\n <Text.formatted\n rule={\"symbol\"}\n formatString=\"base-type\"\n size=\"base\"\n showIcon\n as=\"div\"\n intensity={80}\n >\n {symbol}\n </Text.formatted>\n </Box>\n <Flex gap={1}>\n {isPositionTPSL && (\n <Badge size=\"xs\" color={\"primary\"}>\n {t(\"common.position\")}\n </Badge>\n )}\n\n {/* <Badge size=\"xs\" color=\"neutral\">\n TP/SL\n </Badge> */}\n <TPSLOrderType tpPrice={tpPrice} slPrice={slPrice} />\n {side === OrderSide.SELL ? (\n <Badge size=\"xs\" color=\"success\">\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge size=\"xs\" color=\"danger\">\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n <Divider />\n {order.tp_trigger_price || order.sl_trigger_price ? (\n <>\n <Divider className=\"oui-my-4\" />\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className:\n \"oui-space-y-1 oui-w-full oui-flex oui-flex-col oui-gap-3\",\n })}\n >\n <Text className=\"oui-text-base-contrast\">\n {renderPositionType()}\n </Text>\n <Flex justify={\"between\"}>\n <Text>{t(\"common.orderQty\")}</Text>\n <Text.numeral\n rule={\"price\"}\n dp={baseDP}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {order.quantity ?? \"-\"}\n </Text.numeral>\n </Flex>\n\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpTriggerPrice\")}</Text>{\" \"}\n {renderTPSLPrice({\n price: order.tp_trigger_price ?? \"\",\n isOrderPrice: false,\n isEnable: !!order.tp_trigger_price,\n colorType: \"TP\",\n })}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpOrderPrice\")}</Text>\n {renderTPSLPrice({\n price: order.tp_order_price ?? \"\",\n isOrderPrice: true,\n isEnable: !!order.tp_trigger_price,\n colorType: \"TP\",\n })}\n </Flex>\n </Flex>\n\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slTriggerPrice\")}</Text>\n {renderTPSLPrice({\n price: order.sl_trigger_price ?? \"\",\n isOrderPrice: false,\n isEnable: !!order.sl_trigger_price,\n colorType: \"SL\",\n })}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slOrderPrice\")}</Text>\n {renderTPSLPrice({\n price: order.sl_order_price ?? \"\",\n isOrderPrice: true,\n isEnable: !!order.sl_trigger_price,\n colorType: \"SL\",\n })}\n </Flex>\n </Flex>\n </div>\n </>\n ) : null}\n <Box pt={2}>\n <Flex gap={1}>\n <Checkbox\n id=\"disabledConfirm\"\n color=\"white\"\n checked={!needConfirm}\n onCheckedChange={(check) => {\n setNeedConfirm(!check);\n }}\n />\n <label\n htmlFor=\"disabledConfirm\"\n className={textVariants({\n size: \"xs\",\n intensity: 54,\n className: \"oui-ml-1\",\n })}\n >\n {t(\"orderEntry.disableOrderConfirm\")}\n </label>\n </Flex>\n </Box>\n </>\n );\n};\n\n//------------- Position TP/SL Confirm dialog end------------\n","import { useEffect, useMemo, useRef } from \"react\";\nimport {\n type ComputedAlgoOrder,\n ERROR_MSG_CODES,\n useAccount,\n useEstLiqPriceBySymbol,\n useEventEmitter,\n useLocalStorage,\n useMemoizedFn,\n usePositionStream,\n useSymbolsInfo,\n useTPSLOrder,\n useTpslPriceChecker,\n utils,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AlgoOrderRootType,\n API,\n OrderType,\n PositionType,\n SDKError,\n} from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { PositionTPSLConfirm } from \"./positionTpslConfirm\";\n\ntype PropsWithTriggerPrice = {\n withTriggerPrice?: boolean;\n triggerPrice?: number;\n type?: \"tp\" | \"sl\";\n qty?: number;\n};\n\nexport type TPSLBuilderOptions = {\n symbol: string;\n position?: API.Position;\n order?: API.AlgoOrder;\n onTPSLTypeChange?: (type: AlgoOrderRootType) => void;\n isEditing?: boolean;\n positionType?: PositionType;\n /**\n * either show the confirm dialog or not,\n * if the Promise reject or return false, cancel the submit action\n */\n onConfirm?: (\n order: ComputedAlgoOrder,\n options: {\n position: API.Position;\n submit: (params?: { accountId?: string }) => Promise<any>;\n cancel: () => Promise<any>;\n },\n ) => Promise<boolean>;\n close?: () => void;\n};\n\nexport const useTPSLBuilder = (\n options: TPSLBuilderOptions & PropsWithTriggerPrice,\n) => {\n const {\n symbol,\n order,\n isEditing,\n positionType,\n triggerPrice,\n type,\n withTriggerPrice,\n } = options;\n const { t } = useTranslation();\n // const isEditing = !!order;\n if (isEditing && !order) {\n throw new SDKError(\"order is required when isEditing is true\");\n }\n // const symbol = isEditing ? order!.symbol : position.symbol;\n const symbolInfo = useSymbolsInfo();\n const { state } = useAccount();\n const ee = useEventEmitter();\n\n // const prevTPSLType = useRef<AlgoOrderRootType>(AlgoOrderRootType.TP_SL);\n\n const [needConfirm] = useLocalStorage(\"orderly_order_confirm\", true);\n const [{ rows: positions }] = usePositionStream();\n const mainAccountPosition = positions.find((item) => item.symbol === symbol);\n\n const isSubAccount =\n options.position?.account_id &&\n options.position?.account_id !== state.mainAccountId;\n\n const position = isSubAccount ? options.position : mainAccountPosition;\n\n const estLiqPrice = useEstLiqPriceBySymbol(symbol);\n\n useEffect(() => {\n if (!position) {\n options.close?.();\n }\n }, [position]);\n\n const [\n tpslOrder,\n {\n submit,\n deleteOrder,\n setValue,\n setValues,\n validate,\n metaState,\n errors,\n isCreateMutating,\n isUpdateMutating,\n },\n ] = useTPSLOrder(\n {\n symbol,\n position_qty: position?.position_qty ?? 0,\n average_open_price: position?.average_open_price ?? 0,\n },\n {\n defaultOrder: order,\n positionType: triggerPrice ? PositionType.PARTIAL : positionType,\n // tpslEnable: {\n // tp_enable: !withTriggerPrice ? true : type === \"tp\",\n // sl_enable: !withTriggerPrice ? true : type === \"sl\",\n // },\n isEditing,\n },\n );\n\n const slPriceError = useTpslPriceChecker({\n slPrice: tpslOrder.sl_trigger_price?.toString() ?? undefined,\n liqPrice: estLiqPrice ?? null,\n side: tpslOrder.side,\n });\n\n const isSlPriceWarning =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const setQuantity = (value: number | string) => {\n setValue(\"quantity\", value);\n };\n\n const setOrderPrice = (\n name: \"tp_trigger_price\" | \"sl_trigger_price\",\n value: number | string,\n ) => {\n setValue(name, value);\n };\n\n const setPnL = (type: string, value: number | string) => {\n setValue(type, value);\n };\n\n const maxQty = useMemo(\n () => Math.abs(Number(position?.position_qty)),\n [position?.position_qty],\n );\n\n const dirty = useMemo(() => {\n const quantity =\n order?.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n ? maxQty\n : order?.quantity;\n\n let diff: number = 0;\n\n if (Number(tpslOrder.quantity) !== quantity) {\n diff = 1;\n } else if (!isEditing && !!tpslOrder.quantity) {\n diff = 1;\n }\n\n if (order && isEditing) {\n const { tp_trigger_price, sl_trigger_price } =\n utils.findTPSLFromOrder(order);\n const { tp_order_price, sl_order_price } =\n utils.findTPSLOrderPriceFromOrder(order);\n\n if (\n tp_trigger_price !== Number(tpslOrder.tp_trigger_price) &&\n typeof typeof tpslOrder.tp_trigger_price !== \"undefined\"\n ) {\n diff = 2;\n }\n\n if (\n sl_trigger_price !== Number(tpslOrder.sl_trigger_price) &&\n typeof tpslOrder.sl_trigger_price !== \"undefined\"\n ) {\n diff = 3;\n }\n if (\n typeof tpslOrder.tp_order_price !== \"undefined\" &&\n tp_order_price !== OrderType.MARKET &&\n tp_order_price !== Number(tpslOrder.tp_order_price)\n ) {\n diff = 4;\n }\n if (\n typeof tpslOrder.sl_order_price !== \"undefined\" &&\n sl_order_price !== OrderType.MARKET &&\n sl_order_price !== Number(tpslOrder.sl_order_price)\n ) {\n diff = 5;\n }\n }\n\n if (\n diff === 1 &&\n !tpslOrder.tp_trigger_price &&\n !tpslOrder.sl_trigger_price\n ) {\n diff = -1;\n }\n\n return diff;\n }, [\n tpslOrder.tp_trigger_price,\n tpslOrder.tp_order_price,\n tpslOrder.sl_trigger_price,\n tpslOrder.sl_order_price,\n tpslOrder.quantity,\n order,\n isEditing,\n ]);\n\n useEffect(() => {\n if (!withTriggerPrice) {\n return;\n }\n if (!triggerPrice) {\n return;\n }\n if (type === \"tp\") {\n setValue(\"tp_trigger_price\", triggerPrice);\n } else {\n setValue(\"sl_trigger_price\", triggerPrice);\n }\n if (options.qty) {\n setValue(\"quantity\", options.qty);\n }\n }, [type, triggerPrice, options.qty]);\n\n const cancel = (): Promise<void> => {\n if (order?.algo_order_id && order?.symbol) {\n return deleteOrder(order?.algo_order_id, order?.symbol);\n }\n return Promise.reject(\"order id or symbol is invalid\");\n };\n\n const onConfirm = (\n order: ComputedAlgoOrder,\n options: {\n position: API.Position;\n submit: (params?: { accountId?: string }) => Promise<any>;\n cancel: () => Promise<any>;\n },\n ) => {\n if (!needConfirm) {\n return Promise.resolve(true);\n }\n\n const maxQty = Math.abs(Number(position?.position_qty));\n if (\n `${order.tp_trigger_price ?? \"\"}`.length === 0 &&\n `${order.sl_trigger_price ?? \"\"}`.length === 0\n ) {\n return modal\n .confirm({\n title: t(\"orders.cancelOrder\"),\n content: t(\"tpsl.cancelOrder.description\"),\n onOk: () => {\n return options.cancel();\n },\n })\n .then(\n () => {\n ee.emit(\"tpsl:updateOrder\", options.position);\n return true;\n },\n () => {\n return Promise.reject(false);\n },\n );\n }\n\n return modal\n .confirm({\n title: t(\"tpsl.confirmOrder\"),\n // bodyClassName: \"lg:oui-py-0\",\n onOk: async () => {\n try {\n const res = await options.submit({\n accountId: position?.account_id,\n });\n\n if (res.success) {\n ee.emit(\"tpsl:updateOrder\", options.position);\n return res;\n }\n\n if (res.message) {\n toast.error(res.message);\n }\n\n return false;\n } catch (err: any) {\n if (err?.message) {\n toast.error(err.message);\n }\n return false;\n }\n },\n classNames: {\n body: \"!oui-pb-0\",\n },\n content: (\n <PositionTPSLConfirm\n isPositionTPSL={positionType === PositionType.FULL}\n isEditing={isEditing}\n symbol={order.symbol!}\n qty={Number(order.quantity)}\n maxQty={maxQty}\n tpPrice={Number(order.tp_trigger_price)}\n slPrice={Number(order.sl_trigger_price)}\n side={order.side!}\n orderInfo={order}\n quoteDP={symbolInfo[symbol](\"quote_dp\") ?? 2}\n baseDP={symbolInfo[symbol](\"base_dp\") ?? 2}\n />\n ),\n })\n .then(\n () => {\n return true;\n },\n () => {\n return Promise.reject(false);\n },\n );\n };\n\n const onSubmit = async () => {\n try {\n const validOrder = await validate(\n isSlPriceWarning ? undefined : (slPriceError as any),\n );\n if (validOrder) {\n if (!needConfirm) {\n return submit({ accountId: position?.account_id })\n .then(() => true)\n .catch((err) => {\n if (err?.message) {\n toast.error(err.message);\n }\n throw false;\n });\n }\n\n return onConfirm(tpslOrder, {\n position: position!,\n submit,\n cancel,\n });\n }\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n return {\n isEditing,\n symbolInfo: symbolInfo[symbol],\n maxQty,\n setQuantity: useMemoizedFn(setQuantity),\n orderQuantity: tpslOrder.quantity,\n // isPosition: isPositionTPSL,\n\n TPSL_OrderEntity: tpslOrder,\n setOrderValue: setValue,\n setPnL,\n setOrderPrice,\n // needConfirm,\n onSubmit,\n slPriceError,\n estLiqPrice,\n metaState,\n errors,\n status: {\n isCreateMutating,\n isUpdateMutating,\n },\n position,\n setValues,\n } as const;\n};\n\nexport type TPSLBuilderState = ReturnType<typeof useTPSLBuilder>;\n","import React from \"react\";\nimport { type AlgoOrderRootType } from \"@orderly.network/types\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { TPSL, TPSLProps } from \"./tpsl.ui\";\nimport { TPSLBuilderOptions, useTPSLBuilder } from \"./useTPSL.script\";\n\nexport type TPSLWidgetProps = {\n onTPSLTypeChange?: (type: AlgoOrderRootType) => void;\n} & TPSLBuilderOptions &\n TPSLProps;\n\nexport const TPSLWidget: React.FC<TPSLWidgetProps> = (props) => {\n const { onCancel, onComplete, ...rest } = props;\n const state = useTPSLBuilder(rest);\n return (\n <TPSL\n {...state}\n onCancel={onCancel}\n onComplete={onComplete}\n close={rest.close}\n />\n );\n};\n\nexport const TPSLSheetId = \"TPSLSheetId\";\nexport const TPSLDialogId = \"TPSLDialogId\";\n\nregisterSimpleSheet(TPSLSheetId, TPSLWidget);\n\nregisterSimpleDialog(TPSLDialogId, TPSLWidget, {\n classNames: {\n content: \"oui-w-[420px]\",\n },\n});\n","import { ReactNode } from \"react\";\nimport { AlgoOrderRootType, API, PositionType } from \"@orderly.network/types\";\nimport { Box, Button, modal } from \"@orderly.network/ui\";\nimport { ButtonProps } from \"@orderly.network/ui\";\nimport { TPSLDialogId } from \"./positionTPSL\";\n\nexport const PositionTPSLPopover = (props: {\n position: API.Position;\n order?: API.AlgoOrder;\n label?: string;\n baseDP?: number;\n quoteDP?: number;\n /**\n * Button props\n */\n buttonProps?: ButtonProps;\n isEditing?: boolean;\n children?: ReactNode;\n}) => {\n const { position, order, baseDP, quoteDP, buttonProps, isEditing } = props;\n\n const isPositionTPSL = isEditing\n ? order?.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n : undefined;\n\n const onEdit = () => {\n modal.show(TPSLDialogId, {\n order: order,\n symbol: position.symbol,\n baseDP: baseDP,\n quoteDP: quoteDP,\n positionType: isPositionTPSL ? PositionType.FULL : PositionType.PARTIAL,\n isEditing: isEditing,\n position,\n });\n };\n\n return (\n <Box onClick={onEdit} className=\"oui-cursor-pointer\">\n {props.children || (\n <Button\n variant=\"outlined\"\n size=\"sm\"\n color=\"secondary\"\n {...buttonProps}\n // onClick={() => {\n // setOpen(true);\n // }}\n >\n {props.label}\n </Button>\n )}\n </Box>\n );\n};\n","import { AlgoOrderRootType, API, PositionType } from \"@orderly.network/types\";\nimport { useModal } from \"@orderly.network/ui\";\nimport { TPSLWidget, TPSLWidgetProps } from \"./positionTPSL\";\n\ntype TPSLSheetProps = {\n order?: API.AlgoOrder;\n symbolInfo: API.SymbolExt;\n isEditing?: boolean;\n};\n\nexport const PositionTPSLSheet = (props: TPSLWidgetProps & TPSLSheetProps) => {\n const { order, isEditing } = props;\n const { hide } = useModal();\n\n const isPositionTPSL = isEditing\n ? order?.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n : undefined;\n\n return (\n <TPSLWidget\n {...props}\n positionType={\n props.positionType ??\n (isPositionTPSL ? PositionType.FULL : PositionType.PARTIAL)\n }\n onCancel={hide}\n />\n );\n};\n","import { useEffect, useState, SVGProps } from \"react\";\nimport { ERROR_MSG_CODES, useGetEstLiqPrice } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport {\n Button,\n cn,\n Divider,\n DotStatus,\n Flex,\n ScrollArea,\n Text,\n} from \"@orderly.network/ui\";\nimport { CloseToLiqPriceIcon } from \"../components/closeLiqPriceIcon\";\nimport { OrderInfo } from \"../components/orderInfo\";\nimport { PnlInfo } from \"../components/pnlInfo\";\nimport { TPSLInputRowWidget } from \"../components/tpslInputRow\";\nimport { TPSLPositionTypeWidget } from \"../components/tpslPostionType\";\nimport { useTPSLAdvanced } from \"./useTPSLAdvanced.script\";\n\ntype Props = ReturnType<typeof useTPSLAdvanced>;\n\nexport const TPSLAdvancedUI = (props: Props) => {\n const { t } = useTranslation();\n const { errors, validated } = props.metaState;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.slPriceError);\n const isSlPriceWarning =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n\n const displayEstLiqPrice = useGetEstLiqPrice({\n estLiqPrice: props.estLiqPrice,\n symbol: props.symbolInfo.symbol,\n side: props.formattedOrder.side as OrderSide,\n });\n\n const {\n formattedOrder,\n setValue: setOrderValue,\n symbolInfo,\n setValues,\n } = props;\n const [tpValues, setTpValuse] = useState<{\n enable: boolean;\n trigger_price: string;\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n order_price: string;\n order_type: OrderType;\n }>({\n enable: false,\n order_type: formattedOrder.tp_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.tp_order_price ?? \"\",\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n });\n\n const [slValues, setSlValues] = useState<{\n enable: boolean;\n trigger_price: string;\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n order_price: string;\n order_type: OrderType;\n }>({\n enable: false,\n order_type: formattedOrder.sl_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.sl_order_price ?? \"\",\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n });\n\n // Update tpValues when formattedOrder changes\n useEffect(() => {\n setTpValuse((prev) => ({\n ...prev,\n // enable: formattedOrder.tp_enable ?? false,\n order_type: formattedOrder.tp_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.tp_order_price ?? \"\",\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n }));\n }, [formattedOrder]);\n\n useEffect(() => {\n setSlValues((prev) => ({\n ...prev,\n // enable: formattedOrder.sl_enable ?? false,\n order_type: formattedOrder.sl_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.sl_order_price ?? \"\",\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n }));\n }, [formattedOrder]);\n\n const tpslEnable =\n formattedOrder.tp_trigger_price || formattedOrder.sl_trigger_price;\n\n return (\n <div className=\"oui-flex oui-h-full oui-flex-col oui-justify-between oui-rounded-[16px] oui-py-3\">\n <div className=\"oui-px-3\">\n <Flex\n className=\"oui-mb-5 oui-cursor-pointer oui-text-base oui-text-base-contrast-80\"\n gap={1}\n itemAlign={\"center\"}\n onClick={props.onClose}\n >\n <ArrowRightIcon className=\" oui-text-base-contrast-80\" />\n <Text>{t(\"common.tpsl\")}</Text>\n </Flex>\n </div>\n <ScrollArea className=\"oui-flex-1\">\n <div className=\"oui-px-3\">\n <OrderInfo\n order={formattedOrder as OrderlyOrder}\n baseDP={symbolInfo.base_dp}\n quoteDP={symbolInfo.quote_dp}\n estLiqPrice={displayEstLiqPrice ?? undefined}\n symbolLeverage={props.symbolLeverage}\n />\n </div>\n <Divider className=\"oui-my-3\" />\n <div className=\"oui-px-3\">\n <Flex className=\"oui-gap-[6px]\">\n <Button\n onClick={() => {\n setOrderValue(\"side\", OrderSide.BUY);\n }}\n size={\"sm\"}\n fullWidth\n data-type={OrderSide.BUY}\n // color={side === OrderSide.BUY ? \"buy\" : \"secondary\"}\n className={cn(\n formattedOrder.side === OrderSide.BUY\n ? \"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\"\n : \"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6\",\n )}\n data-testid=\"oui-testid-orderEntry-side-buy-button\"\n >\n {t(\"common.buy\")}\n </Button>\n <Button\n onClick={() => {\n setOrderValue(\"side\", OrderSide.SELL);\n }}\n data-type={OrderSide.SELL}\n fullWidth\n size={\"sm\"}\n // color={side === OrderSide.SELL ? \"sell\" : \"secondary\"}\n className={cn(\n formattedOrder.side === OrderSide.SELL\n ? \"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\"\n : \"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6\",\n )}\n data-testid=\"oui-testid-orderEntry-side-sell-button\"\n >\n {t(\"common.sell\")}\n </Button>\n </Flex>\n <div className=\"oui-py-3\">\n <TPSLPositionTypeWidget\n value={formattedOrder.position_type ?? PositionType.PARTIAL}\n onChange={(key, value) => {\n // setOrderValue(\"position_type\", value);\n if (value === PositionType.FULL) {\n setValues({\n position_type: PositionType.FULL,\n tp_order_type: OrderType.MARKET,\n tp_order_price: undefined,\n sl_order_type: OrderType.MARKET,\n sl_order_price: undefined,\n });\n // setOrderValue(\"tp_order_type\", OrderType.MARKET);\n // setOrderValue(\"sl_order_type\", OrderType.MARKET);\n return;\n }\n setOrderValue(\"position_type\", value);\n }}\n />\n {formattedOrder.position_type === PositionType.FULL && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-mt-3 oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-warning-darken\" />\n <Text className=\"oui-text-2xs oui-text-warning-darken\">\n {t(\"tpsl.positionType.full.tips.market\")}\n </Text>\n </Flex>\n )}\n </div>\n <Flex direction={\"column\"} gap={6}>\n <TPSLInputRowWidget\n rootOrderPrice={formattedOrder.order_price}\n symbol={symbolInfo.symbol}\n type=\"tp\"\n side={formattedOrder.side as OrderSide}\n values={tpValues}\n errors={validated ? errors : null}\n quote_dp={symbolInfo.quote_dp}\n hideOrderPrice={\n formattedOrder.position_type === PositionType.FULL\n }\n onChange={(key, value) => {\n // setTpValuse((prev) => ({ ...prev, [key]: value }));\n setOrderValue(key as keyof OrderlyOrder, value);\n }}\n positionType={\n formattedOrder.position_type ?? PositionType.PARTIAL\n }\n symbolLeverage={props.symbolLeverage}\n />\n <TPSLInputRowWidget\n rootOrderPrice={formattedOrder.order_price}\n symbol={symbolInfo.symbol}\n type=\"sl\"\n side={formattedOrder.side as OrderSide}\n values={slValues}\n hideOrderPrice={\n formattedOrder.position_type === PositionType.FULL\n }\n errors={\n validated ? errors : isSlPriceError ? props.slPriceError : null\n }\n inputWarnNode={\n isSlPriceWarning && (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={getErrorMsg(\"sl_trigger_price\")}\n />\n )\n }\n quote_dp={symbolInfo.quote_dp}\n positionType={\n formattedOrder.position_type ?? PositionType.PARTIAL\n }\n onChange={(key, value) => {\n setOrderValue(key as keyof OrderlyOrder, value);\n }}\n symbolLeverage={props.symbolLeverage}\n />\n </Flex>\n\n <PnlInfo\n tp_pnl={formattedOrder.tp_pnl}\n sl_pnl={formattedOrder.sl_pnl}\n className=\"oui-mt-6\"\n />\n </div>\n </ScrollArea>\n <Flex className=\"oui-mt-6 oui-px-3\" gap={2}>\n <Button\n size=\"md\"\n fullWidth\n color=\"gray\"\n variant=\"outlined\"\n className=\"oui-text-base-contrast-36\"\n onClick={props.onClose}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n size=\"md\"\n fullWidth\n color=\"success\"\n className={cn(\n formattedOrder.side === OrderSide.SELL\n ? \"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\"\n : \"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\",\n )}\n onClick={props.onSubmit}\n disabled={!tpslEnable}\n >\n {t(\"tpsl.advanced.submit\")}\n </Button>\n </Flex>\n </div>\n );\n};\n\nexport const ArrowRightIcon = (props: SVGProps<SVGSVGElement>) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.03752 2.9294C7.89169 2.95857 7.74527 3.03207 7.65661 3.16624L5.33145 6.66624C5.20137 6.86224 5.20137 7.12648 5.33145 7.32248L7.65661 10.8225C7.83452 11.0902 8.20669 11.1655 8.47385 10.9864C8.74044 10.8079 8.8151 10.434 8.63719 10.1662L6.53019 6.99408L8.63719 3.82249C8.8151 3.55416 8.74044 3.18082 8.47385 3.00232C8.34027 2.91249 8.18335 2.89965 8.03752 2.9294Z\" />\n </svg>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationResult,\n useOrderEntry,\n useTpslPriceChecker,\n} from \"@orderly.network/hooks\";\nimport { OrderlyOrder, OrderType, PositionType } from \"@orderly.network/types\";\n\ntype Props = {\n order: OrderlyOrder;\n setOrderValue: (key: string, value: any) => void;\n onSubmit: (formattedOrder: OrderlyOrder) => void;\n onClose: () => void;\n symbolLeverage?: number;\n};\n\nconst isTPSLEnable = (order: OrderlyOrder, type: \"tp\" | \"sl\") => {\n if (order.tp_trigger_price || order.sl_trigger_price) {\n if (type === \"tp\") {\n return !!order.tp_trigger_price;\n }\n if (type === \"sl\") {\n return !!order.sl_trigger_price;\n }\n }\n // no edit, disabled tp /sl\n return false;\n};\n\nexport const useTPSLAdvanced = (props: Props) => {\n const { order, setOrderValue, onClose } = props;\n const [innerMetaState, setInnerMetaState] =\n useState<OrderValidationResult | null>(null);\n const {\n formattedOrder,\n setValue,\n setValues,\n helper,\n symbolInfo,\n metaState,\n ...state\n } = useOrderEntry(order.symbol, {\n initialOrder: {\n symbol: order.symbol,\n order_type: order.order_type,\n side: order.side,\n order_price: order.order_price,\n order_quantity: order.order_quantity,\n position_type: order.position_type ?? PositionType.PARTIAL,\n trigger_price: order.trigger_price,\n // tp_enable: isTPSLEnable(order, \"tp\"),\n // sl_enable: isTPSLEnable(order, \"sl\"),\n tp_trigger_price: order.tp_trigger_price,\n sl_trigger_price: order.sl_trigger_price,\n tp_order_price: order.tp_order_price,\n sl_order_price: order.sl_order_price,\n tp_order_type: order.tp_order_type,\n sl_order_type: order.sl_order_type,\n sl_pnl: order.sl_pnl,\n sl_offset: order.sl_offset,\n sl_offset_percentage: order.sl_offset_percentage,\n tp_pnl: order.tp_pnl,\n tp_offset: order.tp_offset,\n tp_offset_percentage: order.tp_offset_percentage,\n },\n });\n\n const slPriceError = useTpslPriceChecker({\n slPrice: formattedOrder.sl_trigger_price,\n liqPrice: state.estLiqPrice,\n side: formattedOrder.side,\n });\n\n const onSubmit = () => {\n const isSlPriceError =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_ERROR;\n helper\n .validate(isSlPriceError ? slPriceError : undefined)\n .then(() => {\n props.onSubmit(formattedOrder as OrderlyOrder);\n })\n .catch((err) => {\n console.log(\"metaState\", metaState);\n console.log(\"err\", err);\n });\n };\n\n return {\n order,\n formattedOrder,\n symbolInfo,\n slPriceError,\n estLiqPrice: state.estLiqPrice,\n estLiqPriceDistance: state.estLiqPriceDistance,\n setValue,\n setValues,\n onSubmit,\n onClose,\n metaState,\n symbolLeverage: props.symbolLeverage,\n };\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport { OrderlyOrder } from \"@orderly.network/types\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { TPSLAdvancedUI } from \"./tpslAdvanced.ui\";\nimport { useTPSLAdvanced } from \"./useTPSLAdvanced.script\";\n\ntype Props = {\n order: OrderlyOrder;\n setOrderValue: (key: string, value: any) => void;\n onSubmit: (formattedOrder: OrderlyOrder) => void;\n onClose: () => void;\n symbolLeverage?: number;\n};\n\nexport const TPSLAdvancedWidget = (props: Props) => {\n const state = useTPSLAdvanced({\n order: props.order,\n setOrderValue: props.setOrderValue,\n onSubmit: props.onSubmit,\n onClose: props.onClose,\n symbolLeverage: props.symbolLeverage,\n });\n return <TPSLAdvancedUI {...state} />;\n};\n\nexport const TPSLAdvancedSheetId = \"TPSLAdvancedSheetId\";\nexport const TPSLAdvancedDialogId = \"TPSLAdvancedDialogId\";\n\nregisterSimpleSheet(TPSLAdvancedSheetId, TPSLAdvancedWidget, {\n title: () => i18n.t(\"common.settings\"),\n});\n\nregisterSimpleDialog(TPSLAdvancedDialogId, TPSLAdvancedWidget, {\n title: () => i18n.t(\"common.settings\"),\n});\n","import { useEffect, useState } from \"react\";\nimport {\n findPositionTPSLFromOrders,\n useAccount,\n useEventEmitter,\n useOrderStream,\n useSubAccountAlgoOrderStream,\n useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport {\n AlgoOrderRootType,\n API,\n OrderStatus,\n PositionType,\n} from \"@orderly.network/types\";\nimport { modal, useScreen } from \"@orderly.network/ui\";\nimport { TPSLDialogId, TPSLSheetId } from \"../positionTPSL/tpsl.widget\";\nimport { TPSLDetailProps } from \"./tpslDetail.widget\";\n\nexport const useTPSLDetail = (props: TPSLDetailProps) => {\n const { position } = props;\n\n const symbol = position.symbol;\n const symbolInfo = useSymbolsInfo()[symbol];\n\n const ee = useEventEmitter();\n\n const { state } = useAccount();\n\n const { isMobile } = useScreen();\n const [fullPositionOrders, setFullPositionOrders] = useState<API.AlgoOrder[]>(\n [],\n );\n const [partialPositionOrders, setPartialPositionOrders] = useState<\n API.AlgoOrder[]\n >([]);\n\n const isSubAccount =\n position.account_id && position.account_id !== state.mainAccountId;\n\n const [\n mainAccountTpslOrders,\n { cancelAlgoOrder, cancelPostionOrdersByTypes },\n ] = useOrderStream(\n {\n symbol: position.symbol,\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n size: 500,\n },\n {\n keeplive: true,\n },\n );\n\n const [\n subAccountTpslOrders,\n {\n cancelAlgoOrder: cancelSubAccountAlgoOrder,\n cancelPostionOrdersByTypes: cancelSubAccountPostionOrdersByTypes,\n refresh: refreshSubAccountTpslOrders,\n },\n ] = useSubAccountAlgoOrderStream(\n {\n symbol: position.symbol,\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n size: 100,\n },\n {\n accountId: position.account_id!,\n },\n );\n\n const tpslOrders = isSubAccount\n ? subAccountTpslOrders\n : mainAccountTpslOrders;\n\n const onCancelOrder = async (order: API.AlgoOrder) => {\n if (isSubAccount) {\n const res = await cancelSubAccountAlgoOrder(\n order.algo_order_id,\n order.symbol,\n );\n refreshSubAccountTpslOrders();\n ee.emit(\"tpsl:updateOrder\", position);\n return res;\n }\n return await cancelAlgoOrder(order.algo_order_id, order.symbol);\n };\n\n const onCancelAllTPSLOrders = async () => {\n if (isSubAccount) {\n const res = await cancelSubAccountPostionOrdersByTypes(symbol, [\n AlgoOrderRootType.TP_SL,\n ]);\n refreshSubAccountTpslOrders();\n ee.emit(\"tpsl:updateOrder\", position);\n return res;\n }\n return await cancelPostionOrdersByTypes(symbol, [AlgoOrderRootType.TP_SL]);\n };\n\n const showTPSLDialog = ({\n order,\n positionType,\n isEditing,\n }: {\n order?: API.AlgoOrder;\n positionType: PositionType;\n isEditing: boolean;\n }) => {\n const dialogId = isMobile ? TPSLSheetId : TPSLDialogId;\n modal.show(dialogId, {\n order: order,\n symbol: position.symbol,\n position,\n positionType,\n isEditing,\n });\n };\n\n const editTPSLOrder = (order: API.AlgoOrder, positionType: PositionType) => {\n showTPSLDialog({ order, positionType, isEditing: true });\n };\n\n const addTPSLOrder = (positionType: PositionType) => {\n showTPSLDialog({ positionType, isEditing: false });\n };\n\n useEffect(() => {\n if (tpslOrders) {\n const { fullPositionOrder, partialPositionOrders } =\n findPositionTPSLFromOrders(tpslOrders, symbol);\n\n setFullPositionOrders(fullPositionOrder ? [fullPositionOrder] : []);\n setPartialPositionOrders(partialPositionOrders ?? []);\n }\n }, [tpslOrders, symbol]);\n\n return {\n symbolInfo,\n position,\n symbol,\n fullPositionOrders,\n partialPositionOrders,\n cancelPostionOrdersByTypes,\n onCancelOrder,\n onCancelAllTPSLOrders,\n editTPSLOrder,\n addTPSLOrder,\n };\n};\n\nexport type TPSLDetailState = ReturnType<typeof useTPSLDetail>;\n","import { createContext, PropsWithChildren, useContext } from \"react\";\nimport { useEstLiqPriceBySymbol, useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { API, OrderSide } from \"@orderly.network/types\";\n\nexport interface TPSLDetailContextState {\n base_dp: number;\n quote_dp: number;\n position: API.Position;\n side: OrderSide;\n estLiqPrice: number | undefined;\n}\n\nexport const TPSLDetailContext = createContext({} as TPSLDetailContextState);\n\ninterface TPSLDetailProviderProps {\n symbol: string;\n position: API.Position;\n}\n\nexport const TPSLDetailProvider = (\n props: PropsWithChildren<TPSLDetailProviderProps>,\n) => {\n const symbolInfo = useSymbolsInfo()[props.symbol];\n const estLiqPrice = useEstLiqPriceBySymbol(props.symbol);\n\n return (\n <TPSLDetailContext.Provider\n value={{\n base_dp: symbolInfo(\"base_dp\"),\n quote_dp: symbolInfo(\"quote_dp\"),\n side: props.position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL,\n position: props.position,\n estLiqPrice: estLiqPrice,\n }}\n >\n {props.children}\n </TPSLDetailContext.Provider>\n );\n};\n\nexport const useTPSLDetailContext = () => {\n return useContext(TPSLDetailContext);\n};\n","import { cn, Flex } from \"@orderly.network/ui\";\n\nexport const FlexCell = (props: {\n children: React.ReactNode;\n className?: string;\n}) => {\n return (\n <Flex\n direction={\"column\"}\n justify={\"center\"}\n itemAlign={\"start\"}\n className={cn(\"oui-text-2xs oui-h-[36px]\", props.className)}\n >\n {props.children}\n </Flex>\n );\n};\n","import { findTPSLFromOrder } from \"@orderly.network/hooks\";\nimport { positions as perpPositions } from \"@orderly.network/perp\";\nimport { API, OrderSide } from \"@orderly.network/types\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal, formatNum, getTPSLDirection } from \"@orderly.network/utils\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const EstPnlRender = ({ order }: { order: API.AlgoOrder }) => {\n const { position, base_dp, quote_dp } = useTPSLDetailContext();\n const { tp_trigger_price, sl_trigger_price } = findTPSLFromOrder(order);\n\n let tp_unrealPnl = undefined;\n let sl_unrealPnl = undefined;\n const qty = new Decimal(order.quantity).eq(0)\n ? position.position_qty\n : order.quantity;\n\n const side = position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL;\n const openPrice = position?.average_open_price;\n\n if (tp_trigger_price) {\n const direction = getTPSLDirection({\n side,\n type: \"tp\",\n closePrice: tp_trigger_price,\n orderPrice: openPrice,\n });\n tp_unrealPnl = formatNum\n .pnl(\n perpPositions.unrealizedPnL({\n qty,\n openPrice,\n // markPrice: unRealizedPrice,\n markPrice: tp_trigger_price,\n }),\n )\n ?.abs()\n .mul(direction)\n .toNumber();\n }\n\n if (sl_trigger_price) {\n const direction = getTPSLDirection({\n side,\n type: \"sl\",\n closePrice: sl_trigger_price,\n orderPrice: openPrice,\n });\n sl_unrealPnl = formatNum\n .pnl(\n perpPositions.unrealizedPnL({\n qty: qty,\n openPrice,\n // markPrice: unRealizedPrice,\n markPrice: sl_trigger_price,\n }),\n )\n ?.abs()\n .mul(direction)\n .toNumber();\n }\n return (\n <Flex\n gap={2}\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs\"\n >\n {tp_unrealPnl && (\n <FlexCell>\n <Text.numeral dp={2} rm={Decimal.ROUND_DOWN} coloring padding={false}>\n {tp_unrealPnl}\n </Text.numeral>\n </FlexCell>\n )}\n {sl_unrealPnl && (\n <FlexCell>\n <Text.numeral dp={2} rm={Decimal.ROUND_DOWN} coloring padding={false}>\n {sl_unrealPnl}\n </Text.numeral>\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { findTPSLOrderPriceFromOrder } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, OrderType } from \"@orderly.network/types\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const OrderPriceRender = ({ order }: { order: API.AlgoOrder }) => {\n const { quote_dp } = useTPSLDetailContext();\n const { tp_order_price, sl_order_price } = findTPSLOrderPriceFromOrder(order);\n const { t } = useTranslation();\n return (\n <Flex\n gap={2}\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs\"\n >\n {tp_order_price && (\n <FlexCell>\n {tp_order_price === OrderType.MARKET ? (\n <Text>{t(\"common.market\")}</Text>\n ) : (\n <Text.numeral dp={quote_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {tp_order_price}\n </Text.numeral>\n )}\n </FlexCell>\n )}\n {sl_order_price && (\n <FlexCell>\n {sl_order_price === OrderType.MARKET ? (\n <Text>{t(\"common.market\")}</Text>\n ) : (\n <Text.numeral dp={quote_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {sl_order_price}\n </Text.numeral>\n )}\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { findTPSLFromOrder } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const QtyRender = ({ order }: { order: API.AlgoOrder }) => {\n const { position, base_dp } = useTPSLDetailContext();\n const { tp_trigger_price, sl_trigger_price } = findTPSLFromOrder(order);\n\n const quantity = useMemo(() => {\n if (order.quantity === 0) {\n return -position.position_qty;\n }\n\n return position.position_qty > 0 ? -order.quantity : order.quantity;\n }, [order.quantity, position.position_qty]);\n\n return (\n <Flex\n direction={\"column\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n className=\"oui-h-full oui-text-2xs\"\n >\n <FlexCell>\n <Text.numeral dp={base_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {quantity}\n </Text.numeral>\n </FlexCell>\n {tp_trigger_price && sl_trigger_price && (\n <FlexCell>\n <div />\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { findTPSLFromOrder } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const TriggerPrice = ({ order }: { order: API.AlgoOrder }) => {\n const { quote_dp } = useTPSLDetailContext();\n const { tp_trigger_price, sl_trigger_price } = findTPSLFromOrder(order);\n const { t } = useTranslation();\n return (\n <Flex\n gap={1}\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs\"\n >\n {tp_trigger_price && (\n <FlexCell>\n <Flex direction={\"column\"} justify={\"start\"} itemAlign={\"start\"}>\n <Text className=\"oui-text-base-contrast-36\">\n {t(\"common.market\")}\n </Text>\n <Text.numeral dp={quote_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {tp_trigger_price}\n </Text.numeral>\n </Flex>\n </FlexCell>\n )}\n {sl_trigger_price && (\n <FlexCell>\n <Flex direction={\"column\"} justify={\"start\"} itemAlign={\"start\"}>\n <Text className=\"oui-text-base-contrast-36\">\n {t(\"common.market\")}\n </Text>\n <Text.numeral dp={quote_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {sl_trigger_price}\n </Text.numeral>\n </Flex>\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { ERROR_MSG_CODES, OrderValidationResult } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n cn,\n ExclamationFillIcon,\n modal,\n Tooltip,\n useScreen,\n} from \"@orderly.network/ui\";\n\nconst CloseToLiqPriceIcon = ({\n slPriceError,\n className,\n}: {\n slPriceError: OrderValidationResult | null;\n className?: string;\n}) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const { getErrorMsg } = useOrderEntryFormErrorMsg(slPriceError);\n const isSlPriceWarning =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const icon = (\n <ExclamationFillIcon\n onMouseEnter={(e) => e.stopPropagation()}\n onMouseLeave={(e) => e.stopPropagation()}\n onPointerEnter={(e) => e.stopPropagation()}\n onPointerLeave={(e) => e.stopPropagation()}\n size={14}\n className={cn(\n \"oui-text-warning-darken hover:oui-cursor-pointer\",\n className,\n )}\n />\n );\n if (!isSlPriceWarning || !slPriceError) return null;\n\n if (isMobile) {\n return (\n <button\n onClick={(e) => {\n modal.alert({\n title: t(\"common.tips\"),\n message: getErrorMsg(\"sl_trigger_price\"),\n });\n }}\n className=\"oui-px-1\"\n >\n {icon}\n </button>\n );\n }\n\n return (\n <Tooltip\n content={getErrorMsg(\"sl_trigger_price\")}\n className=\"oui-max-w-[240px] oui-text-base-contrast-80\"\n >\n {icon}\n </Tooltip>\n );\n};\nCloseToLiqPriceIcon.displayName = \"CloseToLiqPriceIcon\";\n\nexport { CloseToLiqPriceIcon };\n","import {\n ERROR_MSG_CODES,\n findTPSLFromOrder,\n useTpslPriceChecker,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { ExclamationFillIcon, Flex, Text } from \"@orderly.network/ui\";\nimport { CloseToLiqPriceIcon } from \"../../components/closeLiqPriceIcon\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const TypeRender = ({ order }: { order: API.AlgoOrder }) => {\n const { side, estLiqPrice } = useTPSLDetailContext();\n const { tp_trigger_price, sl_trigger_price } = findTPSLFromOrder(order);\n const { t } = useTranslation();\n\n const slPriceError = useTpslPriceChecker({\n slPrice: sl_trigger_price?.toString() ?? undefined,\n liqPrice: estLiqPrice ?? null,\n side: side,\n });\n const isSlPriceWarning =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_WARNING;\n return (\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs\"\n >\n {tp_trigger_price && (\n <FlexCell>\n <Text className=\"oui-text-trade-profit\">{t(\"tpsl.tp\")}</Text>\n </FlexCell>\n )}\n\n {sl_trigger_price && (\n <FlexCell className={\"oui-flex-row oui-items-center oui-gap-1\"}>\n <Text className=\"oui-text-trade-loss\">{t(\"tpsl.sl\")}</Text>\n {isSlPriceWarning && (\n <CloseToLiqPriceIcon slPriceError={slPriceError} />\n )}\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { FC, SVGProps, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n cn,\n Flex,\n Text,\n ThrottledButton,\n toast,\n Tooltip,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { EstPnlRender } from \"./components/estPnl\";\nimport { OrderPriceRender } from \"./components/orderPrice\";\nimport { QtyRender } from \"./components/qty\";\nimport { TriggerPrice } from \"./components/triggerPrice\";\nimport { TypeRender } from \"./components/type\";\n\nexport const useColumn = (props: {\n onCancelOrder?: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const { onCancelOrder } = props;\n\n const columns = useMemo(() => {\n const moblieColumns = [\n {\n title: t(\"tpsl.tpslDetail.qty\"),\n dataIndex: \"quantity\",\n width: 70,\n className: \"oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <QtyRender order={record} />\n ),\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n width: 35,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <TypeRender order={record} />\n ),\n },\n {\n title: t(\"common.trigger\"),\n dataIndex: \"trigger\",\n width: 70,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => {\n return <TriggerPrice order={record} />;\n },\n },\n {\n title: t(\"common.price\"),\n dataIndex: \"price\",\n width: 70,\n className: \"oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <OrderPriceRender order={record} />\n ),\n },\n\n {\n title: (\n <Tooltip\n className=\"oui-max-w-[280px] oui-bg-base-8 oui-p-3 oui-text-2xs oui-text-base-contrast\"\n content={t(\"tpsl.tpslDetail.estPnl.tooltip\")}\n >\n <Text className=\"oui-underline oui-decoration-dashed oui-underline-offset-2\">\n {t(\"tpsl.tpslDetail.estPnl\")}\n </Text>\n </Tooltip>\n ),\n dataIndex: \"estpnl\",\n width: 70,\n className: \"!oui-pr-0 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <EstPnlRender order={record} />\n ),\n },\n ];\n const desktopColums = [\n {\n title: t(\"tpsl.tpslDetail.qty\"),\n dataIndex: \"quantity\",\n width: 70,\n className: cn(\" oui-py-2 !oui-pl-5\"),\n render: (_: string, record: API.AlgoOrder) => (\n <QtyRender order={record} />\n ),\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n width: 35,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <TypeRender order={record} />\n ),\n },\n {\n title: t(\"common.trigger\"),\n dataIndex: \"trigger\",\n width: 70,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => {\n return <TriggerPrice order={record} />;\n },\n },\n {\n title: t(\"common.price\"),\n dataIndex: \"price\",\n width: 70,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <OrderPriceRender order={record} />\n ),\n },\n\n {\n title: (\n <Tooltip\n className=\"oui-max-w-[280px] oui-bg-base-8 oui-p-3 oui-text-2xs oui-text-base-contrast\"\n content={t(\"tpsl.tpslDetail.estPnl.tooltip\")}\n >\n <Text className=\"oui-underline oui-decoration-dashed oui-underline-offset-2\">\n {t(\"tpsl.tpslDetail.estPnl\")}\n </Text>\n </Tooltip>\n ),\n dataIndex: \"estpnl\",\n width: 70,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <EstPnlRender order={record} />\n ),\n },\n {\n title: \"\",\n dataIndex: \"delete\",\n width: 50,\n className: cn(\"oui-py-2 !oui-pr-5\"),\n render: (_: any, record: API.AlgoOrder) => {\n return <CancelAllBtn order={record} onCancelOrder={onCancelOrder} />;\n },\n },\n ];\n if (isMobile) {\n return moblieColumns;\n }\n return desktopColums;\n }, [t, isMobile]);\n return columns;\n};\n\nexport const FlexCell = (props: { children: React.ReactNode }) => {\n return (\n <Flex\n direction={\"column\"}\n justify={\"center\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs oui-h-[36px]\"\n >\n {props.children}\n </Flex>\n );\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\nconst DeleteIcon: FC<IconProps> = (props) => {\n const { size = 18 } = props;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M5.48081 15.375C5.10681 15.375 4.78731 15.2426 4.52231 14.9777C4.25744 14.7127 4.125 14.3932 4.125 14.0192V4.50004H3.375V3.37505H6.75V2.71167H11.25V3.37505H14.625V4.50004H13.875V14.0192C13.875 14.3981 13.7438 14.7188 13.4813 14.9813C13.2188 15.2438 12.8981 15.375 12.5192 15.375H5.48081ZM12.75 4.50004H5.25V14.0192C5.25 14.0866 5.27162 14.1419 5.31487 14.1852C5.35812 14.2284 5.41344 14.25 5.48081 14.25H12.5192C12.5769 14.25 12.6298 14.226 12.6778 14.1779C12.7259 14.1299 12.75 14.077 12.75 14.0192V4.50004ZM7.053 12.75H8.17781V6.00004H7.053V12.75ZM9.82219 12.75H10.947V6.00004H9.82219V12.75Z\" />\n </svg>\n );\n};\n\nexport const CancelAllBtn = (props: {\n order: API.AlgoOrder;\n onCancelOrder?: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const [loading, setLoading] = useState(false);\n return (\n <ThrottledButton\n size=\"sm\"\n loading={loading}\n variant=\"text\"\n color=\"gray\"\n onClick={(e) => {\n e.stopPropagation();\n setLoading(true);\n props\n .onCancelOrder?.(props.order)\n .then(\n () => {},\n (error) => {\n toast.error(error.message);\n },\n )\n .finally(() => {\n setLoading(false);\n });\n }}\n >\n <DeleteIcon className=\"oui-text-base-contrast-54 hover:oui-text-base-contrast oui-cursor-pointer\" />\n </ThrottledButton>\n );\n};\n","import { API } from \"@orderly.network/types\";\nimport { cn, ScrollArea } from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { useColumn } from \"./useColum\";\n\nexport const OrdersTable = (props: {\n className?: string;\n orders: API.AlgoOrder[];\n editTPSLOrder: (order: API.AlgoOrder) => void;\n onCancelOrder: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const { orders } = props;\n const columns = useColumn({ onCancelOrder: props.onCancelOrder });\n return (\n // <ScrollArea className={cn( props.className)}>\n\n <AuthGuardDataTable\n columns={columns}\n dataSource={orders}\n className=\"oui-bg-transparent oui-text-2xs\"\n bordered\n classNames={{\n root: cn(props.className),\n header: \"!oui-bg-base-8\",\n scroll: cn(\n !orders || orders.length === 0\n ? \"!oui-min-h-[170px]\"\n : \"!oui-min-h-[100px]\",\n ),\n }}\n onRow={(record) => {\n return {\n className: cn(\n \"oui-h-[53px] oui-cursor-svg-edit !oui-border-none !oui-p-0\",\n ),\n onClick: () => {\n props.editTPSLOrder(record);\n },\n };\n }}\n />\n // </ScrollArea>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { Flex, Button, cn, ThrottledButton, toast } from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { useColumn } from \"./useColum\";\n\nexport const OrdersTableMobile = (props: {\n orders: API.AlgoOrder[];\n editTPSLOrder: (order: API.AlgoOrder) => void;\n canCancelOrder: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const { t } = useTranslation();\n const { orders } = props;\n const columns = useColumn({ onCancelOrder: () => Promise.resolve() });\n const orderIds = useMemo(() => {\n return orders.reduce(\n (acc, curr) => {\n acc[curr.algo_order_id] = true;\n return acc;\n },\n {} as Record<string, boolean>,\n );\n }, [orders]);\n return (\n <AuthGuardDataTable\n columns={columns}\n dataSource={orders}\n expanded={orderIds}\n bordered\n getRowCanExpand={() => true}\n expandRowRender={(row) => {\n return (\n <Flex gap={2} justify={\"end\"}>\n <Button\n variant=\"outlined\"\n size=\"sm\"\n color=\"gray\"\n className=\"oui-h-6 oui-text-2xs oui-text-base-contrast-54\"\n onClick={() => props.editTPSLOrder(row.original)}\n >\n {t(\"common.edit\")}\n </Button>\n <DeleteBtn\n order={row.original}\n onCancelOrder={props.canCancelOrder}\n />\n </Flex>\n );\n }}\n className=\"oui-bg-transparent oui-px-2 oui-text-2xs\"\n classNames={{\n scroll: cn(\n !orders || orders.length === 0\n ? \"!oui-min-h-[170px]\"\n : \"!oui-min-h-[100px]\",\n ),\n }}\n onRow={() => {\n return {\n className: cn(\n \"oui-h-[53px] oui-cursor-svg-edit !oui-border-none !oui-p-0\",\n ),\n };\n }}\n generatedRowKey={(record) => record.algo_order_id}\n />\n );\n};\n\nexport const DeleteBtn = (props: {\n order: API.AlgoOrder;\n onCancelOrder?: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const [loading, setLoading] = useState(false);\n const { t } = useTranslation();\n return (\n <ThrottledButton\n className=\"oui-h-6 oui-text-2xs oui-text-base-contrast-54\"\n size=\"sm\"\n loading={loading}\n variant=\"outlined\"\n color=\"gray\"\n onClick={(e) => {\n e.stopPropagation();\n setLoading(true);\n props\n .onCancelOrder?.(props.order)\n .then(\n () => {},\n (error) => {\n toast.error(error.message);\n },\n )\n .finally(() => {\n setLoading(false);\n });\n }}\n >\n {t(\"common.delete\")}\n </ThrottledButton>\n );\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, PositionType } from \"@orderly.network/types\";\nimport {\n Box,\n ChevronDownIcon,\n cn,\n ExclamationFillIcon,\n Flex,\n Text,\n toast,\n Tooltip,\n ThrottledButton,\n useScreen,\n ScrollArea,\n} from \"@orderly.network/ui\";\nimport { OrderInfo } from \"../components/orderInfo\";\nimport { OrdersTable } from \"./ordersTable\";\nimport { OrdersTableMobile } from \"./ordersTable.mobile\";\nimport { TPSLDetailState } from \"./tpslDetail.script\";\nimport { useTPSLDetailContext } from \"./tpslDetailProvider\";\n\nexport const TPSLDetailUI = (props: TPSLDetailState) => {\n const { isMobile } = useScreen();\n const {\n position,\n fullPositionOrders,\n partialPositionOrders,\n onCancelOrder,\n onCancelAllTPSLOrders,\n editTPSLOrder,\n addTPSLOrder,\n symbolInfo,\n } = props;\n const { estLiqPrice } = useTPSLDetailContext();\n\n return (\n <Box>\n <ScrollArea className={cn(isMobile && \"oui-h-[calc(100vh-100px)]\")}>\n <OrderInfo\n order={{\n symbol: position.symbol,\n order_quantity: position.position_qty.toString(),\n order_price: position.average_open_price.toString(),\n }}\n estLiqPrice={estLiqPrice}\n symbolLeverage={position.leverage}\n baseDP={symbolInfo(\"base_dp\")}\n quoteDP={symbolInfo(\"quote_dp\")}\n classNames={{\n root: cn(\"oui-mb-6 oui-gap-3 oui-px-5\"),\n container: \"oui-gap-x-[30px]\",\n }}\n />\n <FullPositionPart\n position={position}\n orders={fullPositionOrders}\n onCancelOrder={onCancelOrder}\n onCancelAllTPSLOrders={onCancelAllTPSLOrders}\n editTPSLOrder={editTPSLOrder}\n addTPSLOrder={addTPSLOrder}\n />\n <PartialPositionPart\n position={position}\n orders={partialPositionOrders}\n onCancelOrder={onCancelOrder}\n onCancelAllTPSLOrders={onCancelAllTPSLOrders}\n editTPSLOrder={editTPSLOrder}\n addTPSLOrder={addTPSLOrder}\n />\n </ScrollArea>\n </Box>\n );\n};\n\nconst FullPositionPart = (props: {\n orders: API.AlgoOrder[];\n onCancelOrder: (order: API.AlgoOrder) => Promise<void>;\n onCancelAllTPSLOrders: () => Promise<void>;\n position: API.Position;\n editTPSLOrder: (order: API.AlgoOrder, positionType: PositionType) => void;\n addTPSLOrder: (positionType: PositionType) => void;\n}) => {\n const [open, setOpen] = useState(true);\n const { orders } = props;\n const { isMobile } = useScreen();\n return (\n <Box className=\"oui-mt-6\">\n <Box\n className={cn(\"oui-flex oui-items-center oui-justify-between oui-px-5\")}\n >\n <PositionTypeDescription\n positionType={PositionType.FULL}\n open={open}\n onOpenChange={setOpen}\n />\n {orders && orders.length === 0 && (\n <Flex gap={2}>\n <AddButton\n positionType={PositionType.FULL}\n position={props.position}\n addTPSLOrder={props.addTPSLOrder}\n />\n </Flex>\n )}\n </Box>\n\n <Box\n className={cn(\n \"oui-overflow-hidden oui-transition-[height] oui-duration-150\",\n open ? \"oui-h-auto\" : \"oui-h-0 oui-pb-4\",\n )}\n >\n {isMobile ? (\n <OrdersTableMobile\n orders={orders}\n editTPSLOrder={(order) =>\n props.editTPSLOrder(order, PositionType.FULL)\n }\n canCancelOrder={props.onCancelOrder}\n />\n ) : (\n <OrdersTable\n orders={orders}\n editTPSLOrder={(order) => {\n props.editTPSLOrder(order, PositionType.FULL);\n }}\n onCancelOrder={props.onCancelOrder}\n />\n )}\n </Box>\n </Box>\n );\n};\n\nconst PartialPositionPart = (props: {\n position: API.Position;\n orders: API.AlgoOrder[];\n onCancelOrder: (order: API.AlgoOrder) => Promise<void>;\n onCancelAllTPSLOrders: () => Promise<void>;\n editTPSLOrder: (order: API.AlgoOrder, positionType: PositionType) => void;\n addTPSLOrder: (positionType: PositionType) => void;\n}) => {\n const [open, setOpen] = useState(true);\n const { orders } = props;\n const { isMobile } = useScreen();\n return (\n <Box className=\"oui-pt-6\">\n <Box\n className={cn(\n \"oui-flex oui-items-center oui-justify-between\",\n \"oui-px-5\",\n isMobile\n ? \"oui-flex-col oui-items-start oui-justify-start oui-gap-[11px]\"\n : \"oui-flex-row oui-items-center oui-justify-between\",\n )}\n >\n <PositionTypeDescription\n positionType={PositionType.PARTIAL}\n open={open}\n onOpenChange={setOpen}\n />\n <Flex gap={2}>\n <AddButton\n positionType={PositionType.PARTIAL}\n position={props.position}\n addTPSLOrder={props.addTPSLOrder}\n />\n {orders && orders.length > 0 && (\n <CancelAllBtn\n canCancelAll={orders && orders.length > 0}\n onCancelAllTPSLOrders={props.onCancelAllTPSLOrders}\n />\n )}\n </Flex>\n </Box>\n <Box\n className={cn(\n \"oui-overflow-hidden oui-transition-[height] oui-duration-150\",\n open ? \"oui-h-auto\" : \"oui-h-0 oui-pb-4\",\n )}\n >\n {isMobile ? (\n <OrdersTableMobile\n orders={orders}\n editTPSLOrder={(order) =>\n props.editTPSLOrder(order, PositionType.PARTIAL)\n }\n canCancelOrder={props.onCancelOrder}\n />\n ) : (\n <OrdersTable\n className=\"oui-h-[300px]\"\n orders={orders}\n editTPSLOrder={(order) => {\n props.editTPSLOrder(order, PositionType.PARTIAL);\n }}\n onCancelOrder={props.onCancelOrder}\n />\n )}\n </Box>\n </Box>\n );\n};\n\nconst PositionTypeDescription = (props: {\n positionType: PositionType;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}) => {\n const { t } = useTranslation();\n return (\n <Flex\n gap={1}\n itemAlign={\"center\"}\n justify={\"start\"}\n className=\"oui-text-2xs\"\n >\n <Flex\n itemAlign={\"center\"}\n justify={\"start\"}\n gap={1}\n className=\"oui-cursor-pointer\"\n onClick={() => props.onOpenChange(!props.open)}\n >\n <ChevronDownIcon\n size={12}\n color=\"white\"\n className={cn(\n \"oui-cursor-pointer oui-transition-transform\",\n props.open && \"oui-rotate-180\",\n )}\n />\n {props.positionType === PositionType.FULL ? (\n <Text>{t(\"tpsl.positionType.full\")}</Text>\n ) : (\n <Text>{t(\"tpsl.positionType.partial\")}</Text>\n )}\n </Flex>\n <Tooltip\n className=\"oui-w-[280px] oui-p-3\"\n content={\n props.positionType === PositionType.FULL\n ? t(\"tpsl.positionType.full.tips\")\n : t(\"tpsl.positionType.partial.tips\")\n }\n >\n <ExclamationFillIcon\n className=\"oui-cursor-pointer oui-text-base-contrast-54\"\n size={12}\n />\n </Tooltip>\n </Flex>\n );\n};\n\nexport const AddButton = (props: {\n positionType: PositionType;\n position: API.Position;\n addTPSLOrder: (positionType: PositionType) => void;\n}) => {\n const { t } = useTranslation();\n const onAdd = () => {\n props.addTPSLOrder(props.positionType);\n };\n return (\n <ThrottledButton\n variant=\"outlined\"\n size=\"sm\"\n color=\"gray\"\n className=\"oui-h-6 oui-w-[94px] oui-text-2xs\"\n onClick={onAdd}\n >\n {t(\"tpsl.add\")}\n </ThrottledButton>\n );\n};\n\nexport const CancelAllBtn = (props: {\n onCancelAllTPSLOrders: () => Promise<void>;\n canCancelAll: boolean;\n}) => {\n const [loading, setLoading] = useState(false);\n const { t } = useTranslation();\n return (\n <ThrottledButton\n loading={loading}\n variant=\"outlined\"\n disabled={!props.canCancelAll}\n size=\"sm\"\n color=\"gray\"\n className=\"oui-h-6 oui-w-[94px] oui-text-2xs disabled:oui-border-base-contrast-16 disabled:oui-bg-transparent disabled:oui-text-base-contrast-20\"\n onClick={() => {\n setLoading(true);\n props\n .onCancelAllTPSLOrders()\n .then(\n () => {},\n (error) => {\n toast.error(error.message);\n },\n )\n .finally(() => {\n setLoading(false);\n });\n }}\n >\n {t(\"tpsl.cancelAll\")}\n </ThrottledButton>\n );\n};\n","import { AlgoOrder, API } from \"@orderly.network/types\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { useTPSLDetail } from \"./tpslDetail.script\";\nimport { TPSLDetailProvider } from \"./tpslDetailProvider\";\nimport { TPSLDetailUI } from \"./tsplDetail.ui\";\n\nexport type TPSLDetailProps = {\n position: API.Position;\n order: AlgoOrder;\n baseDP: number;\n quoteDP: number;\n};\n\nexport const TPSLDetailWidget = (props: TPSLDetailProps) => {\n const state = useTPSLDetail(props);\n return (\n <TPSLDetailProvider\n symbol={props.position.symbol}\n position={props.position}\n >\n <TPSLDetailUI {...state} />\n </TPSLDetailProvider>\n );\n};\nexport const TPSLDetailDialogId = \"TPSLDetailDialogId \";\nexport const TPSLDetailSheetId = \"TPSLDetailSheetId\";\nregisterSimpleDialog(TPSLDetailDialogId, TPSLDetailWidget, {\n classNames: {\n content: \"oui-w-[420px] lg:oui-pt-4 lg:oui-pb-2 !oui-px-0\",\n body: \"lg:oui-py-0\",\n },\n});\n\nregisterSimpleSheet(TPSLDetailSheetId, TPSLDetailWidget, {\n classNames: {\n content: \"!oui-p-0\",\n },\n});\n","import { useEffect, useMemo, useRef } from \"react\";\nimport {\n type ComputedAlgoOrder,\n useLocalStorage,\n useMemoizedFn,\n usePositionStream,\n useSymbolsInfo,\n useTPSLOrder,\n utils,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AlgoOrderRootType,\n API,\n OrderType,\n PositionType,\n SDKError,\n} from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { PositionTPSLConfirm } from \"../positionTPSL\";\n\nexport type TPSLBuilderOptions = {\n type: \"tp\" | \"sl\";\n triggerPrice?: number;\n symbol: string;\n};\n\nexport const useTPSLSimpleDialog = (options: TPSLBuilderOptions) => {\n const { type, triggerPrice, symbol } = options;\n const symbolInfo = useSymbolsInfo();\n const [{ rows: positions }, positionsInfo] = usePositionStream(symbol);\n const position = positions?.[0];\n const prevTPSLType = useRef<AlgoOrderRootType>(AlgoOrderRootType.TP_SL);\n const [needConfirm] = useLocalStorage(\"orderly_order_confirm\", true);\n const { t } = useTranslation();\n\n const [\n tpslOrder,\n {\n submit,\n deleteOrder,\n setValue,\n setValues,\n validate,\n errors,\n isCreateMutating,\n isUpdateMutating,\n },\n ] = useTPSLOrder(\n {\n symbol: symbol!,\n position_qty: position?.position_qty,\n average_open_price: position?.average_open_price,\n },\n {\n defaultOrder: undefined,\n positionType: PositionType.PARTIAL,\n // tpslEnable: { tp_enable: type === \"tp\", sl_enable: type === \"sl\" },\n isEditing: false,\n },\n );\n\n const setQuantity = (value: number | string) => {\n setValue(\"quantity\", value);\n };\n\n const setOrderPrice = (\n name: \"tp_trigger_price\" | \"sl_trigger_price\",\n value: number | string,\n ) => {\n setValue(name, value);\n };\n\n const setPnL = (type: string, value: number | string) => {\n setValue(type, value);\n };\n\n const maxQty = useMemo(\n () => Math.abs(Number(position.position_qty)),\n [position.position_qty],\n );\n\n useEffect(() => {\n if (!maxQty) {\n return;\n }\n setValue(\"quantity\", maxQty);\n if (type === \"tp\") {\n setValue(\"tp_trigger_price\", triggerPrice ?? \"\");\n } else {\n setValue(\"sl_trigger_price\", triggerPrice ?? \"\");\n }\n }, [type, triggerPrice, maxQty]);\n\n const onSubmit = async () => {\n try {\n const validOrder = await validate();\n if (validOrder) {\n if (!needConfirm) {\n return submit({ accountId: position.account_id })\n .then(() => true)\n .catch((err) => {\n if (err?.message) {\n toast.error(err.message);\n }\n throw false;\n });\n }\n // confirm\n return modal\n .confirm({\n title: t(\"tpsl.confirmOrder\"),\n // bodyClassName: \"lg:oui-py-0\",\n onOk: async () => {\n try {\n const res = await submit({\n accountId: position.account_id,\n });\n\n if (res.success) {\n return res;\n }\n\n if (res.message) {\n toast.error(res.message);\n }\n\n return false;\n } catch (err: any) {\n if (err?.message) {\n toast.error(err.message);\n }\n return false;\n }\n },\n classNames: {\n body: \"!oui-pb-0\",\n },\n content: (\n <PositionTPSLConfirm\n isPositionTPSL={false}\n isEditing={false}\n symbol={symbol}\n qty={Number(tpslOrder.quantity)}\n maxQty={maxQty}\n tpPrice={Number(tpslOrder.tp_trigger_price)}\n slPrice={Number(tpslOrder.sl_trigger_price)}\n side={tpslOrder.side!}\n orderInfo={tpslOrder}\n quoteDP={symbolInfo[symbol](\"quote_dp\")}\n baseDP={symbolInfo[symbol](\"base_dp\")}\n />\n ),\n })\n .then(\n () => {\n return true;\n },\n () => {\n return Promise.reject(false);\n },\n );\n }\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n return {\n symbolInfo: symbolInfo[symbol!],\n maxQty,\n setQuantity: useMemoizedFn(setQuantity),\n orderQuantity: tpslOrder.quantity,\n isPosition: false,\n TPSL_OrderEntity: tpslOrder,\n setOrderValue: setValue,\n setPnL,\n setOrderPrice,\n onSubmit,\n errors,\n status: {\n isCreateMutating,\n isUpdateMutating,\n },\n position,\n setValues,\n type,\n triggerPrice,\n } as const;\n};\n\nexport type TPSLBuilderState = ReturnType<typeof useTPSLSimpleDialog>;\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport { Box, Button, cn, Divider, Flex, Text } from \"@orderly.network/ui\";\nimport { TPSLQuantity } from \"../components/tpslQty\";\nimport { useTPSLSimpleDialog } from \"./tpslSimpleDialog.script\";\n\ntype Props = ReturnType<typeof useTPSLSimpleDialog> & {\n close?: () => void;\n onComplete?: () => void;\n showAdvancedTPSLDialog?: (options: { qty: number }) => void;\n};\n\nexport const TPSLSimpleDialogUI: React.FC<Props> = (props) => {\n const { type, triggerPrice, errors, TPSL_OrderEntity } = props;\n const { t } = useTranslation();\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n\n const footer = (\n <Flex width=\"100%\" itemAlign=\"center\" gap={3} mt={4}>\n <Button\n key=\"secondary\"\n color=\"gray\"\n onClick={() => {\n props.onComplete?.();\n props.close?.();\n }}\n fullWidth\n className=\"oui-text-sm\"\n size=\"md\"\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n key=\"primary\"\n onClick={() => {\n props.onSubmit().then(() => {\n props.onComplete?.();\n props.close?.();\n });\n }}\n fullWidth\n className=\"oui-text-sm\"\n size=\"md\"\n >\n {t(\"common.confirm\")}\n </Button>\n </Flex>\n );\n\n const errorMessage = () => {\n const tpError = getErrorMsg(\"tp_trigger_price\");\n const slError = getErrorMsg(\"sl_trigger_price\");\n let text = \"\";\n if (tpError && type === \"tp\") {\n text = tpError;\n }\n if (slError && type === \"sl\") {\n text = slError;\n }\n if (!text) {\n return null;\n }\n return (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-mt-2 oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-danger\" />\n <Text className=\"oui-text-danger\">{text}</Text>\n </Flex>\n );\n };\n\n const renderPnl = () => {\n const { tp_pnl, sl_pnl } = TPSL_OrderEntity;\n if (type === \"sl\") {\n return (\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.totalEstSlPnl\")}</Text>\n {sl_pnl ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">USDC</Text>\n }\n coloring\n visible={true}\n size=\"2xs\"\n dp={2}\n >\n {Number(sl_pnl)}\n </Text.numeral>\n ) : (\n <Text size=\"2xs\">-- USDC</Text>\n )}\n </Flex>\n );\n }\n return (\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.totalEstTpPnl\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-text-base-contrast-36 oui-ml-1\">USDC</Text>\n }\n rule=\"price\"\n coloring\n visible={true}\n size=\"2xs\"\n dp={2}\n >\n {tp_pnl ? Number(tp_pnl) : \"--\"}\n </Text.numeral>\n </Flex>\n );\n };\n\n return (\n <Box className=\"oui-w-full oui-px-0.5\">\n <TPSLQuantity\n maxQty={props.maxQty}\n quantity={Number(props.orderQuantity ?? props.maxQty)}\n baseTick={props.symbolInfo(\"base_tick\")}\n base_dp={props.symbolInfo(\"base_dp\")}\n base={props.symbolInfo(\"base\")}\n isEditing={false}\n errorMsg={getErrorMsg(\"quantity\")}\n onQuantityChange={props.setQuantity}\n />\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className={cn(\n \"oui-mt-4 oui-w-full oui-gap-1 oui-text-xs oui-text-base-contrast-36\",\n )}\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"xs\">{t(\"common.triggerPrice\")}</Text>\n <Text.numeral\n className=\"oui-text-base-contrast\"\n suffix={\n <Text className=\"oui-ml-1 oui-text-xs oui-text-base-contrast-36\">\n USDC\n </Text>\n }\n rule=\"price\"\n size=\"xs\"\n dp={props.symbolInfo(\"quote_dp\")}\n >\n {triggerPrice ? Number(triggerPrice) : \"--\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"xs\">{t(\"common.orderPrice\")}</Text>\n <Text className=\"oui-text-base-contrast\" size=\"xs\">\n {t(\"common.market\")}\n </Text>\n </Flex>\n {renderPnl()}\n </Flex>\n {errorMessage()}\n\n <Divider className=\"oui-my-3 oui-w-full\" />\n <Flex\n itemAlign={\"center\"}\n onClick={() => {\n props.close?.();\n props.showAdvancedTPSLDialog?.({\n qty: Number(TPSL_OrderEntity.quantity),\n });\n }}\n className=\"oui-pb-4\"\n >\n <Text color=\"primary\" className=\"oui-cursor-pointer oui-text-sm\">\n {t(\"tpsl.advancedSetting\")}\n </Text>\n </Flex>\n {footer}\n </Box>\n );\n};\n","import React from \"react\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { useTPSLSimpleDialog } from \"./tpslSimpleDialog.script\";\nimport { TPSLSimpleDialogUI } from \"./tpslSimpleDialog.ui\";\n\nexport const TPSLSimpleDialogWidget: React.FC<{\n type: \"tp\" | \"sl\";\n triggerPrice?: number;\n symbol: string;\n close?: () => void;\n onComplete?: () => void;\n showAdvancedTPSLDialog?: () => void;\n}> = (props) => {\n const { close, onComplete, showAdvancedTPSLDialog } = props;\n const state = useTPSLSimpleDialog(props);\n return (\n <TPSLSimpleDialogUI\n {...state}\n close={close}\n onComplete={onComplete}\n showAdvancedTPSLDialog={showAdvancedTPSLDialog}\n />\n );\n};\n\nexport const TPSLSimpleSheetId = \"TPSLSimpleSheetId\";\n\nexport const TPSLSimpleDialogId = \"TPSLSimpleDialogId\";\n\nregisterSimpleSheet(TPSLSimpleSheetId, TPSLSimpleDialogWidget, {\n classNames: {},\n});\n\nregisterSimpleDialog(TPSLSimpleDialogId, TPSLSimpleDialogWidget, {\n classNames: {\n content: \"oui-w-[420px]\",\n },\n});\n","import { useEffect, useMemo } from \"react\";\nimport {\n ERROR_MSG_CODES,\n useMaxQty,\n useMutation,\n useOrderEntry,\n useSymbolsInfo,\n useTpslPriceChecker,\n} from \"@orderly.network/hooks\";\nimport {\n AlgoOrderRootType,\n AlgoOrderType,\n API,\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n SDKError,\n} from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nfunction getInitialOrder(order: API.AlgoOrderExt) {\n const childOrder = order.child_orders[0];\n const positionType =\n childOrder.algo_type === AlgoOrderRootType.TP_SL\n ? PositionType.PARTIAL\n : PositionType.FULL;\n const tpOrder = childOrder.child_orders.find(\n (item) =>\n item.algo_type === AlgoOrderType.TAKE_PROFIT && item.trigger_price,\n );\n const slOrder = childOrder.child_orders.find(\n (item) => item.algo_type === AlgoOrderType.STOP_LOSS && item.trigger_price,\n );\n const tpslPriceInfo: {\n tp_trigger_price?: string | undefined;\n tp_order_type?: OrderType;\n tp_order_price?: string | undefined;\n sl_trigger_price?: string | undefined;\n sl_order_type?: OrderType;\n sl_order_price?: string | undefined;\n } = {};\n if (tpOrder) {\n tpslPriceInfo.tp_trigger_price = tpOrder.trigger_price?.toString();\n tpslPriceInfo.tp_order_type =\n typeof tpOrder.type === \"string\"\n ? (tpOrder.type.replace(\"_ORDER\", \"\") as OrderType)\n : undefined;\n if (tpslPriceInfo.tp_order_type === OrderType.LIMIT) {\n tpslPriceInfo.tp_order_price = tpOrder.price?.toString();\n }\n }\n if (slOrder) {\n tpslPriceInfo.sl_trigger_price = slOrder.trigger_price?.toString();\n tpslPriceInfo.sl_order_type =\n typeof slOrder.type === \"string\"\n ? (slOrder.type.replace(\"_ORDER\", \"\") as OrderType)\n : undefined;\n if (tpslPriceInfo.sl_order_type === OrderType.LIMIT) {\n tpslPriceInfo.sl_order_price = slOrder.price?.toString();\n }\n }\n\n return {\n baseInfo: {\n symbol: order.symbol,\n order_type: order.type,\n side: order.side,\n order_price: order.price,\n order_quantity: order.quantity,\n position_type: positionType,\n // tp_enable: !!tpOrder?.trigger_price,\n // sl_enable: !!slOrder?.trigger_price,\n },\n tpslPriceInfo,\n tpInfo: {\n orderId: tpOrder?.algo_order_id,\n },\n slInfo: {\n orderId: slOrder?.algo_order_id,\n },\n };\n}\n\nfunction isTPSLPriceChanged(\n originPrice: string | number,\n newPrice: string | number,\n) {\n if (newPrice === undefined || newPrice === null) {\n return true;\n }\n if (isNaN(Number(newPrice))) {\n return false;\n }\n const originDeci = new Decimal(Number(originPrice));\n const newDeci = new Decimal(Number(newPrice));\n return !newDeci.eq(originDeci);\n}\n\nexport const useEditBracketOrder = (props: { order: API.AlgoOrderExt }) => {\n if (!props.order) {\n throw new SDKError(\"order is required for editBracketOrder\");\n }\n const { baseInfo, tpslPriceInfo, tpInfo, slInfo } = getInitialOrder(\n props.order,\n );\n\n const [doUpdateOrder, { isMutating }] = useMutation(\"/v1/algo/order\", \"PUT\");\n\n const maxQty = useEditOrderMaxQty(props.order, props.order.quantity);\n\n const {\n formattedOrder,\n setValue,\n setValues,\n estLiqPrice,\n metaState,\n symbolInfo,\n helper,\n ...state\n } = useOrderEntry(props.order.symbol, {\n initialOrder: baseInfo,\n maxQty,\n });\n const symbol = props.order.symbol;\n\n const isPriceChanged = useMemo(() => {\n let dirty = false;\n const {\n tp_order_price,\n sl_order_price,\n tp_trigger_price,\n sl_trigger_price,\n } = formattedOrder;\n if (tpslPriceInfo.tp_trigger_price) {\n dirty =\n dirty ||\n isTPSLPriceChanged(\n tpslPriceInfo.tp_trigger_price,\n tp_trigger_price ?? 0,\n );\n }\n if (tpslPriceInfo.tp_order_price) {\n dirty =\n dirty ||\n isTPSLPriceChanged(tpslPriceInfo.tp_order_price, tp_order_price ?? 0);\n }\n if (tpslPriceInfo.sl_trigger_price) {\n dirty =\n dirty ||\n isTPSLPriceChanged(\n tpslPriceInfo.sl_trigger_price,\n sl_trigger_price ?? 0,\n );\n }\n if (tpslPriceInfo.sl_order_price) {\n dirty =\n dirty ||\n isTPSLPriceChanged(tpslPriceInfo.sl_order_price, sl_order_price ?? 0);\n }\n return dirty;\n }, [\n tpslPriceInfo,\n formattedOrder.tp_order_price,\n formattedOrder.sl_order_price,\n formattedOrder.tp_trigger_price,\n formattedOrder.sl_trigger_price,\n ]);\n useEffect(() => {\n setValues({\n ...tpslPriceInfo,\n });\n }, [props.order, setValues]);\n\n const slPriceError = useTpslPriceChecker({\n slPrice: formattedOrder.sl_trigger_price,\n liqPrice: estLiqPrice,\n side: formattedOrder.side,\n });\n\n const isSlPriceError =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_ERROR;\n\n const onSubmit = async () => {\n return helper\n .validate(isSlPriceError ? slPriceError : undefined)\n .then(() => {\n const tpOrder: {\n order_id?: number;\n trigger_price?: string;\n algo_type: AlgoOrderType;\n price?: string;\n reduce_only?: boolean;\n is_activated?: boolean;\n } = {\n order_id: tpInfo.orderId,\n algo_type: AlgoOrderType.TAKE_PROFIT,\n trigger_price: formattedOrder.tp_trigger_price,\n reduce_only: true,\n };\n if (formattedOrder.tp_order_type === OrderType.LIMIT) {\n tpOrder.price = formattedOrder.tp_order_price;\n }\n\n const slOrder: {\n order_id?: number;\n trigger_price?: string;\n algo_type: AlgoOrderType;\n price?: string;\n reduce_only?: boolean;\n is_activated?: boolean;\n } = {\n order_id: slInfo.orderId,\n algo_type: AlgoOrderType.STOP_LOSS,\n trigger_price: formattedOrder.sl_trigger_price,\n reduce_only: true,\n };\n if (formattedOrder.sl_order_type === OrderType.LIMIT) {\n slOrder.price = formattedOrder.sl_order_price;\n }\n\n const childOrders = [];\n if (tpInfo.orderId) {\n childOrders.push(tpOrder);\n }\n if (slInfo.orderId) {\n childOrders.push(slOrder);\n }\n return doUpdateOrder({\n order_id: props.order.algo_order_id,\n child_orders: [\n {\n order_id: props.order.child_orders[0].algo_order_id,\n child_orders: childOrders,\n },\n ],\n });\n });\n };\n\n return {\n symbol,\n symbolInfo,\n slPriceError,\n estLiqPrice,\n side: formattedOrder.side,\n formattedOrder,\n setValue,\n setValues,\n metaState,\n onSubmit,\n isMutating,\n isPriceChanged,\n };\n};\n\nexport function useEditOrderMaxQty(\n order: API.AlgoOrderExt,\n positionQty?: number,\n) {\n const { reduce_only } = order;\n\n const maxQty = useMaxQty(order.symbol, order.side as OrderSide, reduce_only);\n\n return useMemo(() => {\n if (reduce_only) {\n return Math.abs(positionQty ?? 0);\n }\n return order.quantity + Math.abs(maxQty);\n }, [order.quantity, maxQty, reduce_only, positionQty]);\n}\n","import { useEffect, useState } from \"react\";\nimport { ERROR_MSG_CODES } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport {\n cn,\n Divider,\n DotStatus,\n Flex,\n ScrollArea,\n Text,\n ThrottledButton,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { OrderInfo } from \"../components/orderInfo\";\nimport { PnlInfo } from \"../components/pnlInfo\";\nimport { TPSLInputRowWidget } from \"../components/tpslInputRow\";\nimport { TPSLPositionTypeWidget } from \"../components/tpslPostionType\";\nimport { useEditBracketOrder } from \"./editBracketOrder.script\";\n\ntype Props = ReturnType<typeof useEditBracketOrder>;\nexport const EditBracketOrderUI = (props: Props & { onClose?: () => void }) => {\n const { t } = useTranslation();\n const { errors, validated } = props.metaState;\n const { isMobile } = useScreen();\n // console.log('errors', errors, validated);\n\n const isSlPriceWarning =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.slPriceError);\n\n const {\n formattedOrder,\n setValue: setOrderValue,\n symbol,\n symbolInfo,\n setValues,\n } = props;\n\n const [tpValues, setTpValuse] = useState<{\n // enable: boolean;\n trigger_price: string;\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n order_price: string;\n order_type: OrderType;\n }>({\n // enable: false,\n order_type: formattedOrder.tp_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.tp_order_price ?? \"\",\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n });\n\n const [slValues, setSlValues] = useState<{\n // enable: boolean;\n trigger_price: string;\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n order_price: string;\n order_type: OrderType;\n }>({\n // enable: false,\n order_type: formattedOrder.sl_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.sl_order_price ?? \"\",\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n });\n\n // Update tpValues when formattedOrder changes\n useEffect(() => {\n setTpValuse((prev) => ({\n ...prev,\n // enable: formattedOrder.tp_enable ?? false,\n order_type: formattedOrder.tp_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.tp_order_price ?? \"\",\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n }));\n }, [formattedOrder]);\n\n useEffect(() => {\n setSlValues((prev) => ({\n ...prev,\n // enable: formattedOrder.sl_enable ?? false,\n order_type: formattedOrder.sl_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.sl_order_price ?? \"\",\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n }));\n }, [formattedOrder]);\n return (\n <div>\n <ScrollArea\n className={cn(\"oui-flex-1\", isMobile && \"oui-h-[calc(100vh-200px)]\")}\n >\n <div className=\"\">\n <OrderInfo\n order={{\n symbol,\n order_quantity: formattedOrder.order_quantity,\n order_price: formattedOrder.order_price,\n }}\n estLiqPrice={props.estLiqPrice ?? undefined}\n baseDP={symbolInfo.base_dp}\n quoteDP={symbolInfo.quote_dp}\n />\n </div>\n <Divider className=\"oui-my-3\" />\n <div className=\"\">\n <div className=\"oui-py-3\">\n <TPSLPositionTypeWidget\n value={formattedOrder.position_type ?? PositionType.PARTIAL}\n disableSelector\n onChange={(key, value) => {\n // setOrderValue(\"position_type\", value);\n if (value === PositionType.FULL) {\n setValues({\n position_type: PositionType.FULL,\n tp_order_type: OrderType.MARKET,\n tp_order_price: undefined,\n sl_order_type: OrderType.MARKET,\n sl_order_price: undefined,\n });\n // setOrderValue(\"tp_order_type\", OrderType.MARKET);\n // setOrderValue(\"sl_order_type\", OrderType.MARKET);\n return;\n }\n setOrderValue(\"position_type\", value);\n }}\n />\n {formattedOrder.position_type === PositionType.FULL && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-mt-3 oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-warning-darken\" />\n <Text className=\"oui-text-2xs oui-text-warning-darken\">\n {t(\"tpsl.positionType.full.tips.market\")}\n </Text>\n </Flex>\n )}\n </div>\n <Flex direction={\"column\"} gap={6}>\n {/* {formattedOrder.tp_enable && ( */}\n <TPSLInputRowWidget\n disableEnableCheckbox\n disableOrderTypeSelector\n rootOrderPrice={formattedOrder.order_price}\n symbol={symbolInfo.symbol}\n type=\"tp\"\n side={formattedOrder.side as OrderSide}\n values={tpValues}\n errors={validated ? errors : null}\n quote_dp={symbolInfo.quote_dp}\n hideOrderPrice={\n formattedOrder.position_type === PositionType.FULL\n }\n onChange={(key, value) => {\n setOrderValue(key as keyof OrderlyOrder, value);\n }}\n positionType={\n formattedOrder.position_type ?? PositionType.PARTIAL\n }\n />\n {/* )} */}\n {/* {formattedOrder.sl_enable && formattedOrder.tp_enable && ( */}\n <Divider className=\"oui-w-full\" />\n {/* )} */}\n {/* {formattedOrder.sl_enable && ( */}\n <TPSLInputRowWidget\n disableEnableCheckbox\n disableOrderTypeSelector\n rootOrderPrice={formattedOrder.order_price}\n symbol={symbolInfo.symbol}\n type=\"sl\"\n side={formattedOrder.side as OrderSide}\n values={slValues}\n hideOrderPrice={\n formattedOrder.position_type === PositionType.FULL\n }\n inputWarnNode={\n isSlPriceWarning && (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={getErrorMsg(\"sl_trigger_price\")}\n />\n )\n }\n errors={\n validated ? errors : isSlPriceError ? props.slPriceError : null\n }\n quote_dp={symbolInfo.quote_dp}\n positionType={\n formattedOrder.position_type ?? PositionType.PARTIAL\n }\n onChange={(key, value) => {\n setOrderValue(key as keyof OrderlyOrder, value);\n }}\n />\n {/* )} */}\n </Flex>\n\n <PnlInfo\n tp_pnl={formattedOrder.tp_pnl}\n sl_pnl={formattedOrder.sl_pnl}\n className=\"oui-mt-6\"\n />\n </div>\n </ScrollArea>\n <Flex\n itemAlign={\"center\"}\n gap={3}\n mt={5}\n width={\"100%\"}\n justify={\"center\"}\n >\n <ThrottledButton\n className=\"oui-w-[184px]\"\n data-testid={\"tpsl-confirm\"}\n disabled={!props.isPriceChanged}\n loading={props.isMutating}\n onClick={() => {\n props\n .onSubmit()\n .then(() => {\n props.onClose?.();\n })\n .catch((err) => {\n console.log(\"--->>>cancel order\", err);\n });\n }}\n >\n {t(\"common.confirm\")}\n </ThrottledButton>\n </Flex>\n </div>\n );\n};\n","import { API } from \"@orderly.network/types\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { useEditBracketOrder } from \"./editBracketOrder.script\";\nimport { EditBracketOrderUI } from \"./editBracketOrder.ui\";\n\nexport const EditBracketOrderWidget = (props: {\n order: API.AlgoOrderExt;\n close?: () => void;\n}) => {\n const state = useEditBracketOrder({ order: props.order });\n return <EditBracketOrderUI {...state} onClose={props.close} />;\n};\n\nexport const EditBracketOrderSheetId = \"EditBracketOrderSheetId\";\nexport const EditBracketOrderDialogId = \"EditBracketOrderDialogId\";\n\nregisterSimpleSheet(EditBracketOrderSheetId, EditBracketOrderWidget);\n\nregisterSimpleDialog(EditBracketOrderDialogId, EditBracketOrderWidget, {\n classNames: {\n content: \"oui-w-[420px]\",\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/orderInfo.tsx","../src/components/pnlInfo.tsx","../src/components/tpslInputRow/tpslInputRow.script.ts","../src/pnlInput/useBuilder.script.ts","../src/pnlInput/pnlInput.ui.tsx","../src/pnlInput/pnlInput.widget.tsx","../src/components/orderPriceType.tsx","../src/components/tpslInputRow/priceInput.tsx","../src/components/tpslInputRow/tpslInputRow.ui.tsx","../src/components/tpslInputRow/tpslInputRow.widget.tsx","../src/components/tpslPostionType/tpslPositionType.script.tsx","../src/components/tpslPostionType/tpslPositionType.ui.tsx","../src/components/tpslPostionType/tpslPostionType.widget.tsx","../src/components/tpslQty.tsx","../src/positionTPSL/tpsl.ui.tsx","../src/positionTPSL/positionTpslConfirm.tsx","../src/positionTPSL/useTPSL.script.tsx","../src/positionTPSL/tpsl.widget.tsx","../src/editorPopover.tsx","../src/editorSheet.tsx","../src/tpslAdvanced/tpslAdvanced.ui.tsx","../src/tpslAdvanced/useTPSLAdvanced.script.ts","../src/tpslAdvanced/tpslAdvanced.widget.tsx","../src/tpslDetail/tpslDetail.script.tsx","../src/tpslDetail/tpslDetailProvider.tsx","../src/tpslDetail/components/common.tsx","../src/tpslDetail/components/estPnl.tsx","../src/tpslDetail/components/orderPrice.tsx","../src/tpslDetail/components/qty.tsx","../src/tpslDetail/components/triggerPrice.tsx","../src/components/closeLiqPriceIcon.tsx","../src/tpslDetail/components/type.tsx","../src/tpslDetail/useColum.tsx","../src/tpslDetail/ordersTable.tsx","../src/tpslDetail/ordersTable.mobile.tsx","../src/tpslDetail/tsplDetail.ui.tsx","../src/tpslDetail/tpslDetail.widget.tsx","../src/tpslSimpleDialog/tpslSimpleDialog.script.tsx","../src/tpslSimpleDialog/tpslSimpleDialog.ui.tsx","../src/tpslSimpleDialog/tpslSimpleDialog.widget.tsx","../src/editBracketOrder/editBracketOrder.script.tsx","../src/editBracketOrder/editBracketOrder.ui.tsx","../src/editBracketOrder/editBracketOrder.widget.tsx"],"names":["order","useTranslation","jsx","Text","jsxs","Flex","cn","useLeverageBySymbol","useMemo","roi","value","options","Decimal","mode","useState","OrderType","Input","inputFormatter","Grid","PositionType","Fragment","Select","useRef","useEffect","qty","useOrderEntryFormErrorMsg","MarginMode","OrderSide","useLocalStorage","Box","Checkbox","ERROR_MSG_CODES","type","utils","maxQty","AlgoOrderRootType","modal","Button","ScrollArea","Divider","DotStatus","useTpslPriceChecker","registerSimpleSheet","registerSimpleDialog","useSymbolsInfo","useEventEmitter","useAccount","useScreen","partialPositionOrders","useEstLiqPriceBySymbol","perpPositions","findTPSLFromOrder","ExclamationFillIcon","Tooltip","ThrottledButton","toast","AuthGuardDataTable","CancelAllBtn","useMarginModeBySymbol","usePositionStream","useTPSLOrder","useMemoizedFn","SDKError","useOrderEntry"],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n useIndexPrice,\n useMarkPrice,\n useLeverageBySymbol,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { MarginMode, OrderlyOrder } from \"@orderly.network/types\";\nimport {\n cn,\n Flex,\n Grid,\n Text,\n TokenIcon,\n capitalizeFirstLetter,\n} from \"@orderly.network/ui\";\n\ntype Props = {\n order: Partial<OrderlyOrder>;\n baseDP?: number;\n quoteDP?: number;\n estLiqPrice?: number;\n className?: string;\n classNames?: {\n root?: string;\n symbol?: string;\n container?: string;\n };\n symbolLeverage?: number;\n marginMode?: MarginMode;\n};\nexport const OrderInfo = (props: Props) => {\n const { t } = useTranslation();\n const { order, symbolLeverage } = props;\n const { symbol } = order;\n const markPrice = useMarkPrice(symbol!);\n const indexPrice = useIndexPrice(symbol!);\n\n const leverage = useLeverageBySymbol(\n symbolLeverage ? undefined : symbol,\n props.marginMode,\n );\n\n const currentLeverage = symbolLeverage || leverage;\n\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className={cn(\n \"oui-w-full oui-gap-3 oui-font-semibold \",\n props.classNames?.root,\n )}\n >\n <Flex\n itemAlign={\"center\"}\n className={cn(\"oui-gap-2 \", props.classNames?.symbol)}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <TokenIcon symbol={symbol} className=\"oui-size-5\" />\n <Text.formatted\n className=\"oui-whitespace-nowrap oui-break-normal\"\n rule=\"symbol\"\n formatString=\"base-type\"\n size=\"sm\"\n weight=\"semibold\"\n intensity={98}\n >\n {symbol}\n </Text.formatted>\n </Flex>\n {props.marginMode && (\n <Text\n size=\"2xs\"\n className=\"oui-h-[18px] oui-rounded oui-bg-base-7 oui-px-2 oui-font-semibold oui-text-base-contrast-36\"\n >\n {capitalizeFirstLetter(props.marginMode)}\n </Text>\n )}\n <Text\n size=\"2xs\"\n className=\"oui-h-[18px] oui-rounded oui-bg-base-7 oui-px-2 oui-font-semibold oui-text-base-contrast-36\"\n >\n {currentLeverage}x\n </Text>\n </Flex>\n <Grid\n cols={2}\n gapX={2}\n gapY={1}\n className={cn(\"oui-w-full oui-gap-x-2 \", props.classNames?.container)}\n >\n <Flex justify={\"between\"} className=\" oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"common.quantity\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-base-contrast-80\"\n size=\"2xs\"\n dp={props.baseDP ?? 2}\n >\n {Number(order.order_quantity)}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"common.lastPrice\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-base-contrast-80\"\n size=\"2xs\"\n dp={props.quoteDP ?? 2}\n >\n {indexPrice?.data}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"common.orderPrice\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-base-contrast-80\"\n size=\"2xs\"\n dp={props.quoteDP ?? 2}\n >\n {Number(order.order_price)}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"common.markPrice\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-base-contrast-80\"\n size=\"2xs\"\n dp={props.quoteDP ?? 2}\n >\n {markPrice?.data}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-text-base-contrast-36\">\n <Text size=\"2xs\">{t(\"positions.column.liqPrice\")}</Text>\n <Text.numeral\n rule=\"price\"\n className=\"oui-text-warning\"\n size=\"2xs\"\n dp={props.quoteDP ?? 2}\n >\n {props.estLiqPrice ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Grid>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal, checkIsNaN } from \"@orderly.network/utils\";\n\ntype Props = {\n tp_pnl?: string | number;\n sl_pnl?: string | number;\n className?: string;\n};\n\nexport const PnlInfo = (props: Props) => {\n const { t } = useTranslation();\n const { tp_pnl, sl_pnl } = props;\n const riskRatio = useMemo(() => {\n const defaultNode = <Text className=\"oui-text-base-contrast-36\">-- x</Text>;\n if (tp_pnl === undefined || sl_pnl === undefined) {\n return defaultNode;\n }\n if (checkIsNaN(tp_pnl) || checkIsNaN(sl_pnl)) {\n return defaultNode;\n }\n const tpDecimal = new Decimal(tp_pnl);\n const slDecimal = new Decimal(sl_pnl);\n if (slDecimal.isZero() || tpDecimal.isZero()) {\n return defaultNode;\n }\n const ratio = tpDecimal.div(slDecimal).abs().toNumber().toFixed(2);\n return (\n <Flex gap={1} itemAlign={\"center\"} className=\"oui-text-base-contrast-80\">\n <Text>{ratio}</Text>\n <Text className=\"oui-text-base-contrast-36\">x</Text>\n </Flex>\n );\n return defaultNode;\n }, [tp_pnl, sl_pnl]);\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className={cn(\n \"oui-w-full oui-gap-1 oui-text-2xs oui-text-base-contrast-36\",\n props.className,\n )}\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.totalEstTpPnl\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-text-base-contrast-36 oui-ml-1\">USDC</Text>\n }\n rule=\"price\"\n coloring\n visible={true}\n size=\"2xs\"\n dp={2}\n >\n {tp_pnl ? Number(tp_pnl) : \"--\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.totalEstSlPnl\")}</Text>\n {sl_pnl ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-text-base-contrast-36 oui-ml-1\">USDC</Text>\n }\n coloring\n visible={true}\n size=\"2xs\"\n dp={2}\n >\n {Number(sl_pnl)}\n </Text.numeral>\n ) : (\n <Text size=\"2xs\">-- USDC</Text>\n )}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.riskRewardRatio\")}</Text>\n <Text className=\"oui-text-base-contrast-80\" size=\"2xs\">\n {riskRatio}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport {\n OrderValidationResult,\n useLeverageBySymbol,\n} from \"@orderly.network/hooks\";\nimport { order } from \"@orderly.network/perp\";\nimport {\n MarginMode,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\n\nexport type Props = {\n disableOrderTypeSelector?: boolean;\n type: \"tp\" | \"sl\";\n quote_dp: number;\n positionType: PositionType;\n errors: OrderValidationResult | null;\n hideOrderPrice?: boolean;\n values: {\n // enable: boolean;\n trigger_price: string | undefined;\n PnL: string | undefined;\n Offset: string | undefined;\n \"Offset%\": string | undefined;\n ROI?: string | undefined;\n order_price: string | undefined;\n order_type: OrderType;\n };\n onChange: (key: string, value: string | boolean | number) => void;\n rootOrderPrice: string | undefined;\n symbol: string;\n disableEnableCheckbox?: boolean;\n symbolLeverage?: number;\n side: OrderSide;\n inputWarnNode?: React.ReactNode;\n marginMode?: MarginMode;\n};\nexport const useTPSLInputRowScript = (props: Props) => {\n const { values, side, type, rootOrderPrice } = props;\n // if symbolLeverage is not provided, get it from useLeverageBySymbol\n const symbolLeverage = useLeverageBySymbol(\n props.symbolLeverage ? undefined : props.symbol,\n props.marginMode,\n );\n\n const leverage = props.symbolLeverage || symbolLeverage;\n\n const roi = useMemo(() => {\n if (!leverage || !rootOrderPrice || Number(rootOrderPrice) === 0) {\n return null;\n }\n\n let closePrice: string | undefined;\n if (values.order_type === OrderType.MARKET) {\n closePrice = values.trigger_price;\n } else if (values.order_type === OrderType.LIMIT) {\n closePrice = values.order_price;\n }\n if (!closePrice) {\n return null;\n }\n\n try {\n const roi = order.tpslROI({\n side,\n type,\n closePrice: Number(closePrice),\n orderPrice: Number(rootOrderPrice),\n leverage,\n });\n return roi * 100;\n } catch (error) {\n console.error(\"error\", error);\n return null;\n }\n }, [values, leverage, rootOrderPrice, type, side]);\n\n return {\n ...props,\n roi,\n };\n};\n","import { useMemo, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { MenuItem } from \"@orderly.network/ui\";\nimport type {\n InputFormatter,\n InputFormatterOptions,\n} from \"@orderly.network/ui\";\nimport { Decimal, todpIfNeed } from \"@orderly.network/utils\";\n\nexport enum PnLMode {\n PnL = \"PnL\",\n OFFSET = \"Offset\",\n PERCENTAGE = \"Offset%\",\n}\n\nexport type PNL_Values = {\n PnL: string | undefined;\n Offset: string | undefined;\n \"Offset%\": string | undefined;\n};\n\nexport type BuilderProps = {\n type: \"TP\" | \"SL\";\n\n quote_dp?: number;\n onChange: (key: string, value: number | string) => void;\n\n values: PNL_Values;\n};\n\nexport const usePNLInputBuilder = (props: BuilderProps) => {\n const { type, values } = props;\n const [mode, setMode] = useLocalStorage<PnLMode>(\n \"TP/SL_Mode\",\n PnLMode.PERCENTAGE,\n );\n const [focus, setFocus] = useState(true);\n\n const { t } = useTranslation();\n\n const key = useMemo(() => {\n switch (mode) {\n case PnLMode.OFFSET:\n return `${type.toLowerCase()}_offset`;\n case PnLMode.PERCENTAGE:\n return `${type.toLowerCase()}_offset_percentage`;\n default:\n return `${type.toLowerCase()}_pnl`;\n }\n }, [mode]);\n\n const value = useMemo(() => {\n return values[mode as keyof PNL_Values];\n }, [values, mode]);\n\n const modes = useMemo<MenuItem[]>(() => {\n return [\n {\n label: t(\"tpsl.pnl\"),\n value: PnLMode.PnL,\n testId: `${PnLMode.PnL}_menu_item`,\n },\n {\n label: t(\"tpsl.offset\"),\n value: PnLMode.OFFSET,\n testId: `${PnLMode.OFFSET}_mneu_item`,\n },\n {\n label: `${t(\"tpsl.offset\")}%`,\n value: PnLMode.PERCENTAGE,\n testId: `${PnLMode.PERCENTAGE}_menu_item`,\n },\n ];\n }, [t]);\n\n const percentageSuffix = useRef<string>(\"\");\n\n const onValueChange = (value: string) => {\n props.onChange(key, value);\n };\n\n const formatter = (options: {\n dp?: number;\n mode: PnLMode;\n }): InputFormatter => {\n const { dp = 2 } = options;\n return {\n onRenderBefore: (\n value: string | number,\n options: InputFormatterOptions,\n ) => {\n value = `${value}`; // convert to string\n\n if (focus) {\n // not need to add \"-\", because the value is already negative\n // if (type === \"SL\" && mode === PnLMode.PnL) {\n // value = value.startsWith(\"-\") ? value : \"-\" + value;\n // }\n }\n\n if (value === \"\" || value === \"-\") return \"\";\n // if (mode === PnLMode.PnL || mode === PnLMode.OFFSET) {\n // return commify(value);\n // }\n\n if (mode === PnLMode.PERCENTAGE) {\n try {\n // fix value is invalid decimal string, like \"-\"\n return `${new Decimal(\n value.replace(\n new RegExp(percentageSuffix.current.replace(\".\", \"\\\\.\") + \"$\"),\n \"\",\n ),\n )\n .mul(100)\n .todp(2, 4)\n .toString()}${percentageSuffix.current}`;\n } catch {\n return \"\";\n }\n } else if (mode === PnLMode.OFFSET) {\n value = todpIfNeed(value, dp);\n } else {\n // value = new Decimal(value).todp(2).toString();\n }\n\n return `${value}`;\n },\n onSendBefore: (value: string) => {\n if (/^\\-?0{2,}$/.test(value)) {\n return \"0\";\n }\n\n if (mode === PnLMode.PERCENTAGE) {\n // console.log(\"value\", value);\n if (value !== \"\") {\n // percentageSuffix.current = value.endsWith(\".\") ? \".\" : \"\";\n value = todpIfNeed(value, 2);\n const endStr = value.match(/\\.0{0,2}$/);\n if (!!endStr) {\n percentageSuffix.current = endStr[0];\n } else {\n percentageSuffix.current = \"\";\n }\n // fix value is invalid decimal string, like \"1-46.35\"\n try {\n value = new Decimal(value).div(100).toString();\n } catch {\n value = \"\";\n }\n value = `${value}${percentageSuffix.current}`;\n }\n } else if (mode === PnLMode.PnL && type === \"SL\" && focus) {\n // not need to add \"-\", because the value is already negative\n value = value.startsWith(\"-\") ? value : \"-\" + value;\n } else {\n value = todpIfNeed(value, dp);\n }\n\n if (value === \"\" || value === \"-\") return \"\";\n\n return value;\n },\n };\n // return {\n // onRenderBefore: (\n // value: string | number,\n // options: InputFormatterOptions\n // ) => {\n // // console.log(\"???\", options);\n // const { isFocused } = options;\n // value = `${value}`;\n // if (value === \"\" || value === \"-\") return \"\";\n\n // // if (type === \"SL\" && mode === PnLMode.PnL) {\n // // if (isFocused) {\n // // value = value.startsWith(\"-\") ? value : \"-\" + value;\n // // }\n // // }\n\n // if (mode === PnLMode.PERCENTAGE) {\n // return `${todpIfNeed(new Decimal(value).mul(100).toString(), 2)}${\n // percentageSuffix.current\n // }`;\n // // return (Number(value) * 100).toFixed(2);\n // } else if (mode === PnLMode.OFFSET) {\n // value = todpIfNeed(value, 2);\n // } else {\n // // value = new Decimal(value).todp(2).toString();\n // }\n\n // return value;\n // },\n // onSendBefore: (value: string, options: InputFormatterOptions) => {\n // const { isFocused } = options;\n\n // if (mode === PnLMode.PERCENTAGE) {\n // if (value !== \"\") {\n // percentageSuffix.current = value.endsWith(\".\") ? \".\" : \"\";\n // value = new Decimal(value).div(100).toString();\n // value = todpIfNeed(value, 4);\n // }\n // } else {\n // // value = todpIfNeed(value, quote_dp);\n // if (isFocused) {\n // if (type === \"SL\" && mode === PnLMode.PnL) {\n // // if (\n // // typeof values[PnLMode.PnL] !== \"undefined\" &&\n // // values[PnLMode.PnL] !== \"\"\n // // )\n // // return value;\n // const num = Number(value);\n // if (!isNaN(num) && num !== 0) {\n // value = (Math.abs(num) * -1).toString();\n // } else {\n // value = \"\";\n // }\n // }\n // }\n // }\n\n // return value;\n // },\n // };\n };\n\n return {\n mode,\n modes,\n type: props.type,\n formatter,\n onModeChange: (mode: PnLMode) => {\n setMode(mode);\n },\n value,\n pnl: values[PnLMode.PnL],\n onValueChange,\n quote_dp: props.quote_dp,\n setFocus,\n };\n};\n\nexport type PNLInputState = ReturnType<typeof usePNLInputBuilder>;\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n CaretDownIcon,\n cn,\n Input,\n MenuItem,\n SimpleDropdownMenu,\n} from \"@orderly.network/ui\";\nimport { inputFormatter, Text } from \"@orderly.network/ui\";\nimport { PNLInputState, PnLMode } from \"./useBuilder.script\";\n\nexport type PNLInputProps = PNLInputState & { testId?: string; quote: string };\n\nexport const PNLInput = (props: PNLInputProps) => {\n const {\n mode,\n modes,\n onModeChange,\n onValueChange,\n quote,\n quote_dp,\n value,\n pnl,\n } = props;\n const { t } = useTranslation();\n\n const [prefix, setPrefix] = useState<string>(mode);\n const [placeholder, setPlaceholder] = useState<string>(\n mode === PnLMode.PERCENTAGE ? \"%\" : quote,\n );\n\n const color = useMemo(() => {\n const num = Number(pnl);\n\n if (isNaN(num) || num === 0) return \"\";\n\n if (num > 0) return \"oui-text-trade-profit\";\n if (num < 0) return \"oui-text-trade-loss\";\n }, [pnl]);\n\n useEffect(() => {\n const label = modes.find((item) => item.value === mode)?.label;\n setPrefix(label!);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n }, [mode, modes]);\n\n return (\n <Input\n prefix={prefix}\n size={{\n initial: \"lg\",\n lg: \"md\",\n }}\n placeholder={placeholder}\n align={\"right\"}\n value={value}\n data-testid={props.testId}\n autoComplete={\"off\"}\n onValueChange={onValueChange}\n formatters={[\n // inputFormatter.numberFormatter,\n props.formatter({ dp: quote_dp, mode }),\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]}\n // className={color}\n classNames={{\n input: cn(\"oui-text-2xs\", color),\n prefix: \"oui-text-base-contrast-54 oui-text-2xs\",\n root: \"oui-outline-line-12 focus-within:oui-outline-primary-light\",\n }}\n onFocus={() => {\n setPlaceholder(\"\");\n props.setFocus(true);\n }}\n onBlur={() => {\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n props.setFocus(false);\n }}\n // value={props.value}\n suffix={\n <>\n {mode === PnLMode.PERCENTAGE && !!value && (\n <Text\n size={\"2xs\"}\n color=\"inherit\"\n className={cn(\"oui-ml-[2px]\", color)}\n >\n %\n </Text>\n )}\n <PNLMenus\n mode={mode}\n modes={modes}\n onModeChange={(item) => onModeChange(item.value as PnLMode)}\n />\n </>\n }\n />\n );\n};\n\nconst PNLMenus = (props: {\n mode?: string;\n modes: MenuItem[];\n onModeChange: (value: MenuItem) => void;\n}) => {\n return (\n <SimpleDropdownMenu\n currentValue={props.mode}\n menu={props.modes}\n align={\"end\"}\n size={\"xs\"}\n className={\"oui-min-w-[80px]\"}\n onSelect={(item) => props.onModeChange(item as MenuItem)}\n >\n <button className={\"oui-p-2\"}>\n <CaretDownIcon size={12} color={\"white\"} />\n </button>\n </SimpleDropdownMenu>\n );\n};\n","import { PNLInput } from \"./pnlInput.ui\";\nimport { BuilderProps, usePNLInputBuilder } from \"./useBuilder.script\";\n\nexport const PnlInputWidget = (\n props: BuilderProps & {\n testId?: string;\n quote: string;\n }\n) => {\n const { testId, quote, ...rest } = props;\n const state = usePNLInputBuilder(rest);\n return <PNLInput {...state} testId={testId} quote={quote} />;\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { Select, Text } from \"@orderly.network/ui\";\n\ntype Props = {\n type: OrderType;\n onChange: (type: OrderType) => void;\n disabled?: boolean;\n};\n\nexport const OrderPriceType = (props: Props) => {\n const { t } = useTranslation();\n const options = [\n { label: t(\"orderEntry.orderType.limitOrder\"), value: OrderType.LIMIT },\n { label: t(\"orderEntry.orderType.marketOrder\"), value: OrderType.MARKET },\n ];\n return (\n <Select.options\n value={props.type}\n options={options}\n disabled={props.disabled}\n onValueChange={props.onChange}\n size={\"xs\"}\n classNames={{\n trigger:\n \"oui-bg-transparent oui-w-auto oui-outline-line-1 oui-input-root oui-bg-base-6 oui-h-10 lg:oui-h-8 oui-outline-line-12 \",\n }}\n valueFormatter={(value, option) => {\n const displayLabel = {\n [OrderType.LIMIT]: t(\"orderEntry.orderType.limit\"),\n [OrderType.MARKET]: t(\"common.marketPrice\"),\n }[value];\n return <Text size={\"2xs\"}>{displayLabel}</Text>;\n }}\n />\n );\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Input, inputFormatter } from \"@orderly.network/ui\";\n\nexport const PriceInput: React.FC<{\n type: string;\n label?: string;\n value?: string | number;\n error?: string;\n onValueChange: (value: string) => void;\n quote_dp: number;\n disabled?: boolean;\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}> = (props) => {\n const [placeholder, setPlaceholder] = useState<string>(\"USDC\");\n const { t } = useTranslation();\n\n return (\n <Input.tooltip\n data-testid={`oui-testid-tpsl-popUp-${props.type.toLowerCase()}-input`}\n prefix={props.label ?? t(\"common.markPrice\")}\n size={{ initial: \"lg\", lg: \"md\" }}\n tooltip={props.error}\n placeholder={placeholder}\n disabled={props.disabled}\n align={\"right\"}\n autoComplete={\"off\"}\n value={props.value}\n color={props.error ? \"danger\" : undefined}\n classNames={{\n input: cn(\n \"oui-text-2xs placeholder:oui-text-2xs\",\n props.classNames?.input,\n ),\n prefix: cn(\n \"oui-text-base-contrast-54 oui-text-2xs\",\n props.classNames?.prefix,\n ),\n root: cn(\"oui-w-full\", props.classNames?.root),\n }}\n onValueChange={props.onValueChange}\n onFocus={() => {\n setPlaceholder(\"\");\n }}\n onBlur={() => {\n setPlaceholder(\"USDC\");\n }}\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(props.quote_dp),\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]}\n />\n );\n};\n","import { FC, Fragment, useEffect } from \"react\";\nimport { useMemoizedFn } from \"@orderly.network/hooks\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport { OrderType, PositionType } from \"@orderly.network/types\";\nimport { Flex, Text, Grid, Checkbox, cn } from \"@orderly.network/ui\";\nimport { PnlInputWidget } from \"../../pnlInput/pnlInput.widget\";\nimport { OrderPriceType } from \"../orderPriceType\";\nimport { PriceInput } from \"./priceInput\";\nimport { useTPSLInputRowScript } from \"./tpslInputRow.script\";\n\ntype TPSLInputRowProps = ReturnType<typeof useTPSLInputRowScript>;\n\nexport const TPSLInputRowUI: FC<TPSLInputRowProps> = (props) => {\n const { t } = useTranslation();\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n const { values, positionType } = props;\n\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"start\"}\n className=\"oui-w-full\"\n >\n {/* <Flex className=\"oui-w-full\" itemAlign={\"center\"} justify={\"start\"}>\n {!props.disableEnableCheckbox && (\n <Checkbox\n data-testid={`oui-testid-orderEntry-${props.type}-enable-checkBox`}\n id={`enable_${props.type}`}\n color={\"white\"}\n checked={values.enable}\n onCheckedChange={(checked: boolean) => {\n props.onChange(`${props.type}_enable`, !!checked);\n }}\n />\n )}\n <label\n htmlFor={`enable_${props.type}`}\n className={cn(\n \"oui-text-sm\",\n props.disableEnableCheckbox\n ? \"oui-ml-0 oui-text-base-contrast\"\n : \"oui-ml-1 oui-text-base-contrast-36\",\n )}\n >\n {props.type === \"tp\" ? t(\"tpsl.takeProfit\") : t(\"tpsl.stopLoss\")}\n </label>\n </Flex> */}\n <Text size=\"sm\" intensity={98}>\n {props.type === \"tp\" ? t(\"tpsl.takeProfit\") : t(\"tpsl.stopLoss\")}\n </Text>\n <Flex\n direction={\"column\"}\n gap={2}\n itemAlign={\"start\"}\n className={\"oui-w-full oui-pt-2\"}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-w-full oui-gap-0.5\"\n >\n <Text className=\"oui-text-2xs oui-text-base-contrast-54\">\n {t(\"common.triggerPrice\")}\n </Text>\n <Grid cols={2} gap={2} className=\"oui-w-full oui-px-0.5\">\n <PriceInput\n type={`${props.type} price`}\n value={values.trigger_price}\n error={getErrorMsg(`${props.type}_trigger_price`)}\n onValueChange={(value) => {\n props.onChange(`${props.type}_trigger_price`, value);\n }}\n quote_dp={props.quote_dp}\n classNames={{\n root: props.inputWarnNode\n ? \"oui-outline-warning-darken focus-within:oui-outline-warning-darken\"\n : undefined,\n }}\n />\n <PnlInputWidget\n type={props.type === \"tp\" ? \"TP\" : \"SL\"}\n onChange={(key, value) => {\n props.onChange(key, value as string);\n }}\n quote={\"USDC\"}\n quote_dp={2}\n values={values}\n />\n </Grid>\n </Flex>\n {props.inputWarnNode}\n <Flex\n direction={\"column\"}\n className={cn(\n \"oui-w-full oui-gap-0.5\",\n props.hideOrderPrice ? \"oui-hidden\" : \"\",\n )}\n itemAlign={\"start\"}\n >\n <Text className=\"oui-text-2xs oui-text-base-contrast-54\">\n {t(\"common.orderPrice\")}\n </Text>\n <Grid cols={2} gap={2} className=\"oui-w-full oui-px-0.5\">\n <PriceInput\n disabled={\n positionType === PositionType.FULL ||\n values.order_type === OrderType.MARKET\n }\n type={\"order price\"}\n label={\n values.order_type === OrderType.LIMIT\n ? t(\"common.limit\")\n : t(\"common.market\")\n }\n value={values.order_price}\n error={getErrorMsg(`${props.type}_order_price`)}\n onValueChange={(value) => {\n props.onChange(`${props.type}_order_price`, value);\n }}\n quote_dp={props.quote_dp}\n />\n <OrderPriceType\n disabled={\n positionType === PositionType.FULL ||\n props.disableOrderTypeSelector\n }\n type={values.order_type}\n onChange={(value) => {\n props.onChange(`${props.type}_order_type`, value as OrderType);\n }}\n />\n </Grid>\n </Flex>\n </Flex>\n <RenderROI\n price={\n values.order_type === OrderType.MARKET\n ? values.trigger_price\n : values.order_price\n }\n orderType={values.order_type}\n pnl={values.PnL}\n roi={props.roi}\n dp={props.quote_dp}\n className=\"oui-mt-1\"\n />\n </Flex>\n );\n};\n\nconst RenderROI: React.FC<{\n className?: string;\n price?: number | string;\n pnl?: number | string;\n roi?: number | null;\n dp: number;\n orderType: OrderType;\n}> = (props) => {\n const { t } = useTranslation();\n const { price, pnl, roi, dp, className, orderType } = props;\n if (!roi || !price || !pnl) {\n return null;\n }\n return (\n <Text className={cn(\"oui-text-2xs oui-text-base-contrast-36\", className)}>\n <Trans\n i18nKey=\"tpsl.advanced.ROI\"\n components={[\n <Fragment key=\"price\">\n <Text.numeral\n className=\"oui-px-1 oui-text-base-contrast\"\n dp={dp}\n suffix={<Text className=\"oui-pl-0.5\">USDC</Text>}\n >\n {price}\n </Text.numeral>\n </Fragment>,\n <Fragment key=\"orderType\">\n <Text className=\"oui-px-1 oui-text-base-contrast\">\n {orderType === OrderType.MARKET\n ? t(\"common.market\")\n : t(\"common.limit\")}\n </Text>\n </Fragment>,\n <Fragment key=\"pnl\">\n <Text.numeral\n coloring\n className=\"oui-whitespace-nowrap oui-px-1\"\n dp={2}\n suffix={<Text className=\"oui-pl-0.5\">USDC</Text>}\n >\n {pnl}\n </Text.numeral>\n </Fragment>,\n\n <Fragment key=\"roi\">\n <Text.numeral\n coloring\n className=\"oui-whitespace-nowrap oui-px-1\"\n dp={2}\n suffix=\"%\"\n >\n {roi}\n </Text.numeral>\n </Fragment>,\n ]}\n />\n </Text>\n );\n};\n","import { Props, useTPSLInputRowScript } from \"./tpslInputRow.script\";\nimport { TPSLInputRowUI } from \"./tpslInputRow.ui\";\n\nexport const TPSLInputRowWidget = (props: Props) => {\n const state = useTPSLInputRowScript(props);\n return <TPSLInputRowUI {...state} />;\n};\n","import { useState } from \"react\";\nimport { OrderlyOrder, PositionType } from \"@orderly.network/types\";\n\ntype OrderValueKeys = keyof OrderlyOrder;\nexport type PositionTypeProps = {\n disableSelector?: boolean;\n value: PositionType;\n onChange: (key: OrderValueKeys, value: any) => void;\n};\n\nexport const useTPSLPositionTypeScript = (props: PositionTypeProps) => {\n return {\n value: props.value,\n onChange: props.onChange,\n disableSelector: props.disableSelector,\n };\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { PositionType } from \"@orderly.network/types\";\nimport {\n ExclamationFillIcon,\n Flex,\n Select,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { useTPSLPositionTypeScript } from \"./tpslPositionType.script\";\n\ntype TPSLPositionTypeUIProps = ReturnType<typeof useTPSLPositionTypeScript>;\n\nconst positionTypeKey = \"position_type\";\nexport const TPSLPositionTypeUI = (props: TPSLPositionTypeUIProps) => {\n const { t } = useTranslation();\n const options = [\n {\n label: t(\"tpsl.partialPosition\"),\n value: PositionType.PARTIAL,\n },\n {\n label: t(\"tpsl.fullPosition\"),\n value: PositionType.FULL,\n },\n ];\n\n return (\n <Flex gap={1} itemAlign={\"center\"} justify={\"start\"}>\n <Tooltip\n className=\"oui-w-[280px] oui-p-3\"\n content={\n props.value === PositionType.FULL\n ? t(\"tpsl.positionType.full.tips\")\n : t(\"tpsl.positionType.partial.tips\")\n }\n >\n <ExclamationFillIcon\n className=\"oui-cursor-pointer oui-text-base-contrast-54\"\n size={12}\n />\n </Tooltip>\n {props.disableSelector ? (\n props.value === PositionType.FULL ? (\n <Text className=\"oui-text-2xs oui-font-normal oui-text-base-contrast-54\">\n {t(\"tpsl.positionType.full\")}\n </Text>\n ) : (\n <Text className=\"oui-text-2xs oui-font-normal oui-text-base-contrast-54\">\n {t(\"tpsl.positionType.partial\")}\n </Text>\n )\n ) : (\n <Select.options\n value={props.value}\n options={options}\n onValueChange={(event) => {\n props.onChange(positionTypeKey, event as PositionType);\n }}\n size={\"xs\"}\n classNames={{\n trigger:\n \" oui-bg-transparent oui-border-0 oui-w-auto oui-px-0 oui-font-normal\",\n }}\n contentProps={{\n className: \" oui-bg-base-8 oui-border-0\",\n }}\n />\n )}\n </Flex>\n );\n};\n","import {\n PositionTypeProps,\n useTPSLPositionTypeScript,\n} from \"./tpslPositionType.script\";\nimport { TPSLPositionTypeUI } from \"./tpslPositionType.ui\";\n\nexport const TPSLPositionTypeWidget = (props: PositionTypeProps) => {\n const state = useTPSLPositionTypeScript(props);\n return <TPSLPositionTypeUI {...state} />;\n};\n","import { memo, useEffect, useRef, useState } from \"react\";\nimport { utils } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Input, Slider, Text } from \"@orderly.network/ui\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { cn } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type TPSLQuantityProps = {\n maxQty: number;\n baseTick: number;\n base_dp: number;\n base: string;\n onQuantityChange?: (value: number | string) => void;\n quantity: number;\n isEditing?: boolean;\n errorMsg?: string;\n};\n\nexport const TPSLQuantity = memo<TPSLQuantityProps>((props) => {\n const { maxQty, base_dp, baseTick, quantity } = props;\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { t } = useTranslation();\n const [sliderValue, setSliderValue] = useState(0);\n\n // format quantity to base tick\n const formatQuantity = (value: string) => {\n let _qty = value;\n if (Number(value) > maxQty) {\n _qty = maxQty.toString();\n }\n if (baseTick > 0) {\n props.onQuantityChange?.(utils.formatNumber(_qty, baseTick) ?? value);\n }\n };\n\n const onSliderValueChange = (value: number) => {\n setSliderValue(value);\n // transform slider value to quantity\n const qty = new Decimal(value)\n .div(100)\n .mul(maxQty)\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n\n formatQuantity(qty);\n };\n\n useEffect(() => {\n const qty = Math.min(Number(quantity || 0), maxQty);\n // transform quantity to slider value\n const slider = new Decimal(qty)\n .div(maxQty)\n .mul(100)\n .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n .toNumber();\n\n setSliderValue(slider);\n }, [quantity, maxQty]);\n\n const errorMsg =\n props.quantity.toString().length > 0 ? props.errorMsg : undefined;\n\n return (\n <>\n <Flex gap={2}>\n <div className={\"oui-flex-1\"}>\n <Input.tooltip\n data-testid=\"oui-testid-tpsl-popUp-quantity-input\"\n ref={inputRef}\n prefix={t(\"common.quantity\")}\n size={{\n initial: \"md\",\n lg: \"sm\",\n }}\n align=\"right\"\n value={props.quantity}\n autoComplete=\"off\"\n classNames={{\n prefix: \"oui-text-base-contrast-54\",\n root: cn(\n \"oui-bg-base-5 oui-outline-line-12\",\n errorMsg && \"oui-outline-danger\",\n ),\n }}\n tooltipProps={{\n content: {\n className: \"oui-bg-base-6 oui-text-base-contrast-80\",\n },\n arrow: {\n className: \"oui-fill-base-6\",\n },\n }}\n tooltip={errorMsg}\n color={errorMsg ? \"danger\" : undefined}\n formatters={[\n inputFormatter.dpFormatter(props.base_dp),\n inputFormatter.numberFormatter,\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]}\n onValueChange={(value) => {\n props.onQuantityChange?.(value);\n // TODO: optimize this\n const qty = Number(value);\n if (qty && qty > props.maxQty) {\n const qty = props.maxQty;\n props.onQuantityChange?.(qty);\n inputRef.current?.blur();\n }\n }}\n onBlur={(e) => formatQuantity(e.target.value)}\n suffix={\n <span className=\"oui-px-3 oui-text-2xs oui-text-base-contrast-54\">\n {props.base}\n </span>\n }\n />\n </div>\n </Flex>\n <Flex mt={2} itemAlign={\"center\"} height={\"15px\"}>\n <Slider\n min={0}\n max={100}\n markCount={5}\n showTip\n value={[sliderValue]}\n color=\"primary\"\n onValueChange={(value) => {\n onSliderValueChange(value[0]);\n }}\n />\n </Flex>\n <Flex justify={\"between\"}>\n <Text.numeral color={\"primary\"} size={\"2xs\"} suffix=\"%\">\n {sliderValue}\n </Text.numeral>\n <Flex itemAlign={\"center\"} gap={1}>\n <button\n className={\"oui-leading-none\"}\n style={{ lineHeight: 0 }}\n onClick={() => {\n props.onQuantityChange?.(props.maxQty);\n }}\n >\n <Text color={\"primary\"} size={\"2xs\"}>\n {t(\"common.max\")}\n </Text>\n </button>\n\n <Text.numeral\n rule={\"price\"}\n size={\"2xs\"}\n intensity={54}\n tick={props.baseTick}\n >\n {props.maxQty}\n </Text.numeral>\n </Flex>\n </Flex>\n </>\n );\n});\n","import React, { useMemo } from \"react\";\nimport { ERROR_MSG_CODES } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n MarginMode,\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport {\n Box,\n Button,\n Flex,\n Grid,\n Text,\n cn,\n ThrottledButton,\n ScrollArea,\n useScreen,\n ExclamationFillIcon,\n DotStatus,\n} from \"@orderly.network/ui\";\nimport { CloseToLiqPriceIcon } from \"../components/closeLiqPriceIcon\";\nimport { OrderInfo } from \"../components/orderInfo\";\nimport { PnlInfo } from \"../components/pnlInfo\";\nimport { TPSLInputRowWidget } from \"../components/tpslInputRow\";\nimport { TPSLPositionTypeWidget } from \"../components/tpslPostionType\";\nimport { TPSLQuantity } from \"../components/tpslQty\";\nimport { TPSLBuilderState } from \"./useTPSL.script\";\n\nexport type TPSLProps = {\n close?: () => void;\n onCancel?: () => void;\n onComplete?: () => void;\n withTriggerPrice?: boolean;\n};\n\n//------------- TPSL form start ---------------\nexport const TPSL: React.FC<TPSLBuilderState & TPSLProps> = (props) => {\n const {\n TPSL_OrderEntity,\n symbolInfo,\n onCancel,\n onComplete,\n status,\n position,\n setValues,\n isEditing,\n } = props;\n\n const { errors, validated } = props.metaState;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n // Filter errors for TP and SL components separately\n const tpErrors = useMemo(() => {\n if (!errors) return null;\n const { sl_trigger_price, ...rest } = errors;\n return rest;\n }, [errors]);\n\n const slErrors = useMemo(() => {\n if (!errors) return null;\n const { tp_trigger_price, ...rest } = errors;\n return rest;\n }, [errors]);\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n const { getErrorMsg: getSlPriceErrorMsg } = useOrderEntryFormErrorMsg(\n props.slPriceError,\n );\n\n const isSlPriceWarning =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n\n if (!position) {\n return null;\n }\n\n const tpslEnable =\n TPSL_OrderEntity.tp_trigger_price || TPSL_OrderEntity.sl_trigger_price;\n\n const renderQtyInput = () => {\n if (TPSL_OrderEntity.position_type === PositionType.FULL) {\n return null;\n }\n\n return (\n <Box className=\"oui-px-0.5\">\n <TPSLQuantity\n maxQty={props.maxQty}\n quantity={(props.orderQuantity ?? props.maxQty) as number}\n baseTick={symbolInfo(\"base_tick\")}\n base_dp={symbolInfo(\"base_dp\")}\n onQuantityChange={props.setQuantity}\n base={symbolInfo(\"base\")}\n isEditing={props.isEditing}\n errorMsg={validated ? getErrorMsg(\"quantity\") : undefined}\n />\n </Box>\n );\n };\n\n return (\n <div id=\"orderly-tp_sl-order-edit-content\">\n <ScrollArea className={cn(isMobile && \"oui-h-[calc(100vh-200px)]\")}>\n <div className=\"oui-px-2\">\n <OrderInfo\n baseDP={symbolInfo(\"base_dp\")}\n quoteDP={symbolInfo(\"quote_dp\")}\n estLiqPrice={props.estLiqPrice}\n classNames={{\n root: \"oui-mb-3\",\n container: \"oui-gap-x-[30px]\",\n }}\n order={{\n symbol: position.symbol,\n order_quantity: position.position_qty.toString(),\n order_price: position.average_open_price.toString(),\n }}\n marginMode={position.margin_mode ?? MarginMode.CROSS}\n symbolLeverage={position.leverage}\n />\n <Flex\n direction=\"column\"\n justify=\"start\"\n itemAlign={\"start\"}\n gap={3}\n className=\"oui-mb-3 oui-w-full\"\n >\n {!isEditing && (\n <TPSLPositionTypeWidget\n disableSelector\n value={TPSL_OrderEntity.position_type ?? PositionType.PARTIAL}\n onChange={(key, value) => {\n props.setOrderValue(key as keyof OrderlyOrder, value);\n }}\n />\n )}\n {TPSL_OrderEntity.position_type === PositionType.FULL && (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={t(\"tpsl.positionType.full.tips.market\")}\n />\n )}\n </Flex>\n {renderQtyInput()}\n <Flex\n direction=\"column\"\n itemAlign={\"start\"}\n justify={\"start\"}\n gap={6}\n className=\"oui-mt-3 oui-w-full\"\n >\n <TPSLInputRowWidget\n symbol={position.symbol}\n rootOrderPrice={position.average_open_price.toString()}\n type=\"tp\"\n side={position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL}\n values={{\n // enable: TPSL_OrderEntity.tp_enable ?? false,\n trigger_price:\n TPSL_OrderEntity.tp_trigger_price?.toString() ?? undefined,\n PnL: TPSL_OrderEntity.tp_pnl?.toString() ?? undefined,\n Offset: TPSL_OrderEntity.tp_offset?.toString() ?? undefined,\n \"Offset%\":\n TPSL_OrderEntity.tp_offset_percentage?.toString() ??\n undefined,\n order_price:\n TPSL_OrderEntity.tp_order_price?.toString() ?? undefined,\n order_type: TPSL_OrderEntity.tp_order_type ?? OrderType.MARKET,\n }}\n hideOrderPrice={\n TPSL_OrderEntity.position_type === PositionType.FULL\n }\n errors={validated ? tpErrors : null}\n disableOrderTypeSelector={isEditing}\n quote_dp={symbolInfo(\"quote_dp\")}\n positionType={\n TPSL_OrderEntity.position_type ?? PositionType.PARTIAL\n }\n onChange={(key, value) => {\n props.setOrderValue(key as keyof OrderlyOrder, value);\n }}\n symbolLeverage={position.leverage}\n />\n\n <TPSLInputRowWidget\n inputWarnNode={\n isSlPriceWarning && (\n <DotStatus\n color=\"warning\"\n label={getSlPriceErrorMsg(\"sl_trigger_price\")}\n classNames={{\n root: \"oui-mt-1\",\n }}\n />\n )\n }\n symbol={position.symbol}\n rootOrderPrice={position.average_open_price.toString()}\n type=\"sl\"\n side={position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL}\n values={{\n // enable: TPSL_OrderEntity.sl_enable ?? false,\n trigger_price:\n TPSL_OrderEntity.sl_trigger_price?.toString() ?? undefined,\n PnL: TPSL_OrderEntity.sl_pnl?.toString() ?? undefined,\n Offset: TPSL_OrderEntity.sl_offset?.toString() ?? undefined,\n \"Offset%\":\n TPSL_OrderEntity.sl_offset_percentage?.toString() ??\n undefined,\n order_price:\n TPSL_OrderEntity.sl_order_price?.toString() ?? undefined,\n order_type: TPSL_OrderEntity.sl_order_type ?? OrderType.MARKET,\n }}\n hideOrderPrice={\n TPSL_OrderEntity.position_type === PositionType.FULL\n }\n errors={\n validated\n ? slErrors\n : isSlPriceError\n ? props.slPriceError\n : null\n }\n quote_dp={symbolInfo(\"quote_dp\")}\n positionType={\n TPSL_OrderEntity.position_type ?? PositionType.PARTIAL\n }\n disableOrderTypeSelector={isEditing}\n onChange={(key, value) => {\n props.setOrderValue(key as keyof OrderlyOrder, value);\n }}\n symbolLeverage={position.leverage}\n />\n </Flex>\n <PnlInfo\n tp_pnl={TPSL_OrderEntity.tp_pnl}\n sl_pnl={TPSL_OrderEntity.sl_pnl}\n className=\"oui-my-3\"\n />\n </div>\n </ScrollArea>\n <Grid px={2} cols={2} gap={3} mt={4}>\n <Button\n size={\"md\"}\n color={\"secondary\"}\n data-testid={\"tpsl-cancel\"}\n onClick={() => {\n props.close?.();\n onCancel?.();\n }}\n >\n {t(\"common.cancel\")}\n </Button>\n <ThrottledButton\n size={\"md\"}\n data-testid={\"tpsl-confirm\"}\n disabled={status.isCreateMutating || !tpslEnable}\n loading={status.isCreateMutating || status.isUpdateMutating}\n onClick={() => {\n props\n .onSubmit()\n .then(() => {\n props.close?.();\n onComplete?.();\n })\n .catch((err) => {\n console.log(\"--->>>cancel order\", err);\n });\n }}\n >\n {t(\"common.confirm\")}\n </ThrottledButton>\n </Grid>\n </div>\n );\n};\n","import {\n ComputedAlgoOrder,\n useLocalStorage,\n utils,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide, PositionType } from \"@orderly.network/types\";\nimport {\n Badge,\n Box,\n Checkbox,\n cn,\n Divider,\n Flex,\n Text,\n textVariants,\n} from \"@orderly.network/ui\";\nimport { transSymbolformString } from \"@orderly.network/utils\";\n\nexport type PositionTPSLConfirmProps = {\n symbol: string;\n qty: number;\n tpPrice?: number;\n slPrice?: number;\n maxQty: number;\n side: OrderSide;\n // symbolConfig:API.SymbolExt\n baseDP: number;\n quoteDP: number;\n isEditing?: boolean;\n isPositionTPSL?: boolean;\n orderInfo: ComputedAlgoOrder;\n};\n\nconst TPSLOrderType = (props: { tpPrice?: number; slPrice?: number }) => {\n const { tpPrice, slPrice } = props;\n const { t } = useTranslation();\n\n if (!!tpPrice && !!slPrice) {\n return (\n <Badge size=\"xs\" color=\"neutral\">\n {t(\"common.tpsl\")}\n </Badge>\n );\n }\n\n if (!!tpPrice) {\n return (\n <Badge size=\"xs\" color=\"neutral\">\n {t(\"tpsl.tp\")}\n </Badge>\n );\n }\n\n if (!!slPrice) {\n return (\n <Badge size=\"xs\" color=\"neutral\">\n {t(\"tpsl.sl\")}\n </Badge>\n );\n }\n\n return null;\n};\n\n// ------------ Position TP/SL Confirm dialog start------------\nexport const PositionTPSLConfirm = (props: PositionTPSLConfirmProps) => {\n const {\n symbol,\n tpPrice,\n slPrice,\n qty,\n maxQty,\n side,\n quoteDP,\n baseDP,\n isEditing,\n isPositionTPSL: _isPositionTPSL,\n orderInfo: order,\n } = props;\n const { t } = useTranslation();\n\n const [needConfirm, setNeedConfirm] = useLocalStorage(\n \"orderly_order_confirm\",\n true,\n );\n const renderPositionType = () => {\n if (order.position_type === PositionType.FULL) {\n return <Text>{t(\"tpsl.positionType.full\")}</Text>;\n }\n return <Text>{t(\"tpsl.positionType.partial\")}</Text>;\n };\n // console.log(\"PositionTPSLConfirm\", qty, maxQty, quoteDP);\n\n const renderTPSLPrice = ({\n price,\n isOrderPrice,\n isEnable,\n colorType,\n }: {\n price: string | number;\n isOrderPrice?: boolean;\n isEnable?: boolean;\n colorType: \"TP\" | \"SL\";\n }) => {\n if (!isEnable) {\n return <Text className=\"oui-text-base-contrast-36\">-- USDC</Text>;\n }\n if (!price) {\n if (isOrderPrice) {\n return (\n <Text className=\"oui-text-base-contrast-36\">\n {t(\"common.market\")}\n </Text>\n );\n }\n }\n return (\n <Text.numeral\n unit={\"USDC\"}\n rule={\"price\"}\n className={cn(\n \"oui-text-base-contrast\",\n colorType === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n dp={quoteDP}\n padding={false}\n >\n {price}\n </Text.numeral>\n );\n };\n\n const isPositionTPSL = _isPositionTPSL;\n\n return (\n <>\n {isEditing && (\n <Text as=\"div\" size=\"2xs\" intensity={80} className=\"oui-mb-3\">\n {t(\"tpsl.agreement\", { symbol: transSymbolformString(symbol) })}\n </Text>\n )}\n\n <Flex pb={4}>\n <Box grow>\n <Text.formatted\n rule={\"symbol\"}\n formatString=\"base-type\"\n size=\"base\"\n showIcon\n as=\"div\"\n intensity={80}\n >\n {symbol}\n </Text.formatted>\n </Box>\n <Flex gap={1}>\n {isPositionTPSL && (\n <Badge size=\"xs\" color={\"primary\"}>\n {t(\"common.position\")}\n </Badge>\n )}\n\n {/* <Badge size=\"xs\" color=\"neutral\">\n TP/SL\n </Badge> */}\n <TPSLOrderType tpPrice={tpPrice} slPrice={slPrice} />\n {side === OrderSide.SELL ? (\n <Badge size=\"xs\" color=\"success\">\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge size=\"xs\" color=\"danger\">\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n <Divider />\n {order.tp_trigger_price || order.sl_trigger_price ? (\n <>\n <Divider className=\"oui-my-4\" />\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className:\n \"oui-space-y-1 oui-w-full oui-flex oui-flex-col oui-gap-3\",\n })}\n >\n <Text className=\"oui-text-base-contrast\">\n {renderPositionType()}\n </Text>\n <Flex justify={\"between\"}>\n <Text>{t(\"common.orderQty\")}</Text>\n <Text.numeral\n rule={\"price\"}\n dp={baseDP}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {order.quantity ?? \"-\"}\n </Text.numeral>\n </Flex>\n\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpTriggerPrice\")}</Text>{\" \"}\n {renderTPSLPrice({\n price: order.tp_trigger_price ?? \"\",\n isOrderPrice: false,\n isEnable: !!order.tp_trigger_price,\n colorType: \"TP\",\n })}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpOrderPrice\")}</Text>\n {renderTPSLPrice({\n price: order.tp_order_price ?? \"\",\n isOrderPrice: true,\n isEnable: !!order.tp_trigger_price,\n colorType: \"TP\",\n })}\n </Flex>\n </Flex>\n\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slTriggerPrice\")}</Text>\n {renderTPSLPrice({\n price: order.sl_trigger_price ?? \"\",\n isOrderPrice: false,\n isEnable: !!order.sl_trigger_price,\n colorType: \"SL\",\n })}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slOrderPrice\")}</Text>\n {renderTPSLPrice({\n price: order.sl_order_price ?? \"\",\n isOrderPrice: true,\n isEnable: !!order.sl_trigger_price,\n colorType: \"SL\",\n })}\n </Flex>\n </Flex>\n </div>\n </>\n ) : null}\n <Box pt={2}>\n <Flex gap={1}>\n <Checkbox\n id=\"disabledConfirm\"\n color=\"white\"\n checked={!needConfirm}\n onCheckedChange={(check) => {\n setNeedConfirm(!check);\n }}\n />\n <label\n htmlFor=\"disabledConfirm\"\n className={textVariants({\n size: \"xs\",\n intensity: 54,\n className: \"oui-ml-1\",\n })}\n >\n {t(\"orderEntry.disableOrderConfirm\")}\n </label>\n </Flex>\n </Box>\n </>\n );\n};\n\n//------------- Position TP/SL Confirm dialog end------------\n","import { useEffect, useMemo, useRef } from \"react\";\nimport {\n type ComputedAlgoOrder,\n ERROR_MSG_CODES,\n useAccount,\n useEstLiqPriceBySymbol,\n useEventEmitter,\n useLocalStorage,\n useMarginModeBySymbol,\n useMemoizedFn,\n usePositionStream,\n useSymbolsInfo,\n useTPSLOrder,\n useTpslPriceChecker,\n utils,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AlgoOrderRootType,\n API,\n MarginMode,\n OrderType,\n PositionType,\n SDKError,\n} from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { PositionTPSLConfirm } from \"./positionTpslConfirm\";\n\ntype PropsWithTriggerPrice = {\n withTriggerPrice?: boolean;\n triggerPrice?: number;\n type?: \"tp\" | \"sl\";\n qty?: number;\n};\n\nexport type TPSLBuilderOptions = {\n symbol: string;\n position?: API.Position;\n order?: API.AlgoOrder;\n onTPSLTypeChange?: (type: AlgoOrderRootType) => void;\n isEditing?: boolean;\n positionType?: PositionType;\n /**\n * either show the confirm dialog or not,\n * if the Promise reject or return false, cancel the submit action\n */\n onConfirm?: (\n order: ComputedAlgoOrder,\n options: {\n position: API.Position;\n submit: (params?: { accountId?: string }) => Promise<any>;\n cancel: () => Promise<any>;\n },\n ) => Promise<boolean>;\n close?: () => void;\n};\n\nexport const useTPSLBuilder = (\n options: TPSLBuilderOptions & PropsWithTriggerPrice,\n) => {\n const {\n symbol,\n order,\n isEditing,\n positionType,\n triggerPrice,\n type,\n withTriggerPrice,\n } = options;\n const { t } = useTranslation();\n // const isEditing = !!order;\n if (isEditing && !order) {\n throw new SDKError(\"order is required when isEditing is true\");\n }\n // const symbol = isEditing ? order!.symbol : position.symbol;\n const symbolInfo = useSymbolsInfo();\n const { state } = useAccount();\n const ee = useEventEmitter();\n\n // const prevTPSLType = useRef<AlgoOrderRootType>(AlgoOrderRootType.TP_SL);\n\n const [needConfirm] = useLocalStorage(\"orderly_order_confirm\", true);\n const { marginMode: symbolMarginMode } = useMarginModeBySymbol(symbol);\n const [{ rows: positions }] = usePositionStream();\n const mainAccountPosition = positions.find(\n (item) =>\n item.symbol === symbol &&\n item.margin_mode === (options.position?.margin_mode ?? symbolMarginMode),\n );\n\n const isSubAccount =\n options.position?.account_id &&\n options.position?.account_id !== state.mainAccountId;\n\n const position = isSubAccount ? options.position : mainAccountPosition;\n\n const estLiqPrice = useEstLiqPriceBySymbol(\n symbol,\n position?.margin_mode ?? options.position?.margin_mode ?? MarginMode.CROSS,\n );\n\n useEffect(() => {\n if (!position) {\n options.close?.();\n }\n }, [position]);\n\n // console.log(\"----- position\", position);\n\n const [\n tpslOrder,\n {\n submit,\n deleteOrder,\n setValue,\n setValues,\n validate,\n metaState,\n errors,\n isCreateMutating,\n isUpdateMutating,\n },\n ] = useTPSLOrder(\n {\n symbol,\n position_qty: position?.position_qty ?? 0,\n average_open_price: position?.average_open_price ?? 0,\n // Prefer options.position?.margin_mode: mainAccountPosition (from stream) often has wrong default CROSS\n margin_mode: options.position?.margin_mode ?? position?.margin_mode,\n },\n {\n defaultOrder: order,\n positionType: triggerPrice ? PositionType.PARTIAL : positionType,\n // tpslEnable: {\n // tp_enable: !withTriggerPrice ? true : type === \"tp\",\n // sl_enable: !withTriggerPrice ? true : type === \"sl\",\n // },\n isEditing,\n },\n );\n\n const slPriceError = useTpslPriceChecker({\n slPrice: tpslOrder.sl_trigger_price?.toString() ?? undefined,\n liqPrice: estLiqPrice ?? null,\n side: tpslOrder.side,\n });\n\n const isSlPriceWarning =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const setQuantity = (value: number | string) => {\n setValue(\"quantity\", value);\n };\n\n const setOrderPrice = (\n name: \"tp_trigger_price\" | \"sl_trigger_price\",\n value: number | string,\n ) => {\n setValue(name, value);\n };\n\n const setPnL = (type: string, value: number | string) => {\n setValue(type, value);\n };\n\n const maxQty = useMemo(\n () => Math.abs(Number(position?.position_qty)),\n [position?.position_qty],\n );\n\n const dirty = useMemo(() => {\n const quantity =\n order?.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n ? maxQty\n : order?.quantity;\n\n let diff: number = 0;\n\n if (Number(tpslOrder.quantity) !== quantity) {\n diff = 1;\n } else if (!isEditing && !!tpslOrder.quantity) {\n diff = 1;\n }\n\n if (order && isEditing) {\n const { tp_trigger_price, sl_trigger_price } =\n utils.findTPSLFromOrder(order);\n const { tp_order_price, sl_order_price } =\n utils.findTPSLOrderPriceFromOrder(order);\n\n if (\n tp_trigger_price !== Number(tpslOrder.tp_trigger_price) &&\n typeof typeof tpslOrder.tp_trigger_price !== \"undefined\"\n ) {\n diff = 2;\n }\n\n if (\n sl_trigger_price !== Number(tpslOrder.sl_trigger_price) &&\n typeof tpslOrder.sl_trigger_price !== \"undefined\"\n ) {\n diff = 3;\n }\n if (\n typeof tpslOrder.tp_order_price !== \"undefined\" &&\n tp_order_price !== OrderType.MARKET &&\n tp_order_price !== Number(tpslOrder.tp_order_price)\n ) {\n diff = 4;\n }\n if (\n typeof tpslOrder.sl_order_price !== \"undefined\" &&\n sl_order_price !== OrderType.MARKET &&\n sl_order_price !== Number(tpslOrder.sl_order_price)\n ) {\n diff = 5;\n }\n }\n\n if (\n diff === 1 &&\n !tpslOrder.tp_trigger_price &&\n !tpslOrder.sl_trigger_price\n ) {\n diff = -1;\n }\n\n return diff;\n }, [\n tpslOrder.tp_trigger_price,\n tpslOrder.tp_order_price,\n tpslOrder.sl_trigger_price,\n tpslOrder.sl_order_price,\n tpslOrder.quantity,\n order,\n isEditing,\n ]);\n\n useEffect(() => {\n if (!withTriggerPrice) {\n return;\n }\n if (!triggerPrice) {\n return;\n }\n if (type === \"tp\") {\n setValue(\"tp_trigger_price\", triggerPrice);\n } else {\n setValue(\"sl_trigger_price\", triggerPrice);\n }\n if (options.qty) {\n setValue(\"quantity\", options.qty);\n }\n }, [type, triggerPrice, options.qty]);\n\n const cancel = (): Promise<void> => {\n if (order?.algo_order_id && order?.symbol) {\n return deleteOrder(order?.algo_order_id, order?.symbol);\n }\n return Promise.reject(\"order id or symbol is invalid\");\n };\n\n const onConfirm = (\n order: ComputedAlgoOrder,\n options: {\n position: API.Position;\n submit: (params?: { accountId?: string }) => Promise<any>;\n cancel: () => Promise<any>;\n },\n ) => {\n if (!needConfirm) {\n return Promise.resolve(true);\n }\n\n const maxQty = Math.abs(Number(position?.position_qty));\n if (\n `${order.tp_trigger_price ?? \"\"}`.length === 0 &&\n `${order.sl_trigger_price ?? \"\"}`.length === 0\n ) {\n return modal\n .confirm({\n title: t(\"orders.cancelOrder\"),\n content: t(\"tpsl.cancelOrder.description\"),\n onOk: () => {\n return options.cancel();\n },\n })\n .then(\n () => {\n ee.emit(\"tpsl:updateOrder\", options.position);\n return true;\n },\n () => {\n return Promise.reject(false);\n },\n );\n }\n\n return modal\n .confirm({\n title: t(\"tpsl.confirmOrder\"),\n // bodyClassName: \"lg:oui-py-0\",\n onOk: async () => {\n try {\n const res = await options.submit({\n accountId: position?.account_id,\n });\n\n if (res.success) {\n ee.emit(\"tpsl:updateOrder\", options.position);\n return res;\n }\n\n if (res.message) {\n toast.error(res.message);\n }\n\n return false;\n } catch (err: any) {\n if (err?.message) {\n toast.error(err.message);\n }\n return false;\n }\n },\n classNames: {\n body: \"!oui-pb-0\",\n },\n content: (\n <PositionTPSLConfirm\n isPositionTPSL={positionType === PositionType.FULL}\n isEditing={isEditing}\n symbol={order.symbol!}\n qty={Number(order.quantity)}\n maxQty={maxQty}\n tpPrice={Number(order.tp_trigger_price)}\n slPrice={Number(order.sl_trigger_price)}\n side={order.side!}\n orderInfo={order}\n quoteDP={symbolInfo[symbol](\"quote_dp\") ?? 2}\n baseDP={symbolInfo[symbol](\"base_dp\") ?? 2}\n />\n ),\n })\n .then(\n () => {\n return true;\n },\n () => {\n return Promise.reject(false);\n },\n );\n };\n\n const onSubmit = async () => {\n try {\n const validOrder = await validate(\n isSlPriceWarning ? undefined : (slPriceError as any),\n );\n if (validOrder) {\n if (!needConfirm) {\n return submit({ accountId: position?.account_id })\n .then(() => true)\n .catch((err) => {\n if (err?.message) {\n toast.error(err.message);\n }\n throw false;\n });\n }\n\n return onConfirm(tpslOrder, {\n position: position!,\n submit,\n cancel,\n });\n }\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n return {\n isEditing,\n symbolInfo: symbolInfo[symbol],\n maxQty,\n setQuantity: useMemoizedFn(setQuantity),\n orderQuantity: tpslOrder.quantity,\n // isPosition: isPositionTPSL,\n\n TPSL_OrderEntity: tpslOrder,\n setOrderValue: setValue,\n setPnL,\n setOrderPrice,\n // needConfirm,\n onSubmit,\n slPriceError,\n estLiqPrice,\n metaState,\n errors,\n status: {\n isCreateMutating,\n isUpdateMutating,\n },\n position,\n setValues,\n } as const;\n};\n\nexport type TPSLBuilderState = ReturnType<typeof useTPSLBuilder>;\n","import React from \"react\";\nimport { type AlgoOrderRootType } from \"@orderly.network/types\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { TPSL, TPSLProps } from \"./tpsl.ui\";\nimport { TPSLBuilderOptions, useTPSLBuilder } from \"./useTPSL.script\";\n\nexport type TPSLWidgetProps = {\n onTPSLTypeChange?: (type: AlgoOrderRootType) => void;\n} & TPSLBuilderOptions &\n TPSLProps;\n\nexport const TPSLWidget: React.FC<TPSLWidgetProps> = (props) => {\n const { onCancel, onComplete, ...rest } = props;\n const state = useTPSLBuilder(rest);\n return (\n <TPSL\n {...state}\n onCancel={onCancel}\n onComplete={onComplete}\n close={rest.close}\n />\n );\n};\n\nexport const TPSLSheetId = \"TPSLSheetId\";\nexport const TPSLDialogId = \"TPSLDialogId\";\n\nregisterSimpleSheet(TPSLSheetId, TPSLWidget);\n\nregisterSimpleDialog(TPSLDialogId, TPSLWidget, {\n classNames: {\n content: \"oui-w-[420px]\",\n },\n});\n","import { ReactNode } from \"react\";\nimport { AlgoOrderRootType, API, PositionType } from \"@orderly.network/types\";\nimport { Box, Button, modal } from \"@orderly.network/ui\";\nimport { ButtonProps } from \"@orderly.network/ui\";\nimport { TPSLDialogId } from \"./positionTPSL\";\n\nexport const PositionTPSLPopover = (props: {\n position: API.Position;\n order?: API.AlgoOrder;\n label?: string;\n baseDP?: number;\n quoteDP?: number;\n /**\n * Button props\n */\n buttonProps?: ButtonProps;\n isEditing?: boolean;\n children?: ReactNode;\n}) => {\n const { position, order, baseDP, quoteDP, buttonProps, isEditing } = props;\n\n const isPositionTPSL = isEditing\n ? order?.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n : undefined;\n\n const onEdit = () => {\n modal.show(TPSLDialogId, {\n order: order,\n symbol: position.symbol,\n baseDP: baseDP,\n quoteDP: quoteDP,\n positionType: isPositionTPSL ? PositionType.FULL : PositionType.PARTIAL,\n isEditing: isEditing,\n position,\n });\n };\n\n return (\n <Box onClick={onEdit} className=\"oui-cursor-pointer\">\n {props.children || (\n <Button\n variant=\"outlined\"\n size=\"sm\"\n color=\"secondary\"\n {...buttonProps}\n // onClick={() => {\n // setOpen(true);\n // }}\n >\n {props.label}\n </Button>\n )}\n </Box>\n );\n};\n","import { AlgoOrderRootType, API, PositionType } from \"@orderly.network/types\";\nimport { useModal } from \"@orderly.network/ui\";\nimport { TPSLWidget, TPSLWidgetProps } from \"./positionTPSL\";\n\ntype TPSLSheetProps = {\n order?: API.AlgoOrder;\n symbolInfo: API.SymbolExt;\n isEditing?: boolean;\n};\n\nexport const PositionTPSLSheet = (props: TPSLWidgetProps & TPSLSheetProps) => {\n const { order, isEditing } = props;\n const { hide } = useModal();\n\n const isPositionTPSL = isEditing\n ? order?.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n : undefined;\n\n return (\n <TPSLWidget\n {...props}\n positionType={\n props.positionType ??\n (isPositionTPSL ? PositionType.FULL : PositionType.PARTIAL)\n }\n onCancel={hide}\n />\n );\n};\n","import { useEffect, useState, SVGProps } from \"react\";\nimport { ERROR_MSG_CODES, useGetEstLiqPrice } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport {\n Button,\n cn,\n Divider,\n DotStatus,\n Flex,\n ScrollArea,\n Text,\n} from \"@orderly.network/ui\";\nimport { CloseToLiqPriceIcon } from \"../components/closeLiqPriceIcon\";\nimport { OrderInfo } from \"../components/orderInfo\";\nimport { PnlInfo } from \"../components/pnlInfo\";\nimport { TPSLInputRowWidget } from \"../components/tpslInputRow\";\nimport { TPSLPositionTypeWidget } from \"../components/tpslPostionType\";\nimport { useTPSLAdvanced } from \"./useTPSLAdvanced.script\";\n\ntype Props = ReturnType<typeof useTPSLAdvanced>;\n\nexport const TPSLAdvancedUI = (props: Props) => {\n const { t } = useTranslation();\n const { errors, validated } = props.metaState;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.slPriceError);\n const isSlPriceWarning =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n\n const displayEstLiqPrice = useGetEstLiqPrice({\n estLiqPrice: props.estLiqPrice,\n symbol: props.symbolInfo.symbol,\n side: props.formattedOrder.side as OrderSide,\n });\n\n const {\n formattedOrder,\n setValue: setOrderValue,\n symbolInfo,\n setValues,\n } = props;\n const [tpValues, setTpValuse] = useState<{\n enable: boolean;\n trigger_price: string;\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n order_price: string;\n order_type: OrderType;\n }>({\n enable: false,\n order_type: formattedOrder.tp_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.tp_order_price ?? \"\",\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n });\n\n const [slValues, setSlValues] = useState<{\n enable: boolean;\n trigger_price: string;\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n order_price: string;\n order_type: OrderType;\n }>({\n enable: false,\n order_type: formattedOrder.sl_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.sl_order_price ?? \"\",\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n });\n\n // Update tpValues when formattedOrder changes\n useEffect(() => {\n setTpValuse((prev) => ({\n ...prev,\n // enable: formattedOrder.tp_enable ?? false,\n order_type: formattedOrder.tp_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.tp_order_price ?? \"\",\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n }));\n }, [formattedOrder]);\n\n useEffect(() => {\n setSlValues((prev) => ({\n ...prev,\n // enable: formattedOrder.sl_enable ?? false,\n order_type: formattedOrder.sl_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.sl_order_price ?? \"\",\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n }));\n }, [formattedOrder]);\n\n const tpslEnable =\n formattedOrder.tp_trigger_price || formattedOrder.sl_trigger_price;\n\n return (\n <div className=\"oui-flex oui-h-full oui-flex-col oui-justify-between oui-rounded-[16px] oui-py-3\">\n <div className=\"oui-px-3\">\n <Flex\n className=\"oui-mb-5 oui-cursor-pointer oui-text-base oui-text-base-contrast-80\"\n gap={1}\n itemAlign={\"center\"}\n onClick={props.onClose}\n >\n <ArrowRightIcon className=\" oui-text-base-contrast-80\" />\n <Text>{t(\"common.tpsl\")}</Text>\n </Flex>\n </div>\n <ScrollArea className=\"oui-flex-1\">\n <div className=\"oui-px-3\">\n <OrderInfo\n order={formattedOrder as OrderlyOrder}\n baseDP={symbolInfo.base_dp}\n quoteDP={symbolInfo.quote_dp}\n estLiqPrice={displayEstLiqPrice ?? undefined}\n symbolLeverage={props.symbolLeverage}\n />\n </div>\n <Divider className=\"oui-my-3\" />\n <div className=\"oui-px-3\">\n <Flex className=\"oui-gap-[6px]\">\n <Button\n onClick={() => {\n setOrderValue(\"side\", OrderSide.BUY);\n }}\n size={\"sm\"}\n fullWidth\n data-type={OrderSide.BUY}\n // color={side === OrderSide.BUY ? \"buy\" : \"secondary\"}\n className={cn(\n formattedOrder.side === OrderSide.BUY\n ? \"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\"\n : \"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6\",\n )}\n data-testid=\"oui-testid-orderEntry-side-buy-button\"\n >\n {t(\"common.buy\")}\n </Button>\n <Button\n onClick={() => {\n setOrderValue(\"side\", OrderSide.SELL);\n }}\n data-type={OrderSide.SELL}\n fullWidth\n size={\"sm\"}\n // color={side === OrderSide.SELL ? \"sell\" : \"secondary\"}\n className={cn(\n formattedOrder.side === OrderSide.SELL\n ? \"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\"\n : \"oui-bg-base-7 oui-text-base-contrast-36 hover:oui-bg-base-6 active:oui-bg-base-6\",\n )}\n data-testid=\"oui-testid-orderEntry-side-sell-button\"\n >\n {t(\"common.sell\")}\n </Button>\n </Flex>\n <div className=\"oui-py-3\">\n <TPSLPositionTypeWidget\n value={formattedOrder.position_type ?? PositionType.PARTIAL}\n onChange={(key, value) => {\n // setOrderValue(\"position_type\", value);\n if (value === PositionType.FULL) {\n setValues({\n position_type: PositionType.FULL,\n tp_order_type: OrderType.MARKET,\n tp_order_price: undefined,\n sl_order_type: OrderType.MARKET,\n sl_order_price: undefined,\n });\n // setOrderValue(\"tp_order_type\", OrderType.MARKET);\n // setOrderValue(\"sl_order_type\", OrderType.MARKET);\n return;\n }\n setOrderValue(\"position_type\", value);\n }}\n />\n {formattedOrder.position_type === PositionType.FULL && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-mt-3 oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-warning-darken\" />\n <Text className=\"oui-text-2xs oui-text-warning-darken\">\n {t(\"tpsl.positionType.full.tips.market\")}\n </Text>\n </Flex>\n )}\n </div>\n <Flex direction={\"column\"} gap={6}>\n <TPSLInputRowWidget\n rootOrderPrice={formattedOrder.order_price}\n symbol={symbolInfo.symbol}\n type=\"tp\"\n side={formattedOrder.side as OrderSide}\n values={tpValues}\n errors={validated ? errors : null}\n quote_dp={symbolInfo.quote_dp}\n hideOrderPrice={\n formattedOrder.position_type === PositionType.FULL\n }\n onChange={(key, value) => {\n // setTpValuse((prev) => ({ ...prev, [key]: value }));\n setOrderValue(key as keyof OrderlyOrder, value);\n }}\n positionType={\n formattedOrder.position_type ?? PositionType.PARTIAL\n }\n symbolLeverage={props.symbolLeverage}\n />\n <TPSLInputRowWidget\n rootOrderPrice={formattedOrder.order_price}\n symbol={symbolInfo.symbol}\n type=\"sl\"\n side={formattedOrder.side as OrderSide}\n values={slValues}\n hideOrderPrice={\n formattedOrder.position_type === PositionType.FULL\n }\n errors={\n validated ? errors : isSlPriceError ? props.slPriceError : null\n }\n inputWarnNode={\n isSlPriceWarning && (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={getErrorMsg(\"sl_trigger_price\")}\n />\n )\n }\n quote_dp={symbolInfo.quote_dp}\n positionType={\n formattedOrder.position_type ?? PositionType.PARTIAL\n }\n onChange={(key, value) => {\n setOrderValue(key as keyof OrderlyOrder, value);\n }}\n symbolLeverage={props.symbolLeverage}\n />\n </Flex>\n\n <PnlInfo\n tp_pnl={formattedOrder.tp_pnl}\n sl_pnl={formattedOrder.sl_pnl}\n className=\"oui-mt-6\"\n />\n </div>\n </ScrollArea>\n <Flex className=\"oui-mt-6 oui-px-3\" gap={2}>\n <Button\n size=\"md\"\n fullWidth\n color=\"gray\"\n variant=\"outlined\"\n className=\"oui-text-base-contrast-36\"\n onClick={props.onClose}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n size=\"md\"\n fullWidth\n color=\"success\"\n className={cn(\n formattedOrder.side === OrderSide.SELL\n ? \"oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\"\n : \"oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\",\n )}\n onClick={props.onSubmit}\n disabled={!tpslEnable}\n >\n {t(\"tpsl.advanced.submit\")}\n </Button>\n </Flex>\n </div>\n );\n};\n\nexport const ArrowRightIcon = (props: SVGProps<SVGSVGElement>) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.03752 2.9294C7.89169 2.95857 7.74527 3.03207 7.65661 3.16624L5.33145 6.66624C5.20137 6.86224 5.20137 7.12648 5.33145 7.32248L7.65661 10.8225C7.83452 11.0902 8.20669 11.1655 8.47385 10.9864C8.74044 10.8079 8.8151 10.434 8.63719 10.1662L6.53019 6.99408L8.63719 3.82249C8.8151 3.55416 8.74044 3.18082 8.47385 3.00232C8.34027 2.91249 8.18335 2.89965 8.03752 2.9294Z\" />\n </svg>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationResult,\n useOrderEntry,\n useTpslPriceChecker,\n} from \"@orderly.network/hooks\";\nimport { OrderlyOrder, OrderType, PositionType } from \"@orderly.network/types\";\n\ntype Props = {\n order: OrderlyOrder;\n setOrderValue: (key: string, value: any) => void;\n onSubmit: (formattedOrder: OrderlyOrder) => void;\n onClose: () => void;\n symbolLeverage?: number;\n};\n\nconst isTPSLEnable = (order: OrderlyOrder, type: \"tp\" | \"sl\") => {\n if (order.tp_trigger_price || order.sl_trigger_price) {\n if (type === \"tp\") {\n return !!order.tp_trigger_price;\n }\n if (type === \"sl\") {\n return !!order.sl_trigger_price;\n }\n }\n // no edit, disabled tp /sl\n return false;\n};\n\nexport const useTPSLAdvanced = (props: Props) => {\n const { order, setOrderValue, onClose } = props;\n const [innerMetaState, setInnerMetaState] =\n useState<OrderValidationResult | null>(null);\n const {\n formattedOrder,\n setValue,\n setValues,\n helper,\n symbolInfo,\n metaState,\n ...state\n } = useOrderEntry(order.symbol, {\n initialOrder: {\n symbol: order.symbol,\n order_type: order.order_type,\n side: order.side,\n order_price: order.order_price,\n order_quantity: order.order_quantity,\n position_type: order.position_type ?? PositionType.PARTIAL,\n trigger_price: order.trigger_price,\n // tp_enable: isTPSLEnable(order, \"tp\"),\n // sl_enable: isTPSLEnable(order, \"sl\"),\n tp_trigger_price: order.tp_trigger_price,\n sl_trigger_price: order.sl_trigger_price,\n tp_order_price: order.tp_order_price,\n sl_order_price: order.sl_order_price,\n tp_order_type: order.tp_order_type,\n sl_order_type: order.sl_order_type,\n sl_pnl: order.sl_pnl,\n sl_offset: order.sl_offset,\n sl_offset_percentage: order.sl_offset_percentage,\n tp_pnl: order.tp_pnl,\n tp_offset: order.tp_offset,\n tp_offset_percentage: order.tp_offset_percentage,\n margin_mode: order.margin_mode,\n },\n });\n\n const slPriceError = useTpslPriceChecker({\n slPrice: formattedOrder.sl_trigger_price,\n liqPrice: state.estLiqPrice,\n side: formattedOrder.side,\n });\n\n const onSubmit = () => {\n const isSlPriceError =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_ERROR;\n helper\n .validate(isSlPriceError ? slPriceError : undefined)\n .then(() => {\n props.onSubmit(formattedOrder as OrderlyOrder);\n })\n .catch((err) => {\n console.log(\"metaState\", metaState);\n console.log(\"err\", err);\n });\n };\n\n return {\n order,\n formattedOrder,\n symbolInfo,\n slPriceError,\n estLiqPrice: state.estLiqPrice,\n estLiqPriceDistance: state.estLiqPriceDistance,\n setValue,\n setValues,\n onSubmit,\n onClose,\n metaState,\n symbolLeverage: props.symbolLeverage,\n };\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport { OrderlyOrder } from \"@orderly.network/types\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { TPSLAdvancedUI } from \"./tpslAdvanced.ui\";\nimport { useTPSLAdvanced } from \"./useTPSLAdvanced.script\";\n\ntype Props = {\n order: OrderlyOrder;\n setOrderValue: (key: string, value: any) => void;\n onSubmit: (formattedOrder: OrderlyOrder) => void;\n onClose: () => void;\n symbolLeverage?: number;\n};\n\nexport const TPSLAdvancedWidget = (props: Props) => {\n const state = useTPSLAdvanced({\n order: props.order,\n setOrderValue: props.setOrderValue,\n onSubmit: props.onSubmit,\n onClose: props.onClose,\n symbolLeverage: props.symbolLeverage,\n });\n return <TPSLAdvancedUI {...state} />;\n};\n\nexport const TPSLAdvancedSheetId = \"TPSLAdvancedSheetId\";\nexport const TPSLAdvancedDialogId = \"TPSLAdvancedDialogId\";\n\nregisterSimpleSheet(TPSLAdvancedSheetId, TPSLAdvancedWidget, {\n title: () => i18n.t(\"common.settings\"),\n});\n\nregisterSimpleDialog(TPSLAdvancedDialogId, TPSLAdvancedWidget, {\n title: () => i18n.t(\"common.settings\"),\n});\n","import { useEffect, useState } from \"react\";\nimport {\n findPositionTPSLFromOrders,\n useAccount,\n useEventEmitter,\n useOrderStream,\n useSubAccountAlgoOrderStream,\n useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport {\n AlgoOrderRootType,\n API,\n OrderStatus,\n PositionType,\n} from \"@orderly.network/types\";\nimport { modal, useScreen } from \"@orderly.network/ui\";\nimport { TPSLDialogId, TPSLSheetId } from \"../positionTPSL/tpsl.widget\";\nimport { TPSLDetailProps } from \"./tpslDetail.widget\";\n\nexport const useTPSLDetail = (props: TPSLDetailProps) => {\n const { position } = props;\n\n const symbol = position.symbol;\n const marginMode = position.margin_mode;\n const symbolInfo = useSymbolsInfo()[symbol];\n\n const ee = useEventEmitter();\n\n const { state } = useAccount();\n\n const { isMobile } = useScreen();\n const [fullPositionOrders, setFullPositionOrders] = useState<API.AlgoOrder[]>(\n [],\n );\n const [partialPositionOrders, setPartialPositionOrders] = useState<\n API.AlgoOrder[]\n >([]);\n\n const isSubAccount =\n position.account_id && position.account_id !== state.mainAccountId;\n\n const [\n mainAccountTpslOrders,\n { cancelAlgoOrder, cancelPostionOrdersByTypes },\n ] = useOrderStream(\n {\n symbol: position.symbol,\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n size: 500,\n },\n {\n keeplive: true,\n },\n );\n\n const [\n subAccountTpslOrders,\n {\n cancelAlgoOrder: cancelSubAccountAlgoOrder,\n cancelPostionOrdersByTypes: cancelSubAccountPostionOrdersByTypes,\n refresh: refreshSubAccountTpslOrders,\n },\n ] = useSubAccountAlgoOrderStream(\n {\n symbol: position.symbol,\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n size: 100,\n },\n {\n accountId: position.account_id!,\n },\n );\n\n const tpslOrders = isSubAccount\n ? subAccountTpslOrders\n : mainAccountTpslOrders;\n\n const onCancelOrder = async (order: API.AlgoOrder) => {\n if (isSubAccount) {\n const res = await cancelSubAccountAlgoOrder(\n order.algo_order_id,\n order.symbol,\n );\n refreshSubAccountTpslOrders();\n ee.emit(\"tpsl:updateOrder\", position);\n return res;\n }\n return await cancelAlgoOrder(order.algo_order_id, order.symbol);\n };\n\n const onCancelAllTPSLOrders = async () => {\n if (isSubAccount) {\n const res = await cancelSubAccountPostionOrdersByTypes(symbol, [\n AlgoOrderRootType.TP_SL,\n ]);\n refreshSubAccountTpslOrders();\n ee.emit(\"tpsl:updateOrder\", position);\n return res;\n }\n return await cancelPostionOrdersByTypes(symbol, [AlgoOrderRootType.TP_SL]);\n };\n\n const showTPSLDialog = ({\n order,\n positionType,\n isEditing,\n }: {\n order?: API.AlgoOrder;\n positionType: PositionType;\n isEditing: boolean;\n }) => {\n const dialogId = isMobile ? TPSLSheetId : TPSLDialogId;\n modal.show(dialogId, {\n order: order,\n symbol: position.symbol,\n position,\n positionType,\n isEditing,\n });\n };\n\n const editTPSLOrder = (order: API.AlgoOrder, positionType: PositionType) => {\n showTPSLDialog({ order, positionType, isEditing: true });\n };\n\n const addTPSLOrder = (positionType: PositionType) => {\n showTPSLDialog({ positionType, isEditing: false });\n };\n\n useEffect(() => {\n if (tpslOrders) {\n const { fullPositionOrder, partialPositionOrders } =\n findPositionTPSLFromOrders(tpslOrders, symbol, marginMode);\n\n setFullPositionOrders(fullPositionOrder ? [fullPositionOrder] : []);\n setPartialPositionOrders(partialPositionOrders ?? []);\n }\n }, [tpslOrders, symbol, marginMode]);\n\n return {\n symbolInfo,\n position,\n symbol,\n fullPositionOrders,\n partialPositionOrders,\n cancelPostionOrdersByTypes,\n onCancelOrder,\n onCancelAllTPSLOrders,\n editTPSLOrder,\n addTPSLOrder,\n };\n};\n\nexport type TPSLDetailState = ReturnType<typeof useTPSLDetail>;\n","import { createContext, PropsWithChildren, useContext } from \"react\";\nimport { useEstLiqPriceBySymbol, useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { API, MarginMode, OrderSide } from \"@orderly.network/types\";\n\nexport interface TPSLDetailContextState {\n base_dp: number;\n quote_dp: number;\n position: API.Position;\n side: OrderSide;\n estLiqPrice: number | undefined;\n}\n\nexport const TPSLDetailContext = createContext({} as TPSLDetailContextState);\n\ninterface TPSLDetailProviderProps {\n symbol: string;\n position: API.Position;\n}\n\nexport const TPSLDetailProvider = (\n props: PropsWithChildren<TPSLDetailProviderProps>,\n) => {\n const symbolInfo = useSymbolsInfo()[props.symbol];\n const estLiqPrice = useEstLiqPriceBySymbol(\n props.symbol,\n props.position.margin_mode ?? MarginMode.CROSS,\n );\n\n return (\n <TPSLDetailContext.Provider\n value={{\n base_dp: symbolInfo(\"base_dp\"),\n quote_dp: symbolInfo(\"quote_dp\"),\n side: props.position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL,\n position: props.position,\n estLiqPrice: estLiqPrice,\n }}\n >\n {props.children}\n </TPSLDetailContext.Provider>\n );\n};\n\nexport const useTPSLDetailContext = () => {\n return useContext(TPSLDetailContext);\n};\n","import { cn, Flex } from \"@orderly.network/ui\";\n\nexport const FlexCell = (props: {\n children: React.ReactNode;\n className?: string;\n}) => {\n return (\n <Flex\n direction={\"column\"}\n justify={\"center\"}\n itemAlign={\"start\"}\n className={cn(\"oui-text-2xs oui-h-[36px]\", props.className)}\n >\n {props.children}\n </Flex>\n );\n};\n","import { findTPSLFromOrder } from \"@orderly.network/hooks\";\nimport { positions as perpPositions } from \"@orderly.network/perp\";\nimport { API, OrderSide } from \"@orderly.network/types\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal, formatNum, getTPSLDirection } from \"@orderly.network/utils\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const EstPnlRender = ({ order }: { order: API.AlgoOrder }) => {\n const { position, base_dp, quote_dp } = useTPSLDetailContext();\n const { tp_trigger_price, sl_trigger_price } = findTPSLFromOrder(order);\n\n let tp_unrealPnl = undefined;\n let sl_unrealPnl = undefined;\n const qty = new Decimal(order.quantity).eq(0)\n ? position.position_qty\n : order.quantity;\n\n const side = position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL;\n const openPrice = position?.average_open_price;\n\n if (tp_trigger_price) {\n const direction = getTPSLDirection({\n side,\n type: \"tp\",\n closePrice: tp_trigger_price,\n orderPrice: openPrice,\n });\n tp_unrealPnl = formatNum\n .pnl(\n perpPositions.unrealizedPnL({\n qty,\n openPrice,\n // markPrice: unRealizedPrice,\n markPrice: tp_trigger_price,\n }),\n )\n ?.abs()\n .mul(direction)\n .toNumber();\n }\n\n if (sl_trigger_price) {\n const direction = getTPSLDirection({\n side,\n type: \"sl\",\n closePrice: sl_trigger_price,\n orderPrice: openPrice,\n });\n sl_unrealPnl = formatNum\n .pnl(\n perpPositions.unrealizedPnL({\n qty: qty,\n openPrice,\n // markPrice: unRealizedPrice,\n markPrice: sl_trigger_price,\n }),\n )\n ?.abs()\n .mul(direction)\n .toNumber();\n }\n return (\n <Flex\n gap={2}\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs\"\n >\n {tp_unrealPnl && (\n <FlexCell>\n <Text.numeral dp={2} rm={Decimal.ROUND_DOWN} coloring padding={false}>\n {tp_unrealPnl}\n </Text.numeral>\n </FlexCell>\n )}\n {sl_unrealPnl && (\n <FlexCell>\n <Text.numeral dp={2} rm={Decimal.ROUND_DOWN} coloring padding={false}>\n {sl_unrealPnl}\n </Text.numeral>\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { findTPSLOrderPriceFromOrder } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, OrderType } from \"@orderly.network/types\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const OrderPriceRender = ({ order }: { order: API.AlgoOrder }) => {\n const { quote_dp } = useTPSLDetailContext();\n const { tp_order_price, sl_order_price } = findTPSLOrderPriceFromOrder(order);\n const { t } = useTranslation();\n return (\n <Flex\n gap={2}\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs\"\n >\n {tp_order_price && (\n <FlexCell>\n {tp_order_price === OrderType.MARKET ? (\n <Text>{t(\"common.market\")}</Text>\n ) : (\n <Text.numeral dp={quote_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {tp_order_price}\n </Text.numeral>\n )}\n </FlexCell>\n )}\n {sl_order_price && (\n <FlexCell>\n {sl_order_price === OrderType.MARKET ? (\n <Text>{t(\"common.market\")}</Text>\n ) : (\n <Text.numeral dp={quote_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {sl_order_price}\n </Text.numeral>\n )}\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { findTPSLFromOrder } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const QtyRender = ({ order }: { order: API.AlgoOrder }) => {\n const { position, base_dp } = useTPSLDetailContext();\n const { tp_trigger_price, sl_trigger_price } = findTPSLFromOrder(order);\n\n const quantity = useMemo(() => {\n if (order.quantity === 0) {\n return -position.position_qty;\n }\n\n return position.position_qty > 0 ? -order.quantity : order.quantity;\n }, [order.quantity, position.position_qty]);\n\n return (\n <Flex\n direction={\"column\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n className=\"oui-h-full oui-text-2xs\"\n >\n <FlexCell>\n <Text.numeral dp={base_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {quantity}\n </Text.numeral>\n </FlexCell>\n {tp_trigger_price && sl_trigger_price && (\n <FlexCell>\n <div />\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { findTPSLFromOrder } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const TriggerPrice = ({ order }: { order: API.AlgoOrder }) => {\n const { quote_dp } = useTPSLDetailContext();\n const { tp_trigger_price, sl_trigger_price } = findTPSLFromOrder(order);\n const { t } = useTranslation();\n return (\n <Flex\n gap={1}\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs\"\n >\n {tp_trigger_price && (\n <FlexCell>\n <Flex direction={\"column\"} justify={\"start\"} itemAlign={\"start\"}>\n <Text className=\"oui-text-base-contrast-36\">\n {t(\"common.market\")}\n </Text>\n <Text.numeral dp={quote_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {tp_trigger_price}\n </Text.numeral>\n </Flex>\n </FlexCell>\n )}\n {sl_trigger_price && (\n <FlexCell>\n <Flex direction={\"column\"} justify={\"start\"} itemAlign={\"start\"}>\n <Text className=\"oui-text-base-contrast-36\">\n {t(\"common.market\")}\n </Text>\n <Text.numeral dp={quote_dp} rm={Decimal.ROUND_DOWN} padding={false}>\n {sl_trigger_price}\n </Text.numeral>\n </Flex>\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { ERROR_MSG_CODES, OrderValidationResult } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n cn,\n ExclamationFillIcon,\n modal,\n Tooltip,\n useScreen,\n} from \"@orderly.network/ui\";\n\nconst CloseToLiqPriceIcon = ({\n slPriceError,\n className,\n}: {\n slPriceError: OrderValidationResult | null;\n className?: string;\n}) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const { getErrorMsg } = useOrderEntryFormErrorMsg(slPriceError);\n const isSlPriceWarning =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const icon = (\n <ExclamationFillIcon\n onMouseEnter={(e) => e.stopPropagation()}\n onMouseLeave={(e) => e.stopPropagation()}\n onPointerEnter={(e) => e.stopPropagation()}\n onPointerLeave={(e) => e.stopPropagation()}\n size={14}\n className={cn(\n \"oui-text-warning-darken hover:oui-cursor-pointer\",\n className,\n )}\n />\n );\n if (!isSlPriceWarning || !slPriceError) return null;\n\n if (isMobile) {\n return (\n <button\n onClick={(e) => {\n modal.alert({\n title: t(\"common.tips\"),\n message: getErrorMsg(\"sl_trigger_price\"),\n });\n }}\n className=\"oui-px-1\"\n >\n {icon}\n </button>\n );\n }\n\n return (\n <Tooltip\n content={getErrorMsg(\"sl_trigger_price\")}\n className=\"oui-max-w-[240px] oui-text-base-contrast-80\"\n >\n {icon}\n </Tooltip>\n );\n};\nCloseToLiqPriceIcon.displayName = \"CloseToLiqPriceIcon\";\n\nexport { CloseToLiqPriceIcon };\n","import {\n ERROR_MSG_CODES,\n findTPSLFromOrder,\n useTpslPriceChecker,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { ExclamationFillIcon, Flex, Text } from \"@orderly.network/ui\";\nimport { CloseToLiqPriceIcon } from \"../../components/closeLiqPriceIcon\";\nimport { FlexCell } from \"../components/common\";\nimport { useTPSLDetailContext } from \"../tpslDetailProvider\";\n\nexport const TypeRender = ({ order }: { order: API.AlgoOrder }) => {\n const { side, estLiqPrice } = useTPSLDetailContext();\n const { tp_trigger_price, sl_trigger_price } = findTPSLFromOrder(order);\n const { t } = useTranslation();\n\n const slPriceError = useTpslPriceChecker({\n slPrice: sl_trigger_price?.toString() ?? undefined,\n liqPrice: estLiqPrice ?? null,\n side: side,\n });\n const isSlPriceWarning =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_WARNING;\n return (\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs\"\n >\n {tp_trigger_price && (\n <FlexCell>\n <Text className=\"oui-text-trade-profit\">{t(\"tpsl.tp\")}</Text>\n </FlexCell>\n )}\n\n {sl_trigger_price && (\n <FlexCell className={\"oui-flex-row oui-items-center oui-gap-1\"}>\n <Text className=\"oui-text-trade-loss\">{t(\"tpsl.sl\")}</Text>\n {isSlPriceWarning && (\n <CloseToLiqPriceIcon slPriceError={slPriceError} />\n )}\n </FlexCell>\n )}\n </Flex>\n );\n};\n","import { FC, SVGProps, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n cn,\n Flex,\n Text,\n ThrottledButton,\n toast,\n Tooltip,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { EstPnlRender } from \"./components/estPnl\";\nimport { OrderPriceRender } from \"./components/orderPrice\";\nimport { QtyRender } from \"./components/qty\";\nimport { TriggerPrice } from \"./components/triggerPrice\";\nimport { TypeRender } from \"./components/type\";\n\nexport const useColumn = (props: {\n onCancelOrder?: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const { onCancelOrder } = props;\n\n const columns = useMemo(() => {\n const moblieColumns = [\n {\n title: t(\"tpsl.tpslDetail.qty\"),\n dataIndex: \"quantity\",\n width: 70,\n className: \"oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <QtyRender order={record} />\n ),\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n width: 35,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <TypeRender order={record} />\n ),\n },\n {\n title: t(\"common.trigger\"),\n dataIndex: \"trigger\",\n width: 70,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => {\n return <TriggerPrice order={record} />;\n },\n },\n {\n title: t(\"common.price\"),\n dataIndex: \"price\",\n width: 70,\n className: \"oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <OrderPriceRender order={record} />\n ),\n },\n\n {\n title: (\n <Tooltip\n className=\"oui-max-w-[280px] oui-bg-base-8 oui-p-3 oui-text-2xs oui-text-base-contrast\"\n content={t(\"tpsl.tpslDetail.estPnl.tooltip\")}\n >\n <Text className=\"oui-underline oui-decoration-dashed oui-underline-offset-2\">\n {t(\"tpsl.tpslDetail.estPnl\")}\n </Text>\n </Tooltip>\n ),\n dataIndex: \"estpnl\",\n width: 70,\n className: \"!oui-pr-0 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <EstPnlRender order={record} />\n ),\n },\n ];\n const desktopColums = [\n {\n title: t(\"tpsl.tpslDetail.qty\"),\n dataIndex: \"quantity\",\n width: 70,\n className: cn(\" oui-py-2 !oui-pl-5\"),\n render: (_: string, record: API.AlgoOrder) => (\n <QtyRender order={record} />\n ),\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n width: 35,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <TypeRender order={record} />\n ),\n },\n {\n title: t(\"common.trigger\"),\n dataIndex: \"trigger\",\n width: 70,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => {\n return <TriggerPrice order={record} />;\n },\n },\n {\n title: t(\"common.price\"),\n dataIndex: \"price\",\n width: 70,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <OrderPriceRender order={record} />\n ),\n },\n\n {\n title: (\n <Tooltip\n className=\"oui-max-w-[280px] oui-bg-base-8 oui-p-3 oui-text-2xs oui-text-base-contrast\"\n content={t(\"tpsl.tpslDetail.estPnl.tooltip\")}\n >\n <Text className=\"oui-underline oui-decoration-dashed oui-underline-offset-2\">\n {t(\"tpsl.tpslDetail.estPnl\")}\n </Text>\n </Tooltip>\n ),\n dataIndex: \"estpnl\",\n width: 70,\n className: \"oui-pl-1 oui-py-2\",\n render: (_: string, record: API.AlgoOrder) => (\n <EstPnlRender order={record} />\n ),\n },\n {\n title: \"\",\n dataIndex: \"delete\",\n width: 50,\n className: cn(\"oui-py-2 !oui-pr-5\"),\n render: (_: any, record: API.AlgoOrder) => {\n return <CancelAllBtn order={record} onCancelOrder={onCancelOrder} />;\n },\n },\n ];\n if (isMobile) {\n return moblieColumns;\n }\n return desktopColums;\n }, [t, isMobile]);\n return columns;\n};\n\nexport const FlexCell = (props: { children: React.ReactNode }) => {\n return (\n <Flex\n direction={\"column\"}\n justify={\"center\"}\n itemAlign={\"start\"}\n className=\"oui-text-2xs oui-h-[36px]\"\n >\n {props.children}\n </Flex>\n );\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\nconst DeleteIcon: FC<IconProps> = (props) => {\n const { size = 18 } = props;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M5.48081 15.375C5.10681 15.375 4.78731 15.2426 4.52231 14.9777C4.25744 14.7127 4.125 14.3932 4.125 14.0192V4.50004H3.375V3.37505H6.75V2.71167H11.25V3.37505H14.625V4.50004H13.875V14.0192C13.875 14.3981 13.7438 14.7188 13.4813 14.9813C13.2188 15.2438 12.8981 15.375 12.5192 15.375H5.48081ZM12.75 4.50004H5.25V14.0192C5.25 14.0866 5.27162 14.1419 5.31487 14.1852C5.35812 14.2284 5.41344 14.25 5.48081 14.25H12.5192C12.5769 14.25 12.6298 14.226 12.6778 14.1779C12.7259 14.1299 12.75 14.077 12.75 14.0192V4.50004ZM7.053 12.75H8.17781V6.00004H7.053V12.75ZM9.82219 12.75H10.947V6.00004H9.82219V12.75Z\" />\n </svg>\n );\n};\n\nexport const CancelAllBtn = (props: {\n order: API.AlgoOrder;\n onCancelOrder?: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const [loading, setLoading] = useState(false);\n return (\n <ThrottledButton\n size=\"sm\"\n loading={loading}\n variant=\"text\"\n color=\"gray\"\n onClick={(e) => {\n e.stopPropagation();\n setLoading(true);\n props\n .onCancelOrder?.(props.order)\n .then(\n () => {},\n (error) => {\n toast.error(error.message);\n },\n )\n .finally(() => {\n setLoading(false);\n });\n }}\n >\n <DeleteIcon className=\"oui-text-base-contrast-54 hover:oui-text-base-contrast oui-cursor-pointer\" />\n </ThrottledButton>\n );\n};\n","import { API } from \"@orderly.network/types\";\nimport { cn, ScrollArea } from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { useColumn } from \"./useColum\";\n\nexport const OrdersTable = (props: {\n className?: string;\n orders: API.AlgoOrder[];\n editTPSLOrder: (order: API.AlgoOrder) => void;\n onCancelOrder: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const { orders } = props;\n const columns = useColumn({ onCancelOrder: props.onCancelOrder });\n return (\n // <ScrollArea className={cn( props.className)}>\n\n <AuthGuardDataTable\n columns={columns}\n dataSource={orders}\n className=\"oui-bg-transparent oui-text-2xs\"\n bordered\n classNames={{\n root: cn(props.className),\n header: \"!oui-bg-base-8\",\n scroll: cn(\n !orders || orders.length === 0\n ? \"!oui-min-h-[170px]\"\n : \"!oui-min-h-[100px]\",\n ),\n }}\n onRow={(record) => {\n return {\n className: cn(\n \"oui-h-[53px] oui-cursor-svg-edit !oui-border-none !oui-p-0\",\n ),\n onClick: () => {\n props.editTPSLOrder(record);\n },\n };\n }}\n />\n // </ScrollArea>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { Flex, Button, cn, ThrottledButton, toast } from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { useColumn } from \"./useColum\";\n\nexport const OrdersTableMobile = (props: {\n orders: API.AlgoOrder[];\n editTPSLOrder: (order: API.AlgoOrder) => void;\n canCancelOrder: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const { t } = useTranslation();\n const { orders } = props;\n const columns = useColumn({ onCancelOrder: () => Promise.resolve() });\n const orderIds = useMemo(() => {\n return orders.reduce(\n (acc, curr) => {\n acc[curr.algo_order_id] = true;\n return acc;\n },\n {} as Record<string, boolean>,\n );\n }, [orders]);\n return (\n <AuthGuardDataTable\n columns={columns}\n dataSource={orders}\n expanded={orderIds}\n bordered\n getRowCanExpand={() => true}\n expandRowRender={(row) => {\n return (\n <Flex gap={2} justify={\"end\"}>\n <Button\n variant=\"outlined\"\n size=\"sm\"\n color=\"gray\"\n className=\"oui-h-6 oui-text-2xs oui-text-base-contrast-54\"\n onClick={() => props.editTPSLOrder(row.original)}\n >\n {t(\"common.edit\")}\n </Button>\n <DeleteBtn\n order={row.original}\n onCancelOrder={props.canCancelOrder}\n />\n </Flex>\n );\n }}\n className=\"oui-bg-transparent oui-px-2 oui-text-2xs\"\n classNames={{\n scroll: cn(\n !orders || orders.length === 0\n ? \"!oui-min-h-[170px]\"\n : \"!oui-min-h-[100px]\",\n ),\n }}\n onRow={() => {\n return {\n className: cn(\n \"oui-h-[53px] oui-cursor-svg-edit !oui-border-none !oui-p-0\",\n ),\n };\n }}\n generatedRowKey={(record) => record.algo_order_id}\n />\n );\n};\n\nexport const DeleteBtn = (props: {\n order: API.AlgoOrder;\n onCancelOrder?: (order: API.AlgoOrder) => Promise<void>;\n}) => {\n const [loading, setLoading] = useState(false);\n const { t } = useTranslation();\n return (\n <ThrottledButton\n className=\"oui-h-6 oui-text-2xs oui-text-base-contrast-54\"\n size=\"sm\"\n loading={loading}\n variant=\"outlined\"\n color=\"gray\"\n onClick={(e) => {\n e.stopPropagation();\n setLoading(true);\n props\n .onCancelOrder?.(props.order)\n .then(\n () => {},\n (error) => {\n toast.error(error.message);\n },\n )\n .finally(() => {\n setLoading(false);\n });\n }}\n >\n {t(\"common.delete\")}\n </ThrottledButton>\n );\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, MarginMode, PositionType } from \"@orderly.network/types\";\nimport {\n Box,\n ChevronDownIcon,\n cn,\n ExclamationFillIcon,\n Flex,\n Text,\n toast,\n Tooltip,\n ThrottledButton,\n useScreen,\n ScrollArea,\n} from \"@orderly.network/ui\";\nimport { OrderInfo } from \"../components/orderInfo\";\nimport { OrdersTable } from \"./ordersTable\";\nimport { OrdersTableMobile } from \"./ordersTable.mobile\";\nimport { TPSLDetailState } from \"./tpslDetail.script\";\nimport { useTPSLDetailContext } from \"./tpslDetailProvider\";\n\nexport const TPSLDetailUI = (props: TPSLDetailState) => {\n const { isMobile } = useScreen();\n const {\n position,\n fullPositionOrders,\n partialPositionOrders,\n onCancelOrder,\n onCancelAllTPSLOrders,\n editTPSLOrder,\n addTPSLOrder,\n symbolInfo,\n } = props;\n const { estLiqPrice } = useTPSLDetailContext();\n console.log(\"----- position\", position);\n return (\n <Box>\n <ScrollArea className={cn(isMobile && \"oui-h-[calc(100vh-100px)]\")}>\n <OrderInfo\n marginMode={position.margin_mode ?? MarginMode.CROSS}\n order={{\n symbol: position.symbol,\n order_quantity: position.position_qty.toString(),\n order_price: position.average_open_price.toString(),\n }}\n estLiqPrice={estLiqPrice}\n symbolLeverage={position.leverage}\n baseDP={symbolInfo(\"base_dp\")}\n quoteDP={symbolInfo(\"quote_dp\")}\n classNames={{\n root: cn(\"oui-mb-6 oui-gap-3 oui-px-5\"),\n container: \"oui-gap-x-[30px]\",\n }}\n />\n <FullPositionPart\n position={position}\n orders={fullPositionOrders}\n onCancelOrder={onCancelOrder}\n onCancelAllTPSLOrders={onCancelAllTPSLOrders}\n editTPSLOrder={editTPSLOrder}\n addTPSLOrder={addTPSLOrder}\n />\n <PartialPositionPart\n position={position}\n orders={partialPositionOrders}\n onCancelOrder={onCancelOrder}\n onCancelAllTPSLOrders={onCancelAllTPSLOrders}\n editTPSLOrder={editTPSLOrder}\n addTPSLOrder={addTPSLOrder}\n />\n </ScrollArea>\n </Box>\n );\n};\n\nconst FullPositionPart = (props: {\n orders: API.AlgoOrder[];\n onCancelOrder: (order: API.AlgoOrder) => Promise<void>;\n onCancelAllTPSLOrders: () => Promise<void>;\n position: API.Position;\n editTPSLOrder: (order: API.AlgoOrder, positionType: PositionType) => void;\n addTPSLOrder: (positionType: PositionType) => void;\n}) => {\n const [open, setOpen] = useState(true);\n const { orders } = props;\n const { isMobile } = useScreen();\n return (\n <Box className=\"oui-mt-6\">\n <Box\n className={cn(\"oui-flex oui-items-center oui-justify-between oui-px-5\")}\n >\n <PositionTypeDescription\n positionType={PositionType.FULL}\n open={open}\n onOpenChange={setOpen}\n />\n {orders && orders.length === 0 && (\n <Flex gap={2}>\n <AddButton\n positionType={PositionType.FULL}\n position={props.position}\n addTPSLOrder={props.addTPSLOrder}\n />\n </Flex>\n )}\n </Box>\n\n <Box\n className={cn(\n \"oui-overflow-hidden oui-transition-[height] oui-duration-150\",\n open ? \"oui-h-auto\" : \"oui-h-0 oui-pb-4\",\n )}\n >\n {isMobile ? (\n <OrdersTableMobile\n orders={orders}\n editTPSLOrder={(order) =>\n props.editTPSLOrder(order, PositionType.FULL)\n }\n canCancelOrder={props.onCancelOrder}\n />\n ) : (\n <OrdersTable\n orders={orders}\n editTPSLOrder={(order) => {\n props.editTPSLOrder(order, PositionType.FULL);\n }}\n onCancelOrder={props.onCancelOrder}\n />\n )}\n </Box>\n </Box>\n );\n};\n\nconst PartialPositionPart = (props: {\n position: API.Position;\n orders: API.AlgoOrder[];\n onCancelOrder: (order: API.AlgoOrder) => Promise<void>;\n onCancelAllTPSLOrders: () => Promise<void>;\n editTPSLOrder: (order: API.AlgoOrder, positionType: PositionType) => void;\n addTPSLOrder: (positionType: PositionType) => void;\n}) => {\n const [open, setOpen] = useState(true);\n const { orders } = props;\n const { isMobile } = useScreen();\n return (\n <Box className=\"oui-pt-6\">\n <Box\n className={cn(\n \"oui-flex oui-items-center oui-justify-between\",\n \"oui-px-5\",\n isMobile\n ? \"oui-flex-col oui-items-start oui-justify-start oui-gap-[11px]\"\n : \"oui-flex-row oui-items-center oui-justify-between\",\n )}\n >\n <PositionTypeDescription\n positionType={PositionType.PARTIAL}\n open={open}\n onOpenChange={setOpen}\n />\n <Flex gap={2}>\n <AddButton\n positionType={PositionType.PARTIAL}\n position={props.position}\n addTPSLOrder={props.addTPSLOrder}\n />\n {orders && orders.length > 0 && (\n <CancelAllBtn\n canCancelAll={orders && orders.length > 0}\n onCancelAllTPSLOrders={props.onCancelAllTPSLOrders}\n />\n )}\n </Flex>\n </Box>\n <Box\n className={cn(\n \"oui-overflow-hidden oui-transition-[height] oui-duration-150\",\n open ? \"oui-h-auto\" : \"oui-h-0 oui-pb-4\",\n )}\n >\n {isMobile ? (\n <OrdersTableMobile\n orders={orders}\n editTPSLOrder={(order) =>\n props.editTPSLOrder(order, PositionType.PARTIAL)\n }\n canCancelOrder={props.onCancelOrder}\n />\n ) : (\n <OrdersTable\n className=\"oui-h-[300px]\"\n orders={orders}\n editTPSLOrder={(order) => {\n props.editTPSLOrder(order, PositionType.PARTIAL);\n }}\n onCancelOrder={props.onCancelOrder}\n />\n )}\n </Box>\n </Box>\n );\n};\n\nconst PositionTypeDescription = (props: {\n positionType: PositionType;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}) => {\n const { t } = useTranslation();\n return (\n <Flex\n gap={1}\n itemAlign={\"center\"}\n justify={\"start\"}\n className=\"oui-text-2xs\"\n >\n <Flex\n itemAlign={\"center\"}\n justify={\"start\"}\n gap={1}\n className=\"oui-cursor-pointer\"\n onClick={() => props.onOpenChange(!props.open)}\n >\n <ChevronDownIcon\n size={12}\n color=\"white\"\n className={cn(\n \"oui-cursor-pointer oui-transition-transform\",\n props.open && \"oui-rotate-180\",\n )}\n />\n {props.positionType === PositionType.FULL ? (\n <Text>{t(\"tpsl.positionType.full\")}</Text>\n ) : (\n <Text>{t(\"tpsl.positionType.partial\")}</Text>\n )}\n </Flex>\n <Tooltip\n className=\"oui-w-[280px] oui-p-3\"\n content={\n props.positionType === PositionType.FULL\n ? t(\"tpsl.positionType.full.tips\")\n : t(\"tpsl.positionType.partial.tips\")\n }\n >\n <ExclamationFillIcon\n className=\"oui-cursor-pointer oui-text-base-contrast-54\"\n size={12}\n />\n </Tooltip>\n </Flex>\n );\n};\n\nexport const AddButton = (props: {\n positionType: PositionType;\n position: API.Position;\n addTPSLOrder: (positionType: PositionType) => void;\n}) => {\n const { t } = useTranslation();\n const onAdd = () => {\n props.addTPSLOrder(props.positionType);\n };\n return (\n <ThrottledButton\n variant=\"outlined\"\n size=\"sm\"\n color=\"gray\"\n className=\"oui-h-6 oui-w-[94px] oui-text-2xs\"\n onClick={onAdd}\n >\n {t(\"tpsl.add\")}\n </ThrottledButton>\n );\n};\n\nexport const CancelAllBtn = (props: {\n onCancelAllTPSLOrders: () => Promise<void>;\n canCancelAll: boolean;\n}) => {\n const [loading, setLoading] = useState(false);\n const { t } = useTranslation();\n return (\n <ThrottledButton\n loading={loading}\n variant=\"outlined\"\n disabled={!props.canCancelAll}\n size=\"sm\"\n color=\"gray\"\n className=\"oui-h-6 oui-w-[94px] oui-text-2xs disabled:oui-border-base-contrast-16 disabled:oui-bg-transparent disabled:oui-text-base-contrast-20\"\n onClick={() => {\n setLoading(true);\n props\n .onCancelAllTPSLOrders()\n .then(\n () => {},\n (error) => {\n toast.error(error.message);\n },\n )\n .finally(() => {\n setLoading(false);\n });\n }}\n >\n {t(\"tpsl.cancelAll\")}\n </ThrottledButton>\n );\n};\n","import { AlgoOrder, API } from \"@orderly.network/types\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { useTPSLDetail } from \"./tpslDetail.script\";\nimport { TPSLDetailProvider } from \"./tpslDetailProvider\";\nimport { TPSLDetailUI } from \"./tsplDetail.ui\";\n\nexport type TPSLDetailProps = {\n position: API.Position;\n order: AlgoOrder;\n baseDP: number;\n quoteDP: number;\n};\n\nexport const TPSLDetailWidget = (props: TPSLDetailProps) => {\n const state = useTPSLDetail(props);\n return (\n <TPSLDetailProvider\n symbol={props.position.symbol}\n position={props.position}\n >\n <TPSLDetailUI {...state} />\n </TPSLDetailProvider>\n );\n};\nexport const TPSLDetailDialogId = \"TPSLDetailDialogId \";\nexport const TPSLDetailSheetId = \"TPSLDetailSheetId\";\nregisterSimpleDialog(TPSLDetailDialogId, TPSLDetailWidget, {\n classNames: {\n content: \"oui-w-[420px] lg:oui-pt-4 lg:oui-pb-2 !oui-px-0\",\n body: \"lg:oui-py-0\",\n },\n});\n\nregisterSimpleSheet(TPSLDetailSheetId, TPSLDetailWidget, {\n classNames: {\n content: \"!oui-p-0\",\n },\n});\n","import { useEffect, useMemo, useRef } from \"react\";\nimport {\n type ComputedAlgoOrder,\n useLocalStorage,\n useMarginModeBySymbol,\n useMemoizedFn,\n usePositionStream,\n useSymbolsInfo,\n useTPSLOrder,\n utils,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AlgoOrderRootType,\n API,\n OrderType,\n PositionType,\n SDKError,\n} from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { PositionTPSLConfirm } from \"../positionTPSL\";\n\nexport type TPSLBuilderOptions = {\n type: \"tp\" | \"sl\";\n triggerPrice?: number;\n symbol: string;\n};\n\nexport const useTPSLSimpleDialog = (options: TPSLBuilderOptions) => {\n const { type, triggerPrice, symbol } = options;\n const symbolInfo = useSymbolsInfo();\n const { marginMode } = useMarginModeBySymbol(symbol ?? \"\");\n const [{ rows: positions }, positionsInfo] = usePositionStream(symbol);\n const position = positions?.find((item) => item.margin_mode === marginMode);\n const prevTPSLType = useRef<AlgoOrderRootType>(AlgoOrderRootType.TP_SL);\n const [needConfirm] = useLocalStorage(\"orderly_order_confirm\", true);\n const { t } = useTranslation();\n\n const [\n tpslOrder,\n {\n submit,\n deleteOrder,\n setValue,\n setValues,\n validate,\n errors,\n isCreateMutating,\n isUpdateMutating,\n },\n ] = useTPSLOrder(\n {\n symbol: symbol!,\n position_qty: position?.position_qty ?? 0,\n average_open_price: position?.average_open_price ?? 0,\n margin_mode: position?.margin_mode,\n },\n {\n defaultOrder: undefined,\n positionType: PositionType.PARTIAL,\n // tpslEnable: { tp_enable: type === \"tp\", sl_enable: type === \"sl\" },\n isEditing: false,\n },\n );\n\n const setQuantity = (value: number | string) => {\n setValue(\"quantity\", value);\n };\n\n const setOrderPrice = (\n name: \"tp_trigger_price\" | \"sl_trigger_price\",\n value: number | string,\n ) => {\n setValue(name, value);\n };\n\n const setPnL = (type: string, value: number | string) => {\n setValue(type, value);\n };\n\n const maxQty = useMemo(\n () => Math.abs(Number(position?.position_qty ?? 0)),\n [position?.position_qty],\n );\n\n useEffect(() => {\n if (!maxQty) {\n return;\n }\n setValue(\"quantity\", maxQty);\n if (type === \"tp\") {\n setValue(\"tp_trigger_price\", triggerPrice ?? \"\");\n } else {\n setValue(\"sl_trigger_price\", triggerPrice ?? \"\");\n }\n }, [type, triggerPrice, maxQty]);\n\n const onSubmit = async () => {\n if (!position) {\n return Promise.reject(new Error(\"Position is required\"));\n }\n try {\n const validOrder = await validate();\n if (validOrder) {\n if (!needConfirm) {\n return submit({ accountId: position.account_id })\n .then(() => true)\n .catch((err) => {\n if (err?.message) {\n toast.error(err.message);\n }\n throw false;\n });\n }\n // confirm\n return modal\n .confirm({\n title: t(\"tpsl.confirmOrder\"),\n // bodyClassName: \"lg:oui-py-0\",\n onOk: async () => {\n try {\n const res = await submit({\n accountId: position.account_id,\n });\n\n if (res.success) {\n return res;\n }\n\n if (res.message) {\n toast.error(res.message);\n }\n\n return false;\n } catch (err: any) {\n if (err?.message) {\n toast.error(err.message);\n }\n return false;\n }\n },\n classNames: {\n body: \"!oui-pb-0\",\n },\n content: (\n <PositionTPSLConfirm\n isPositionTPSL={false}\n isEditing={false}\n symbol={symbol}\n qty={Number(tpslOrder.quantity)}\n maxQty={maxQty}\n tpPrice={Number(tpslOrder.tp_trigger_price)}\n slPrice={Number(tpslOrder.sl_trigger_price)}\n side={tpslOrder.side!}\n orderInfo={tpslOrder}\n quoteDP={symbolInfo[symbol](\"quote_dp\")}\n baseDP={symbolInfo[symbol](\"base_dp\")}\n />\n ),\n })\n .then(\n () => {\n return true;\n },\n () => {\n return Promise.reject(false);\n },\n );\n }\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n return {\n symbolInfo: symbolInfo[symbol!],\n maxQty,\n setQuantity: useMemoizedFn(setQuantity),\n orderQuantity: tpslOrder.quantity,\n isPosition: false,\n TPSL_OrderEntity: tpslOrder,\n setOrderValue: setValue,\n setPnL,\n setOrderPrice,\n onSubmit,\n errors,\n status: {\n isCreateMutating,\n isUpdateMutating,\n },\n position,\n setValues,\n type,\n triggerPrice,\n } as const;\n};\n\nexport type TPSLBuilderState = ReturnType<typeof useTPSLSimpleDialog>;\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport { Box, Button, cn, Divider, Flex, Text } from \"@orderly.network/ui\";\nimport { TPSLQuantity } from \"../components/tpslQty\";\nimport { useTPSLSimpleDialog } from \"./tpslSimpleDialog.script\";\n\ntype Props = ReturnType<typeof useTPSLSimpleDialog> & {\n close?: () => void;\n onComplete?: () => void;\n showAdvancedTPSLDialog?: (options: { qty: number }) => void;\n};\n\nexport const TPSLSimpleDialogUI: React.FC<Props> = (props) => {\n const { type, triggerPrice, errors, TPSL_OrderEntity } = props;\n const { t } = useTranslation();\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n\n const footer = (\n <Flex width=\"100%\" itemAlign=\"center\" gap={3} mt={4}>\n <Button\n key=\"secondary\"\n color=\"gray\"\n onClick={() => {\n props.onComplete?.();\n props.close?.();\n }}\n fullWidth\n className=\"oui-text-sm\"\n size=\"md\"\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n key=\"primary\"\n onClick={() => {\n props.onSubmit().then(() => {\n props.onComplete?.();\n props.close?.();\n });\n }}\n fullWidth\n className=\"oui-text-sm\"\n size=\"md\"\n >\n {t(\"common.confirm\")}\n </Button>\n </Flex>\n );\n\n const errorMessage = () => {\n const tpError = getErrorMsg(\"tp_trigger_price\");\n const slError = getErrorMsg(\"sl_trigger_price\");\n let text = \"\";\n if (tpError && type === \"tp\") {\n text = tpError;\n }\n if (slError && type === \"sl\") {\n text = slError;\n }\n if (!text) {\n return null;\n }\n return (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-mt-2 oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-danger\" />\n <Text className=\"oui-text-danger\">{text}</Text>\n </Flex>\n );\n };\n\n const renderPnl = () => {\n const { tp_pnl, sl_pnl } = TPSL_OrderEntity;\n if (type === \"sl\") {\n return (\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.totalEstSlPnl\")}</Text>\n {sl_pnl ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">USDC</Text>\n }\n coloring\n visible={true}\n size=\"2xs\"\n dp={2}\n >\n {Number(sl_pnl)}\n </Text.numeral>\n ) : (\n <Text size=\"2xs\">-- USDC</Text>\n )}\n </Flex>\n );\n }\n return (\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"2xs\">{t(\"tpsl.totalEstTpPnl\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-text-base-contrast-36 oui-ml-1\">USDC</Text>\n }\n rule=\"price\"\n coloring\n visible={true}\n size=\"2xs\"\n dp={2}\n >\n {tp_pnl ? Number(tp_pnl) : \"--\"}\n </Text.numeral>\n </Flex>\n );\n };\n\n return (\n <Box className=\"oui-w-full oui-px-0.5\">\n <TPSLQuantity\n maxQty={props.maxQty}\n quantity={Number(props.orderQuantity ?? props.maxQty)}\n baseTick={props.symbolInfo(\"base_tick\")}\n base_dp={props.symbolInfo(\"base_dp\")}\n base={props.symbolInfo(\"base\")}\n isEditing={false}\n errorMsg={getErrorMsg(\"quantity\")}\n onQuantityChange={props.setQuantity}\n />\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className={cn(\n \"oui-mt-4 oui-w-full oui-gap-1 oui-text-xs oui-text-base-contrast-36\",\n )}\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"xs\">{t(\"common.triggerPrice\")}</Text>\n <Text.numeral\n className=\"oui-text-base-contrast\"\n suffix={\n <Text className=\"oui-ml-1 oui-text-xs oui-text-base-contrast-36\">\n USDC\n </Text>\n }\n rule=\"price\"\n size=\"xs\"\n dp={props.symbolInfo(\"quote_dp\")}\n >\n {triggerPrice ? Number(triggerPrice) : \"--\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text size=\"xs\">{t(\"common.orderPrice\")}</Text>\n <Text className=\"oui-text-base-contrast\" size=\"xs\">\n {t(\"common.market\")}\n </Text>\n </Flex>\n {renderPnl()}\n </Flex>\n {errorMessage()}\n\n <Divider className=\"oui-my-3 oui-w-full\" />\n <Flex\n itemAlign={\"center\"}\n onClick={() => {\n props.close?.();\n props.showAdvancedTPSLDialog?.({\n qty: Number(TPSL_OrderEntity.quantity),\n });\n }}\n className=\"oui-pb-4\"\n >\n <Text color=\"primary\" className=\"oui-cursor-pointer oui-text-sm\">\n {t(\"tpsl.advancedSetting\")}\n </Text>\n </Flex>\n {footer}\n </Box>\n );\n};\n","import React from \"react\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { useTPSLSimpleDialog } from \"./tpslSimpleDialog.script\";\nimport { TPSLSimpleDialogUI } from \"./tpslSimpleDialog.ui\";\n\nexport const TPSLSimpleDialogWidget: React.FC<{\n type: \"tp\" | \"sl\";\n triggerPrice?: number;\n symbol: string;\n close?: () => void;\n onComplete?: () => void;\n showAdvancedTPSLDialog?: () => void;\n}> = (props) => {\n const { close, onComplete, showAdvancedTPSLDialog } = props;\n const state = useTPSLSimpleDialog(props);\n return (\n <TPSLSimpleDialogUI\n {...state}\n close={close}\n onComplete={onComplete}\n showAdvancedTPSLDialog={showAdvancedTPSLDialog}\n />\n );\n};\n\nexport const TPSLSimpleSheetId = \"TPSLSimpleSheetId\";\n\nexport const TPSLSimpleDialogId = \"TPSLSimpleDialogId\";\n\nregisterSimpleSheet(TPSLSimpleSheetId, TPSLSimpleDialogWidget, {\n classNames: {},\n});\n\nregisterSimpleDialog(TPSLSimpleDialogId, TPSLSimpleDialogWidget, {\n classNames: {\n content: \"oui-w-[420px]\",\n },\n});\n","import { useEffect, useMemo } from \"react\";\nimport {\n ERROR_MSG_CODES,\n useMaxQty,\n useMutation,\n useOrderEntry,\n useSymbolsInfo,\n useTpslPriceChecker,\n} from \"@orderly.network/hooks\";\nimport {\n AlgoOrderRootType,\n AlgoOrderType,\n API,\n MarginMode,\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n SDKError,\n} from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nfunction getInitialOrder(order: API.AlgoOrderExt) {\n const childOrder = order.child_orders[0];\n const positionType =\n childOrder.algo_type === AlgoOrderRootType.TP_SL\n ? PositionType.PARTIAL\n : PositionType.FULL;\n const tpOrder = childOrder.child_orders.find(\n (item) =>\n item.algo_type === AlgoOrderType.TAKE_PROFIT && item.trigger_price,\n );\n const slOrder = childOrder.child_orders.find(\n (item) => item.algo_type === AlgoOrderType.STOP_LOSS && item.trigger_price,\n );\n const tpslPriceInfo: {\n tp_trigger_price?: string | undefined;\n tp_order_type?: OrderType;\n tp_order_price?: string | undefined;\n sl_trigger_price?: string | undefined;\n sl_order_type?: OrderType;\n sl_order_price?: string | undefined;\n } = {};\n if (tpOrder) {\n tpslPriceInfo.tp_trigger_price = tpOrder.trigger_price?.toString();\n tpslPriceInfo.tp_order_type =\n typeof tpOrder.type === \"string\"\n ? (tpOrder.type.replace(\"_ORDER\", \"\") as OrderType)\n : undefined;\n if (tpslPriceInfo.tp_order_type === OrderType.LIMIT) {\n tpslPriceInfo.tp_order_price = tpOrder.price?.toString();\n }\n }\n if (slOrder) {\n tpslPriceInfo.sl_trigger_price = slOrder.trigger_price?.toString();\n tpslPriceInfo.sl_order_type =\n typeof slOrder.type === \"string\"\n ? (slOrder.type.replace(\"_ORDER\", \"\") as OrderType)\n : undefined;\n if (tpslPriceInfo.sl_order_type === OrderType.LIMIT) {\n tpslPriceInfo.sl_order_price = slOrder.price?.toString();\n }\n }\n\n return {\n baseInfo: {\n symbol: order.symbol,\n order_type: order.type,\n side: order.side,\n order_price: order.price,\n order_quantity: order.quantity,\n position_type: positionType,\n // tp_enable: !!tpOrder?.trigger_price,\n // sl_enable: !!slOrder?.trigger_price,\n },\n tpslPriceInfo,\n tpInfo: {\n orderId: tpOrder?.algo_order_id,\n },\n slInfo: {\n orderId: slOrder?.algo_order_id,\n },\n };\n}\n\nfunction isTPSLPriceChanged(\n originPrice: string | number,\n newPrice: string | number,\n) {\n if (newPrice === undefined || newPrice === null) {\n return true;\n }\n if (isNaN(Number(newPrice))) {\n return false;\n }\n const originDeci = new Decimal(Number(originPrice));\n const newDeci = new Decimal(Number(newPrice));\n return !newDeci.eq(originDeci);\n}\n\nexport const useEditBracketOrder = (props: { order: API.AlgoOrderExt }) => {\n if (!props.order) {\n throw new SDKError(\"order is required for editBracketOrder\");\n }\n const { baseInfo, tpslPriceInfo, tpInfo, slInfo } = getInitialOrder(\n props.order,\n );\n\n const [doUpdateOrder, { isMutating }] = useMutation(\"/v1/algo/order\", \"PUT\");\n\n const maxQty = useEditOrderMaxQty(props.order, props.order.quantity);\n\n const {\n formattedOrder,\n setValue,\n setValues,\n estLiqPrice,\n metaState,\n symbolInfo,\n helper,\n ...state\n } = useOrderEntry(props.order.symbol, {\n initialOrder: baseInfo,\n maxQty,\n });\n const symbol = props.order.symbol;\n\n const isPriceChanged = useMemo(() => {\n let dirty = false;\n const {\n tp_order_price,\n sl_order_price,\n tp_trigger_price,\n sl_trigger_price,\n } = formattedOrder;\n if (tpslPriceInfo.tp_trigger_price) {\n dirty =\n dirty ||\n isTPSLPriceChanged(\n tpslPriceInfo.tp_trigger_price,\n tp_trigger_price ?? 0,\n );\n }\n if (tpslPriceInfo.tp_order_price) {\n dirty =\n dirty ||\n isTPSLPriceChanged(tpslPriceInfo.tp_order_price, tp_order_price ?? 0);\n }\n if (tpslPriceInfo.sl_trigger_price) {\n dirty =\n dirty ||\n isTPSLPriceChanged(\n tpslPriceInfo.sl_trigger_price,\n sl_trigger_price ?? 0,\n );\n }\n if (tpslPriceInfo.sl_order_price) {\n dirty =\n dirty ||\n isTPSLPriceChanged(tpslPriceInfo.sl_order_price, sl_order_price ?? 0);\n }\n return dirty;\n }, [\n tpslPriceInfo,\n formattedOrder.tp_order_price,\n formattedOrder.sl_order_price,\n formattedOrder.tp_trigger_price,\n formattedOrder.sl_trigger_price,\n ]);\n useEffect(() => {\n setValues({\n ...tpslPriceInfo,\n });\n }, [props.order, setValues]);\n\n const slPriceError = useTpslPriceChecker({\n slPrice: formattedOrder.sl_trigger_price,\n liqPrice: estLiqPrice,\n side: formattedOrder.side,\n });\n\n const isSlPriceError =\n slPriceError?.sl_trigger_price?.type === ERROR_MSG_CODES.SL_PRICE_ERROR;\n\n const onSubmit = async () => {\n return helper\n .validate(isSlPriceError ? slPriceError : undefined)\n .then(() => {\n const tpOrder: {\n order_id?: number;\n trigger_price?: string;\n algo_type: AlgoOrderType;\n price?: string;\n reduce_only?: boolean;\n is_activated?: boolean;\n } = {\n order_id: tpInfo.orderId,\n algo_type: AlgoOrderType.TAKE_PROFIT,\n trigger_price: formattedOrder.tp_trigger_price,\n reduce_only: true,\n };\n if (formattedOrder.tp_order_type === OrderType.LIMIT) {\n tpOrder.price = formattedOrder.tp_order_price;\n }\n\n const slOrder: {\n order_id?: number;\n trigger_price?: string;\n algo_type: AlgoOrderType;\n price?: string;\n reduce_only?: boolean;\n is_activated?: boolean;\n } = {\n order_id: slInfo.orderId,\n algo_type: AlgoOrderType.STOP_LOSS,\n trigger_price: formattedOrder.sl_trigger_price,\n reduce_only: true,\n };\n if (formattedOrder.sl_order_type === OrderType.LIMIT) {\n slOrder.price = formattedOrder.sl_order_price;\n }\n\n const childOrders = [];\n if (tpInfo.orderId) {\n childOrders.push(tpOrder);\n }\n if (slInfo.orderId) {\n childOrders.push(slOrder);\n }\n return doUpdateOrder({\n order_id: props.order.algo_order_id,\n child_orders: [\n {\n order_id: props.order.child_orders[0].algo_order_id,\n child_orders: childOrders,\n },\n ],\n });\n });\n };\n\n return {\n symbol,\n symbolInfo,\n slPriceError,\n estLiqPrice,\n side: formattedOrder.side,\n formattedOrder,\n setValue,\n setValues,\n metaState,\n onSubmit,\n isMutating,\n isPriceChanged,\n };\n};\n\nexport function useEditOrderMaxQty(\n order: API.AlgoOrderExt,\n positionQty?: number,\n) {\n const { reduce_only } = order;\n\n const maxQty = useMaxQty(order.symbol, order.side as OrderSide, {\n reduceOnly: reduce_only,\n marginMode: order.margin_mode ?? MarginMode.CROSS,\n });\n\n return useMemo(() => {\n if (reduce_only) {\n return Math.abs(positionQty ?? 0);\n }\n return order.quantity + Math.abs(maxQty);\n }, [order.quantity, maxQty, reduce_only, positionQty]);\n}\n","import { useEffect, useState } from \"react\";\nimport { ERROR_MSG_CODES } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n OrderlyOrder,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport {\n cn,\n Divider,\n DotStatus,\n Flex,\n ScrollArea,\n Text,\n ThrottledButton,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { OrderInfo } from \"../components/orderInfo\";\nimport { PnlInfo } from \"../components/pnlInfo\";\nimport { TPSLInputRowWidget } from \"../components/tpslInputRow\";\nimport { TPSLPositionTypeWidget } from \"../components/tpslPostionType\";\nimport { useEditBracketOrder } from \"./editBracketOrder.script\";\n\ntype Props = ReturnType<typeof useEditBracketOrder>;\nexport const EditBracketOrderUI = (props: Props & { onClose?: () => void }) => {\n const { t } = useTranslation();\n const { errors, validated } = props.metaState;\n const { isMobile } = useScreen();\n // console.log('errors', errors, validated);\n\n const isSlPriceWarning =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.slPriceError);\n\n const {\n formattedOrder,\n setValue: setOrderValue,\n symbol,\n symbolInfo,\n setValues,\n } = props;\n\n const [tpValues, setTpValuse] = useState<{\n // enable: boolean;\n trigger_price: string;\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n order_price: string;\n order_type: OrderType;\n }>({\n // enable: false,\n order_type: formattedOrder.tp_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.tp_order_price ?? \"\",\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n });\n\n const [slValues, setSlValues] = useState<{\n // enable: boolean;\n trigger_price: string;\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n order_price: string;\n order_type: OrderType;\n }>({\n // enable: false,\n order_type: formattedOrder.sl_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.sl_order_price ?? \"\",\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n });\n\n // Update tpValues when formattedOrder changes\n useEffect(() => {\n setTpValuse((prev) => ({\n ...prev,\n // enable: formattedOrder.tp_enable ?? false,\n order_type: formattedOrder.tp_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.tp_order_price ?? \"\",\n trigger_price: formattedOrder.tp_trigger_price ?? \"\",\n PnL: formattedOrder.tp_pnl ?? \"\",\n Offset: formattedOrder.tp_offset ?? \"\",\n \"Offset%\": formattedOrder.tp_offset_percentage ?? \"\",\n ROI: formattedOrder.tp_ROI ?? \"\",\n }));\n }, [formattedOrder]);\n\n useEffect(() => {\n setSlValues((prev) => ({\n ...prev,\n // enable: formattedOrder.sl_enable ?? false,\n order_type: formattedOrder.sl_order_type ?? OrderType.MARKET,\n order_price: formattedOrder.sl_order_price ?? \"\",\n trigger_price: formattedOrder.sl_trigger_price ?? \"\",\n PnL: formattedOrder.sl_pnl ?? \"\",\n Offset: formattedOrder.sl_offset ?? \"\",\n \"Offset%\": formattedOrder.sl_offset_percentage ?? \"\",\n ROI: formattedOrder.sl_ROI ?? \"\",\n }));\n }, [formattedOrder]);\n return (\n <div>\n <ScrollArea\n className={cn(\"oui-flex-1\", isMobile && \"oui-h-[calc(100vh-200px)]\")}\n >\n <div className=\"\">\n <OrderInfo\n order={{\n symbol,\n order_quantity: formattedOrder.order_quantity,\n order_price: formattedOrder.order_price,\n }}\n estLiqPrice={props.estLiqPrice ?? undefined}\n baseDP={symbolInfo.base_dp}\n quoteDP={symbolInfo.quote_dp}\n />\n </div>\n <Divider className=\"oui-my-3\" />\n <div className=\"\">\n <div className=\"oui-py-3\">\n <TPSLPositionTypeWidget\n value={formattedOrder.position_type ?? PositionType.PARTIAL}\n disableSelector\n onChange={(key, value) => {\n // setOrderValue(\"position_type\", value);\n if (value === PositionType.FULL) {\n setValues({\n position_type: PositionType.FULL,\n tp_order_type: OrderType.MARKET,\n tp_order_price: undefined,\n sl_order_type: OrderType.MARKET,\n sl_order_price: undefined,\n });\n // setOrderValue(\"tp_order_type\", OrderType.MARKET);\n // setOrderValue(\"sl_order_type\", OrderType.MARKET);\n return;\n }\n setOrderValue(\"position_type\", value);\n }}\n />\n {formattedOrder.position_type === PositionType.FULL && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"oui-mt-3 oui-w-full\"\n >\n <div className=\"oui-relative oui-top-[7px] oui-size-1 oui-rounded-full oui-bg-warning-darken\" />\n <Text className=\"oui-text-2xs oui-text-warning-darken\">\n {t(\"tpsl.positionType.full.tips.market\")}\n </Text>\n </Flex>\n )}\n </div>\n <Flex direction={\"column\"} gap={6}>\n {/* {formattedOrder.tp_enable && ( */}\n <TPSLInputRowWidget\n disableEnableCheckbox\n disableOrderTypeSelector\n rootOrderPrice={formattedOrder.order_price}\n symbol={symbolInfo.symbol}\n type=\"tp\"\n side={formattedOrder.side as OrderSide}\n values={tpValues}\n errors={validated ? errors : null}\n quote_dp={symbolInfo.quote_dp}\n hideOrderPrice={\n formattedOrder.position_type === PositionType.FULL\n }\n onChange={(key, value) => {\n setOrderValue(key as keyof OrderlyOrder, value);\n }}\n positionType={\n formattedOrder.position_type ?? PositionType.PARTIAL\n }\n marginMode={formattedOrder.margin_mode}\n />\n {/* )} */}\n {/* {formattedOrder.sl_enable && formattedOrder.tp_enable && ( */}\n <Divider className=\"oui-w-full\" />\n {/* )} */}\n {/* {formattedOrder.sl_enable && ( */}\n <TPSLInputRowWidget\n disableEnableCheckbox\n disableOrderTypeSelector\n rootOrderPrice={formattedOrder.order_price}\n symbol={symbolInfo.symbol}\n type=\"sl\"\n side={formattedOrder.side as OrderSide}\n values={slValues}\n hideOrderPrice={\n formattedOrder.position_type === PositionType.FULL\n }\n inputWarnNode={\n isSlPriceWarning && (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={getErrorMsg(\"sl_trigger_price\")}\n />\n )\n }\n errors={\n validated ? errors : isSlPriceError ? props.slPriceError : null\n }\n quote_dp={symbolInfo.quote_dp}\n positionType={\n formattedOrder.position_type ?? PositionType.PARTIAL\n }\n onChange={(key, value) => {\n setOrderValue(key as keyof OrderlyOrder, value);\n }}\n marginMode={formattedOrder.margin_mode}\n />\n {/* )} */}\n </Flex>\n\n <PnlInfo\n tp_pnl={formattedOrder.tp_pnl}\n sl_pnl={formattedOrder.sl_pnl}\n className=\"oui-mt-6\"\n />\n </div>\n </ScrollArea>\n <Flex\n itemAlign={\"center\"}\n gap={3}\n mt={5}\n width={\"100%\"}\n justify={\"center\"}\n >\n <ThrottledButton\n className=\"oui-w-[184px]\"\n data-testid={\"tpsl-confirm\"}\n disabled={!props.isPriceChanged}\n loading={props.isMutating}\n onClick={() => {\n props\n .onSubmit()\n .then(() => {\n props.onClose?.();\n })\n .catch((err) => {\n console.log(\"--->>>cancel order\", err);\n });\n }}\n >\n {t(\"common.confirm\")}\n </ThrottledButton>\n </Flex>\n </div>\n );\n};\n","import { API } from \"@orderly.network/types\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { useEditBracketOrder } from \"./editBracketOrder.script\";\nimport { EditBracketOrderUI } from \"./editBracketOrder.ui\";\n\nexport const EditBracketOrderWidget = (props: {\n order: API.AlgoOrderExt;\n close?: () => void;\n}) => {\n const state = useEditBracketOrder({ order: props.order });\n return <EditBracketOrderUI {...state} onClose={props.close} />;\n};\n\nexport const EditBracketOrderSheetId = \"EditBracketOrderSheetId\";\nexport const EditBracketOrderDialogId = \"EditBracketOrderDialogId\";\n\nregisterSimpleSheet(EditBracketOrderSheetId, EditBracketOrderWidget);\n\nregisterSimpleDialog(EditBracketOrderDialogId, EditBracketOrderWidget, {\n classNames: {\n content: \"oui-w-[420px]\",\n },\n});\n"]}
|