@orderly.network/ui-order-entry 2.10.2 → 3.0.0-beta.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 +11 -4
- package/dist/index.d.ts +11 -4
- package/dist/index.js +1086 -199
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +969 -82
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +13 -13
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/additional/additionalInfo.tsx","../src/components/additional/additionalConfigButton.tsx","../src/components/additional/pinButton.tsx","../src/components/advancedTPSLResult/index.tsx","../src/components/fee/regularFee/regularFees.ui.tsx","../src/components/fee/regularFee/regularFees.widget.tsx","../src/components/fee/fees.widget.tsx","../src/components/slippage/components/slippageEditor.tsx","../src/components/slippage/components/slippageCell.tsx","../src/components/slippage/slippage.ui.tsx","../src/components/assetInfo/index.tsx","../src/components/LTVRiskTooltip/LTVRiskTooltip.ui.tsx","../src/components/LTVRiskTooltip/LTVRiskTooltip.script.ts","../src/components/LTVRiskTooltip/LTVRiskTooltip.widget.tsx","../src/components/available/index.tsx","../src/utils.ts","../src/components/dialog/confirm.ui.tsx","../src/components/dialog/maxQtyConfirm.tsx","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.ui.tsx","../src/hooks/useAskAndBid.ts","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.script.ts","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.widget.tsx","../src/components/orderTypeSelect/index.tsx","../src/components/header/LeverageBadge.tsx","../src/components/header/index.tsx","../src/components/orderEntryContext.tsx","../src/components/orderEntryProvider.tsx","../src/components/customInput/index.tsx","../src/components/orderInput/limit/bboOrderTypeSelect.tsx","../src/components/orderInput/limit/limitPriceSuffix.tsx","../src/components/orderInput/limit/priceInput.tsx","../src/components/orderInput/qtyAndTotal/quantityInput.tsx","../src/components/orderInput/qtyAndTotal/totalTypeSelect.tsx","../src/components/orderInput/qtyAndTotal/totalInput.tsx","../src/components/orderInput/qtyAndTotal/qtyAndTotalInput.tsx","../src/components/orderInput/scaledOrder/quantityDistributionInput.tsx","../src/components/orderInput/scaledOrder/scaledPriceInput.tsx","../src/components/orderInput/scaledOrder/scaledQuantityUnit.tsx","../src/components/orderInput/scaledOrder/scaledQuantityInput.tsx","../src/components/orderInput/scaledOrder/skewInput.tsx","../src/components/orderInput/scaledOrder/totalOrdersInput.tsx","../src/components/orderInput/scaledOrder/index.tsx","../src/components/orderInput/stop/triggerPriceInput.tsx","../src/components/orderInput/trailingStop/activePriceInput.tsx","../src/components/orderInput/trailingStop/callbackRatePercentages.tsx","../src/components/orderInput/trailingStop/trailingCallbackSelect.tsx","../src/components/orderInput/trailingStop/trailingCallbackInput.tsx","../src/components/orderInput/trailingStop/index.tsx","../src/components/orderInput/index.tsx","../src/components/quantitySlider/index.tsx","../src/components/reduceOnlySwitch/index.tsx","../src/components/pnlInput/pnlInputContext.tsx","../src/components/pnlInput/useBuilder.script.ts","../src/components/pnlInput/pnlInput.ui.tsx","../src/components/pnlInput/pnlInput.widget.tsx","../src/components/pnlInput/pnlInputProvider.tsx","../src/components/tpsl.tsx","../src/orderEntry.ui.tsx","../src/hooks/useBBOState.ts","../src/hooks/useFocusAndBlur.ts","../src/hooks/usePriceInputContainer.ts","../src/orderEntry.script.ts","../src/orderEntry.widget.tsx"],"names":["useTranslation","useEffect","jsxs","cn","Flex","jsx","Checkbox","OrderType","Tooltip","Fragment","Divider","Switch","open","useState","PopoverRoot","PopoverTrigger","PopoverContent","useOrderEntryFormErrorMsg","Text","PositionType","AuthGuard","useFeeState","useRwaSymbolsInfoStore","forwardRef","useImperativeHandle","Decimal","modal","ExclamationFillIcon","TooltipTrigger","Input","inputFormatter","Box","useBoolean","useScreen","useRef","SimpleDialog","EditIcon","useGetEstLiqPrice","removeTrailingZeros","Button","useQuery","useHoldingStream","useAppStore","useIndexPricesStream","account","zero","useComputedLTV","useCallback","useMemo","InfoCircleIcon","AddCircleIcon","options","BBOOrderType","OrderSide","OrderLevel","i18n","usePositionStream","useLocalStorage","getBBOType","Badge","textVariants","Grid","registerSimpleDialog","memo","TokenIcon","DataTable","useEventEmitter","useDebouncedCallback","national","order","totalQuantity","Select","useSymbolLeverage","SymbolLeverageSheetId","SymbolLeverageDialogId","createContext","useContext","EMPTY_LIST","item","margin","total","DistributionType","value","TrailingCallbackType","utils","Slider","todpIfNeed","mode","SimpleDropdownMenu","CaretDownIcon","React","ERROR_MSG_CODES","DotStatus","TPSLPositionTypeWidget","SettingFillIcon","useOrderlyContext","useId","useMemoizedFn","errors","toast","ThrottledButton","SimpleSheet","TPSLAdvancedWidget","useTrack","TrackerEventName","useCanTrade","useOrderEntry","useMarginRatio","state","useTpslPriceChecker","ORDER_ENTRY_EST_LIQ_PRICE_CHANGE"],"mappings":"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","file":"index.js","sourcesContent":["import { FC, useEffect } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderlyOrder, OrderType } from \"@orderly.network/types\";\nimport {\n Checkbox,\n cn,\n Divider,\n Flex,\n Switch,\n Tooltip,\n} from \"@orderly.network/ui\";\n\nexport type AdditionalInfoProps = {\n pinned: boolean;\n setPinned: (value: boolean) => void;\n needConfirm: boolean;\n setNeedConfirm: (value: boolean) => void;\n hidden: boolean;\n setHidden: (value: boolean) => void;\n onValueChange?: (key: keyof OrderlyOrder, value: any) => void;\n orderTypeExtra?: OrderType;\n showExtra?: boolean;\n};\n\nexport const AdditionalInfo: FC<AdditionalInfoProps> = (props) => {\n const { pinned, orderTypeExtra } = props;\n const { t } = useTranslation();\n\n const onTypeToggle = (type: OrderType) => (checked: boolean) => {\n if (props.onValueChange) {\n props.onValueChange(\n \"order_type_ext\" as keyof OrderlyOrder,\n checked ? type : \"\",\n // orderTypeExtra === type ? \"\" : type\n );\n }\n };\n\n useEffect(() => {\n props.onValueChange?.(\"visible_quantity\", props.hidden ? 0 : 1);\n }, [props.hidden]);\n\n return (\n <div\n className={cn(\n \"oui-orderEntry-additionalInfo\",\n \"oui-text-base-contrast-54\",\n )}\n >\n <Flex\n justify={pinned ? \"start\" : \"between\"}\n mb={3}\n width={pinned ? \"unset\" : \"100%\"}\n className=\"oui-gap-x-2 md:oui-gap-x-3\"\n wrap=\"wrap\"\n gapY={1}\n >\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-postOnly-checkBox\"\n id={\"toggle_order_post_only\"}\n className={\"oui-postOnly-checkbox oui-peer\"}\n color={\"white\"}\n variant={\"radio\"}\n disabled={!props.showExtra}\n checked={orderTypeExtra === OrderType.POST_ONLY}\n onCheckedChange={onTypeToggle(OrderType.POST_ONLY)}\n />\n <Tooltip\n content={t(\"orderEntry.orderType.postOnly.tooltip\")}\n className=\"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-80\"\n >\n <label\n htmlFor={\"toggle_order_post_only\"}\n className={cn(\n \"oui-postOnly-label\",\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-cursor-pointer oui-whitespace-nowrap oui-break-normal oui-border-b oui-border-dashed oui-border-line-12\",\n )}\n >\n {t(\"orderEntry.orderType.postOnly\")}\n </label>\n </Tooltip>\n </Flex>\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-ioc-checkBox\"\n id={\"toggle_order_iov\"}\n color={\"white\"}\n className={cn(\"oui-ioc-checkbox\", \"oui-peer\")}\n variant={\"radio\"}\n checked={orderTypeExtra === OrderType.IOC}\n onCheckedChange={onTypeToggle(OrderType.IOC)}\n disabled={!props.showExtra}\n />\n <Tooltip\n content={t(\"orderEntry.orderType.ioc.tooltip\")}\n className=\"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-80\"\n >\n <label\n htmlFor={\"toggle_order_iov\"}\n className={cn(\n \"oui-ioc-label\",\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-cursor-pointer oui-whitespace-nowrap oui-break-normal oui-border-b oui-border-dashed oui-border-line-12\",\n )}\n >\n {t(\"orderEntry.orderType.ioc\")}\n </label>\n </Tooltip>\n </Flex>\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-fox-checkBox\"\n id={\"toggle_order_fok\"}\n color={\"white\"}\n variant={\"radio\"}\n className={cn(\"oui-fok-checkbox\", \"oui-peer\")}\n checked={orderTypeExtra === OrderType.FOK}\n onCheckedChange={onTypeToggle(OrderType.FOK)}\n disabled={!props.showExtra}\n />\n <Tooltip\n content={t(\"orderEntry.orderType.fok.tooltip\")}\n className=\"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-80\"\n >\n <label\n htmlFor={\"toggle_order_fok\"}\n className={cn(\n \"oui-fok-label\",\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-cursor-pointer oui-whitespace-nowrap oui-break-normal oui-border-b oui-border-dashed oui-border-line-12\",\n )}\n >\n {t(\"orderEntry.orderType.fok\")}\n </label>\n </Tooltip>\n </Flex>\n </Flex>\n\n <Flex gapX={6}>\n <Flex>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-orderConfirm-checkBox\"\n id={\"toggle_order_confirm\"}\n color={\"white\"}\n className=\"oui-orderConfirm-checkbox\"\n checked={props.needConfirm}\n onCheckedChange={(checked) => {\n props.setNeedConfirm(!!checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_confirm\"}\n className={\"oui-orderConfirm-label oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.orderConfirm\")}\n </label>\n </Flex>\n <Flex>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-hidden-checkBox\"\n id={\"toggle_order_hidden\"}\n color={\"white\"}\n className=\"oui-orderHidden-checkbox\"\n checked={props.hidden}\n onCheckedChange={(checked: boolean) => {\n props.setHidden(checked);\n }}\n />\n <Tooltip\n content={t(\"orderEntry.hidden.tooltip\")}\n className=\"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-80\"\n >\n <label\n htmlFor={\"toggle_order_hidden\"}\n className={\n \"oui-orderHidden-label oui-ml-1 oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12 oui-text-2xs\"\n }\n >\n {t(\"orderEntry.hidden\")}\n </label>\n </Tooltip>\n </Flex>\n </Flex>\n {!pinned && (\n <>\n <Divider className={\"oui-my-3\"} />\n <Flex>\n <Switch\n data-testid=\"oui-testid-orderEntry-additional-keepVisible-switch\"\n id={\"toggle_order_keep_visible\"}\n className=\"oui-keepVisible-switch\"\n onCheckedChange={(checked) => {\n props.setPinned(checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_keep_visible\"}\n className={\"oui-keepVisible-label oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.keepVisible\")}\n </label>\n </Flex>\n </>\n )}\n </div>\n );\n};\n","import { useState } from \"react\";\nimport {\n PopoverContent,\n PopoverRoot,\n PopoverTrigger,\n} from \"@orderly.network/ui\";\nimport { AdditionalInfo, AdditionalInfoProps } from \"./additionalInfo\";\n\nexport function AdditionalConfigButton(props: AdditionalInfoProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n data-testid=\"oui-testid-orderEntry-additional-button\"\n className=\"oui-orderEntry-additionalConfig-btn\"\n onClick={() => {\n setOpen(true);\n }}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-36 hover:oui-fill-base-contrast-80\"\n >\n <path\n d=\"M3.332 2.665a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667z\"\n // fill=\"#fff\"\n // fillOpacity={open ? 0.8 : 0.36}\n />\n </svg>\n </button>\n </PopoverTrigger>\n <PopoverContent\n side={\"top\"}\n align={\"end\"}\n className={\n \"oui-orderEntry-additionalInfo-popover-content oui-w-[230px]\"\n }\n >\n <AdditionalInfo {...props} />\n </PopoverContent>\n </PopoverRoot>\n );\n}\n","import { HTMLAttributes, useState } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\n\nconst defaultPath =\n \"M10.007 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.852-2.523 1.233.361 1.95.015 2.961-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103 5.35 5.35 0 0 0-2.104-1.312c-.448-.15-.808-.208-1.042-.208\";\n\nexport const PinButton = (props: HTMLAttributes<HTMLButtonElement>) => {\n const [path, setPath] = useState(defaultPath);\n return (\n <button\n {...props}\n className={cn(\"oui-orderEntry-pin-btn\", props.className)}\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable={false}\n onMouseEnter={() => {\n setPath(\n 'M10.008 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.15-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.107.507.508.94 1.13 1.119 1.945-.636.61-1.026.658-1.662.323a.67.67 0 0 0-.779.117c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.292-.076 1.773-.48 2.206-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.515 2.226-.514 1.742.001 2.668-.448 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.686-.29-1.047.321-1.67\"',\n );\n }}\n onMouseLeave={() => {\n setPath(defaultPath);\n }}\n className=\"oui-text-primary-darken\"\n >\n <path d={path} />\n </svg>\n </button>\n );\n};\n","import { SVGProps } from \"react\";\nimport { OrderValidationResult } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n API,\n OrderlyOrder,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport { Divider, Flex, Text } from \"@orderly.network/ui\";\n\nexport function AdvancedTPSLResult(props: {\n order: Partial<OrderlyOrder>;\n symbolInfo: API.SymbolExt;\n errors: OrderValidationResult | null;\n onEdit: () => void;\n onDelete: () => void;\n}) {\n const { order: formattedOrder, symbolInfo, onEdit, onDelete, errors } = props;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n const { t } = useTranslation();\n\n const renderTp = () => {\n const error = getErrorMsg(\"tp_trigger_price\");\n if (formattedOrder.tp_trigger_price || formattedOrder.tp_order_price) {\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-advancedTPSLResult-tp oui-w-full\"\n gap={4}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n gapY={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpTriggerPrice\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.tp_trigger_price ?? \"\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpOrderPrice\")}</Text>\n {formattedOrder.tp_order_type === OrderType.LIMIT ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.tp_order_price ?? \"\"}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast\">Market</Text>\n )}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.totalEstTpPnl\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n coloring\n dp={2}\n >\n {Number(formattedOrder.tp_pnl)}\n </Text.numeral>\n </Flex>\n </Flex>\n {error && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"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\">{error}</Text>\n </Flex>\n )}\n </Flex>\n );\n }\n return null;\n };\n\n const renderSl = () => {\n if (formattedOrder.sl_trigger_price || formattedOrder.sl_order_price) {\n const error = getErrorMsg(\"sl_trigger_price\");\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-advancedTPSLResult-sl oui-w-full\"\n gap={4}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n gapY={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slTriggerPrice\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.sl_trigger_price ?? \"\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slOrderPrice\")}</Text>\n {formattedOrder.sl_order_type === OrderType.LIMIT ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.sl_order_price ?? \"\"}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast\">Market</Text>\n )}\n </Flex>\n\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.totalEstSlPnl\")}</Text>\n <Text.numeral\n coloring\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n dp={2}\n >\n {Number(formattedOrder.sl_pnl)}\n </Text.numeral>\n </Flex>\n {error && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"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\">{error}</Text>\n </Flex>\n )}\n </Flex>\n </Flex>\n );\n }\n return null;\n };\n\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-orderEntry-advancedTpslResult oui-w-full oui-text-2xs\"\n gap={4}\n >\n <Flex\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-advancedTpslResult-header oui-w-full\"\n >\n <Text>{t(\"common.tpsl\")}</Text>\n <Flex gap={2} className=\"oui-advancedTpslResult-actions\">\n <DeleteIcon\n size={12}\n className=\"oui-delete-btn oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n opacity={1}\n onClick={onDelete}\n />\n <EditIcon\n size={12}\n className=\"oui-edit-btn oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n onClick={onEdit}\n />\n </Flex>\n </Flex>\n <Flex justify={\"between\"} itemAlign={\"start\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.mode\")}</Text>\n <Text className=\"oui-text-base-contrast\">\n {formattedOrder.position_type === PositionType.FULL\n ? t(\"tpsl.fullPosition\")\n : t(\"tpsl.partialPosition\")}\n </Text>\n </Flex>\n {renderTp()}\n {renderSl()}\n\n <Divider className=\"oui-mb-2 oui-w-full\" />\n </Flex>\n );\n}\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\nconst DeleteIcon: React.FC<IconProps> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={props.size}\n height={props.size}\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M5.99903 0.976562C5.44653 0.976562 4.99903 1.42406 4.99903 1.97656H2.49902C2.22302 1.97656 1.99902 2.20056 1.99902 2.47656C1.99902 2.75256 2.22302 2.97656 2.49902 2.97656H9.49903C9.77503 2.97656 9.99903 2.75256 9.99903 2.47656C9.99903 2.20056 9.77503 1.97656 9.49903 1.97656H6.99903C6.99903 1.42406 6.55153 0.976562 5.99903 0.976562ZM2.49902 3.97655V8.97654C2.49902 10.0715 3.40152 10.961 4.49903 10.961L7.51453 10.9765C8.61203 10.9765 9.49903 10.074 9.49903 8.97654V3.97655H2.49902ZM4.99903 5.47655C5.27503 5.47655 5.49903 5.70055 5.49903 5.97655V8.97654C5.49903 9.25254 5.27503 9.47654 4.99903 9.47654C4.72303 9.47654 4.49903 9.25254 4.49903 8.97654V5.97655C4.49903 5.70055 4.72303 5.47655 4.99903 5.47655ZM6.99903 5.47655C7.27503 5.47655 7.49903 5.70055 7.49903 5.97655V8.97654C7.49903 9.25254 7.27503 9.47654 6.99903 9.47654C6.72303 9.47654 6.49903 9.25254 6.49903 8.97654V5.97655C6.49903 5.70055 6.72303 5.47655 6.99903 5.47655Z\" />\n </svg>\n );\n};\n\nconst EditIcon: React.FC<IconProps> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 12 12\"\n width={props.size}\n height={props.size}\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.49779 0.976562C8.36529 0.976562 8.23229 1.02357 8.13829 1.11707C7.86029 1.39507 6.85979 2.39558 6.63779 2.61808L2.13529 7.12059L1.63479 7.62059C1.56529 7.69059 1.52929 7.78958 1.50979 7.88658L1.00979 10.3881C0.939788 10.7381 1.23779 11.0361 1.58779 10.9666C1.90079 10.9036 3.77679 10.5286 4.08929 10.4661C4.18629 10.4466 4.28529 10.4106 4.35529 10.3411L4.85529 9.84059L9.35779 5.33808C9.58029 5.11608 10.5808 4.11506 10.8588 3.83756C10.9523 3.74356 10.9993 3.61056 10.9993 3.47806C10.9993 2.65956 10.7908 2.07456 10.3583 1.63306C9.92179 1.18756 9.33879 0.976562 8.49779 0.976562ZM8.69479 1.98606C9.14629 2.01256 9.43879 2.11608 9.63929 2.32108C9.84429 2.53008 9.97379 2.82008 10.0018 3.26258C9.72779 3.53608 9.32679 3.93106 8.99829 4.25956C8.60179 3.86306 8.11279 3.37407 7.71629 2.97757C8.04529 2.64907 8.42129 2.25956 8.69479 1.98606ZM6.99729 3.69657L8.27929 4.97858L4.49579 8.76207L3.21379 7.48009L6.99729 3.69657ZM2.49479 8.19908L3.77679 9.48107L3.72979 9.52809C3.39979 9.59409 2.73329 9.73359 2.11929 9.85659L2.44779 8.24608L2.49479 8.19908Z\" />\n </svg>\n );\n};\n","import React from \"react\";\nimport { useFeeState } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\n\nexport const RegularFeesUI: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n const { t } = useTranslation();\n const { taker, maker } = props;\n\n const originalTrailingFees = (\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n width={\"100%\"}\n gap={1}\n className=\"oui-orderEntry-fees\"\n >\n <Flex width={\"100%\"} itemAlign=\"center\" justify={\"between\"}>\n <Text className=\"oui-fees-label oui-truncate\" size=\"2xs\">\n {t(\"common.fees\")}\n </Text>\n <AuthGuard\n fallback={() => (\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}: --% / {t(\"dmm.maker\")}: --%\n </Text>\n )}\n >\n <Flex gap={1} className=\"oui-fees-value-container\">\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {taker}\n </Text>\n <Text size=\"2xs\">/</Text>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.maker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {maker}\n </Text>\n </Flex>\n </AuthGuard>\n </Flex>\n </Flex>\n );\n\n return originalTrailingFees;\n};\n","import React from \"react\";\nimport { useFeeState } from \"@orderly.network/hooks\";\nimport { RegularFeesUI } from \"./regularFees.ui\";\n\nexport const RegularFeesWidget: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n return <RegularFeesUI {...props} />;\n};\n","import React from \"react\";\nimport { useFeeState, useRwaSymbolsInfoStore } from \"@orderly.network/hooks\";\nimport { RegularFeesWidget } from \"./regularFee\";\n\nexport const FeesWidget: React.FC<{ symbol: string }> = ({ symbol }) => {\n const { takerFee, makerFee, rwaTakerFee, rwaMakerFee } = useFeeState();\n const info = useRwaSymbolsInfoStore();\n const isRwa = info?.[symbol] !== undefined;\n\n return (\n <RegularFeesWidget\n taker={isRwa ? rwaTakerFee : takerFee}\n maker={isRwa ? rwaMakerFee : makerFee}\n />\n );\n};\n","import {\n FC,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n cn,\n ExclamationFillIcon,\n Flex,\n Input,\n inputFormatter,\n modal,\n Text,\n Tooltip,\n TooltipTrigger,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\ninterface SlippageProps {\n initialValue?: number;\n isMobile?: boolean;\n}\n\nconst options = [0.01, 0.05, 0.1];\n\nexport const SlippageEditor = forwardRef<\n { getValue: () => number | undefined },\n SlippageProps\n>((props, ref) => {\n const { t } = useTranslation();\n const [value, setValue] = useState<number>();\n const [customValue, setCustomValue] = useState(\"\");\n const [error, setError] = useState<string | undefined>(undefined);\n\n useImperativeHandle(ref, () => ({\n getValue: () =>\n customValue ? new Decimal(customValue)?.toNumber() : value,\n }));\n\n useEffect(() => {\n if (props.initialValue && !options.includes(props.initialValue!)) {\n setCustomValue(props.initialValue!.toString());\n } else {\n setValue(props.initialValue);\n }\n }, [props.initialValue, open]);\n\n const onClick = (val: number) => {\n setValue(val);\n setCustomValue(\"\");\n setError(undefined);\n };\n\n const onValueChange = (val: string) => {\n if (!val) {\n setCustomValue(val);\n return;\n }\n\n const d = new Decimal(val);\n setValue(undefined);\n if (d.gt(3)) {\n setCustomValue(\"3\");\n setError(t(\"orderEntry.slippage.error.exceed\"));\n } else {\n setCustomValue(val);\n setError(undefined);\n }\n };\n\n const toolTipButton = props.isMobile ? (\n <button\n onClick={() => {\n // setOpen(true)\n modal.alert({\n title: t(\"common.tips\"),\n message: <Text size=\"2xs\">{t(\"orderEntry.slippage.tips\")}</Text>,\n });\n }}\n >\n <ExclamationFillIcon className=\"oui-text-base-contrast-54\" size={16} />\n </button>\n ) : (\n <Tooltip\n // @ts-ignore\n content={\n <Text intensity={80} size=\"2xs\">\n {t(\"orderEntry.slippage.tips\")}\n </Text>\n }\n className=\"oui-w-[260px] oui-bg-base-6\"\n arrow={{ className: \"oui-fill-base-6\" }}\n >\n <TooltipTrigger>\n <ExclamationFillIcon className=\"oui-text-base-contrast-54\" size={16} />\n </TooltipTrigger>\n </Tooltip>\n );\n\n return (\n <div className=\"oui-orderEntry-slippageEditor oui-text-2xs\">\n <Flex mb={2} gapX={1}>\n <Text size=\"xs\">{t(\"orderEntry.slippage\")}</Text>\n {toolTipButton}\n </Flex>\n <Flex gapX={2}>\n {options.map((item) => {\n const isActive = value === item;\n return (\n <SlippageItem\n key={item}\n value={item}\n isActive={isActive}\n onClick={() => {\n onClick(item);\n }}\n />\n );\n })}\n\n <Input\n suffix=\"%\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(2),\n ]}\n value={customValue}\n onValueChange={onValueChange}\n classNames={{\n root: cn(\n \"oui-slippageEditor-customInput\",\n \"oui-rounded-md oui-bg-base-6\",\n \"oui-h-[40px] oui-w-[74px]\",\n ),\n input: \"oui-text-base-contrast\",\n additional: \"oui-pl-1\",\n }}\n />\n </Flex>\n {!!error && (\n <Box mt={5} className=\"-oui-mb-5\">\n <Text size=\"2xs\" color=\"danger\">\n {error}\n </Text>\n </Box>\n )}\n </div>\n );\n});\n\ntype SlippageItemProps = {\n value: number;\n isActive: boolean;\n onClick: () => void;\n};\n\nconst SlippageItem: FC<SlippageItemProps> = ({ value, isActive, onClick }) => {\n return (\n <Flex\n intensity={600}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"md\"\n width={74}\n height={40}\n className={cn(\n \"oui-slippageEditor-option\",\n \"oui-cursor-pointer oui-select-none\",\n isActive\n ? \"oui-bg-primary-light oui-text-primary-contrast/80\"\n : \"oui-text-base-contrast-80\",\n )}\n onClick={onClick}\n >\n <Text size=\"sm\">{value}%</Text>\n </Flex>\n );\n};\n","import { useRef } from \"react\";\nimport { useBoolean } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n EditIcon,\n Flex,\n Text,\n SimpleDialog,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { SlippageEditor } from \"./slippageEditor\";\n\nexport const SlippageCell = (props: {\n slippage: string;\n setSlippage: (slippage: string) => void;\n estSlippage: number | null;\n}) => {\n const { t } = useTranslation();\n const [open, { setTrue: setOpen, setFalse: setClose, toggle }] =\n useBoolean(false);\n\n const { isMobile } = useScreen();\n const slippageRef = useRef<{ getValue: () => number | undefined }>(null);\n\n const onConfirm = () => {\n const val = slippageRef.current?.getValue();\n\n props.setSlippage(!val ? \"1\" : val.toString());\n setClose();\n return Promise.resolve(true);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={toggle}\n title={t(\"common.settings\")}\n contentProps={{ size: isMobile ? \"xs\" : \"sm\" }}\n classNames={{\n footer: \"oui-orderEntry-slippage-footer\",\n body: \"oui-orderEntry-slippage-body\",\n }}\n actions={{\n primary: {\n disabled: false,\n label: t(\"common.save\"),\n onClick: onConfirm,\n className: \"oui-slippage-save-btn\",\n },\n secondary: {\n label: t(\"common.cancel\"),\n onClick: () => setClose(),\n className: \"oui-slippage-cancel-btn\",\n },\n }}\n >\n <SlippageEditor\n ref={slippageRef}\n isMobile={isMobile}\n initialValue={props.slippage ? Number(props.slippage) : undefined}\n />\n </SimpleDialog>\n <Flex justify={\"between\"} className=\"oui-orderEntry-slippage\">\n <Text className=\"oui-slippage-label\" size=\"2xs\">\n {t(\"orderEntry.slippage\")}\n </Text>\n <AuthGuard\n fallback={() => (\n <Text size=\"2xs\">\n {t(\"orderEntry.slippage.est\")}: -% / {t(\"common.max\")}: --%\n </Text>\n )}\n >\n <Flex gap={1} className=\"oui-slippage-value-container\">\n <Text.numeral\n size=\"2xs\"\n rule=\"percentages\"\n prefix={`${t(\"orderEntry.slippage.est\")}: `}\n suffix={` / ${t(\"common.max\")}: `}\n >\n {props.estSlippage ?? 0}\n </Text.numeral>\n <button\n className=\"oui-slippage-edit-btn oui-text-2xs\"\n onClick={() => setOpen()}\n >\n <Flex className=\"oui-gap-0.5\" as=\"span\">\n <Text size=\"2xs\" className=\"oui-text-primary\">\n {`${props.slippage || \"-\"}%`}\n </Text>\n <EditIcon\n className=\"oui-slippage-edit-icon oui-text-primary oui-hidden md:oui-block\"\n size={12}\n opacity={1}\n />\n </Flex>\n </button>\n </Flex>\n </AuthGuard>\n </Flex>\n </>\n );\n};\n","import { SlippageCell } from \"./components/slippageCell\";\n\nexport const SlippageUI = (props: {\n slippage: string;\n setSlippage: (slippage: string) => void;\n estSlippage: number | null;\n}) => {\n return <SlippageCell {...props} />;\n};\n","import { useGetEstLiqPrice } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide, OrderType } from \"@orderly.network/types\";\nimport { Flex, Text, Tooltip, useScreen } from \"@orderly.network/ui\";\nimport { FeesWidget } from \"../fee\";\nimport { SlippageUI } from \"../slippage/slippage.ui\";\n\nexport function AssetInfo(props: {\n symbol: string;\n canTrade: boolean;\n quote: string;\n estLiqPrice: number | null;\n estLiqPriceDistance: number | null;\n estLeverage: number | null;\n currentLeverage: number | null;\n slippage: string;\n dp: number;\n estSlippage: number | null;\n setSlippage: (slippage: string) => void;\n orderType: OrderType;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n side: OrderSide;\n}) {\n const { canTrade, disableFeatures, orderType, symbol } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const displayEstLiqPrice = useGetEstLiqPrice({\n estLiqPrice: props.estLiqPrice,\n symbol: symbol,\n side: props.side,\n });\n\n return (\n <div\n className={\"oui-orderEntry-assetInfo oui-space-y-[2px] xl:oui-space-y-1\"}\n >\n <Flex justify={\"between\"} className=\"oui-orderEntry-estLiqPrice\">\n {isMobile ? (\n <Text size=\"2xs\">{t(\"orderEntry.estLiqPrice\")}</Text>\n ) : (\n <Tooltip\n content={\n <div className=\"oui-min-w-[204px] oui-max-w-[280px] oui-text-2xs oui-leading-normal oui-text-base-contrast-80\">\n <div className=\"oui-text-pretty\">\n {t(\"common.liquidationPrice.tooltip\")}\n </div>\n <div>\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/perpetual-futures/liquidations\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-text-primary oui-underline\"\n >\n {t(\"common.liquidationPrice.tooltip.learnMore\")}\n </a>\n </div>\n </div>\n }\n >\n <Text\n size=\"2xs\"\n className=\"oui-estLiqPrice-label oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {t(\"orderEntry.estLiqPrice\")}\n </Text>\n </Tooltip>\n )}\n <Text.numeral\n unit={props.quote}\n size={\"2xs\"}\n dp={props.dp}\n className={\"oui-estLiqPrice-value oui-text-base-contrast-80\"}\n unitClassName={\"oui-ml-1 oui-text-base-contrast-36\"}\n >\n {canTrade ? (displayEstLiqPrice ?? \"--\") : \"--\"}\n </Text.numeral>\n </Flex>\n\n {orderType === OrderType.MARKET &&\n !disableFeatures?.includes(\"slippageSetting\") && (\n <SlippageUI\n slippage={props.slippage}\n setSlippage={props.setSlippage}\n estSlippage={props.estSlippage}\n />\n )}\n\n {!disableFeatures?.includes(\"feesInfo\") && (\n <FeesWidget symbol={props.symbol} />\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Button, cn, Divider, Flex, Text } from \"@orderly.network/ui\";\nimport { removeTrailingZeros } from \"@orderly.network/utils\";\nimport type { LTVTooltipScriptReturn } from \"./LTVRiskTooltip.script\";\n\nconst calculateLTVColor = (val: number): string => {\n if (val >= 0 && val < 50) {\n return \"oui-text-success\";\n } else if (val >= 50 && val < 80) {\n return \"oui-text-warning\";\n } else if (val >= 80) {\n return \"oui-text-danger\";\n } else {\n return \"\";\n }\n};\n\nexport const LTVRiskTooltipUI: React.FC<LTVTooltipScriptReturn> = (props) => {\n const { t } = useTranslation();\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isThresholdLoading,\n holdingData = [],\n currentLtv,\n onConvert,\n } = props;\n return (\n <Flex\n gap={1}\n className=\"oui-orderEntry-ltvRiskTooltip oui-w-72 oui-max-w-72\"\n direction=\"column\"\n >\n <Flex width={\"100%\"} justify=\"between\" itemAlign=\"center\">\n <Text intensity={36} size=\"xs\">\n {t(\"common.assets\")}\n </Text>\n <Text intensity={36} size=\"xs\">\n {t(\"transfer.deposit.collateralContribution\")}\n </Text>\n </Flex>\n {holdingData.map((asset, index) => {\n return (\n <Flex\n key={`item-${index}`}\n width={\"100%\"}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <Text intensity={80} size=\"xs\">\n {asset.token}\n </Text>\n <Text\n size=\"xs\"\n intensity={80}\n className={cn(\n Number(asset.collateralContribution) < 0 && \"oui-text-warning\",\n )}\n >\n {removeTrailingZeros(asset.collateralContribution)}\n </Text>\n </Flex>\n );\n })}\n <Divider className=\"oui-w-full\" />\n <Flex width={\"100%\"} justify=\"between\" itemAlign=\"center\">\n <Text intensity={36} size=\"xs\">\n {t(\"transfer.LTV.currentLTV\")}\n </Text>\n <Text\n size=\"xs\"\n intensity={36}\n className={cn(\"oui-select-none\", calculateLTVColor(currentLtv))}\n >\n {currentLtv}%\n </Text>\n </Flex>\n <Text className=\"oui-py-2\" intensity={54} size=\"2xs\">\n {t(\"transfer.LTV.tooltip\", {\n threshold: isThresholdLoading ? \"-\" : ltv_threshold,\n usdcThreshold: isThresholdLoading ? \"-\" : negative_usdc_threshold,\n })}\n </Text>\n <Button\n fullWidth\n size={\"md\"}\n variant={\"outlined\"}\n color={\"secondary\"}\n className=\"oui-ltvRiskTooltip-convert-btn\"\n onClick={onConvert}\n >\n {t(\"transfer.convert.convertAssets\")}\n </Button>\n </Flex>\n );\n};\n","import { useCallback } from \"react\";\nimport {\n useComputedLTV,\n useHoldingStream,\n useIndexPricesStream,\n useQuery,\n useAppStore,\n} from \"@orderly.network/hooks\";\nimport { account } from \"@orderly.network/perp\";\nimport type { API } from \"@orderly.network/types\";\nimport { modal } from \"@orderly.network/ui\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\n\nconst useConvertThreshold = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n { errorRetryCount: 3 },\n );\n return {\n ltv_threshold: new Decimal(data?.ltv_threshold ?? 0).mul(100).toNumber(),\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n } as const;\n};\n\nexport const useLTVTooltipScript = () => {\n const { data: holdingList = [], isLoading: isHoldingLoading } =\n useHoldingStream();\n\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isLoading: isThresholdLoading,\n } = useConvertThreshold();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const { getIndexPrice } = useIndexPricesStream();\n\n const holdingData = holdingList.map((item) => {\n const tokenInfo = tokensInfo?.find(({ token }) => token === item.token);\n\n // Use extracted function for index price calculation\n const indexPrice = getIndexPrice(item.token);\n\n // Calculate collateral ratio for this token\n const collateralRatio = tokenInfo\n ? account.collateralRatio({\n baseWeight: tokenInfo.base_weight ?? 0,\n discountFactor: tokenInfo.discount_factor ?? 0,\n collateralQty: item.holding,\n collateralCap: tokenInfo?.user_max_qty ?? item.holding,\n indexPrice: indexPrice,\n })\n : zero;\n\n // Calculate collateral contribution for this token\n const collateralContribution = account.collateralContribution({\n collateralQty: item.holding,\n collateralCap: tokenInfo?.user_max_qty ?? item.holding,\n collateralRatio: collateralRatio.toNumber(),\n indexPrice: indexPrice,\n });\n\n return {\n ...item,\n collateralContribution: collateralContribution,\n };\n });\n\n const currentLtv = useComputedLTV();\n\n const onConvert = useCallback(async () => {\n return modal.show(\"ConvertDialogId\");\n }, []);\n\n return {\n holdingData,\n isHoldingLoading,\n ltv_threshold,\n negative_usdc_threshold,\n isThresholdLoading,\n currentLtv: currentLtv,\n onConvert: onConvert,\n };\n};\n\nexport type LTVTooltipScriptReturn = ReturnType<typeof useLTVTooltipScript>;\n","import React from \"react\";\nimport { useLTVTooltipScript } from \"./LTVRiskTooltip.script\";\nimport { LTVRiskTooltipUI } from \"./LTVRiskTooltip.ui\";\n\nexport const LTVRiskTooltipWidget: React.FC = () => {\n const state = useLTVTooltipScript();\n return <LTVRiskTooltipUI {...state} />;\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Flex,\n Tooltip,\n Text,\n InfoCircleIcon,\n AddCircleIcon,\n Button,\n modal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { LTVRiskTooltipWidget } from \"../LTVRiskTooltip\";\n\ntype AvailableProps = {\n canTrade: boolean;\n currentLtv: number;\n freeCollateral: number;\n quote?: string;\n};\n\nexport const Available = (props: AvailableProps) => {\n const { canTrade, currentLtv, quote, freeCollateral } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const showLTV = useMemo(() => {\n return (\n typeof currentLtv === \"number\" &&\n !Number.isNaN(currentLtv) &&\n currentLtv > 0\n );\n }, [currentLtv]);\n\n return (\n <Flex\n itemAlign={\"center\"}\n justify={\"between\"}\n className=\"oui-orderEntry-available\"\n >\n <Text className=\"oui-available-label\" size={\"2xs\"}>\n {t(\"common.available\")}\n </Text>\n <Flex itemAlign={\"center\"} justify={\"center\"} gap={1}>\n {showLTV && (\n <Tooltip\n className={\"oui-available-ltvRisk-tooltip oui-bg-base-6 oui-p-2\"}\n content={<LTVRiskTooltipWidget />}\n >\n <InfoCircleIcon\n className={\"oui-cursor-pointer oui-text-warning oui-opacity-80\"}\n />\n </Tooltip>\n )}\n <Text.numeral\n unit={quote}\n size={\"2xs\"}\n className={\"oui-available-value oui-text-base-contrast-80\"}\n unitClassName={\"oui-ml-1 oui-text-base-contrast-54\"}\n dp={2}\n padding={false}\n >\n {canTrade ? freeCollateral : 0}\n </Text.numeral>\n <Button\n variant=\"text\"\n size=\"xs\"\n color=\"secondary\"\n className=\"oui-available-deposit-icon oui-p-0 hover:oui-text-base-contrast-80\"\n onClick={() => {\n // TODO: when we plan to move modal IDs to a public package, we need to use the ID from the public package\n const handleDomId = isMobile\n ? \"DepositAndWithdrawWithSheetId\"\n : \"DepositAndWithdrawWithDialogId\";\n modal.show(handleDomId, {\n activeTab: \"deposit\",\n });\n }}\n >\n <AddCircleIcon opacity={1} />\n </Button>\n </Flex>\n </Flex>\n );\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport {\n BBOOrderType,\n OrderLevel,\n OrderSide,\n OrderType,\n} from \"@orderly.network/types\";\n\nexport enum BBOStatus {\n ON = \"on\",\n OFF = \"off\",\n DISABLED = \"disabled\",\n}\n\n/**\n * if provide order_type, check order_type and order_type_ext, otherswise only check order_type_ext\n */\nexport function isBBOOrder(options: {\n order_type?: OrderType;\n order_type_ext?: OrderType;\n}) {\n const { order_type, order_type_ext } = options;\n\n const isBBO = [OrderType.ASK, OrderType.BID].includes(order_type_ext!);\n\n if (order_type) {\n return order_type === OrderType.LIMIT && isBBO;\n }\n\n return isBBO;\n}\n\nexport function getOrderTypeByBBO(value: BBOOrderType, size: OrderSide) {\n if (\n [BBOOrderType.COUNTERPARTY1, BBOOrderType.COUNTERPARTY5].includes(value)\n ) {\n return size === OrderSide.BUY ? OrderType.ASK : OrderType.BID;\n }\n\n if ([BBOOrderType.QUEUE1, BBOOrderType.QUEUE5].includes(value)) {\n return size === OrderSide.BUY ? OrderType.BID : OrderType.ASK;\n }\n}\n\nexport function getOrderLevelByBBO(value: BBOOrderType) {\n if ([BBOOrderType.COUNTERPARTY1, BBOOrderType.QUEUE1].includes(value)) {\n return OrderLevel.ONE;\n }\n\n if ([BBOOrderType.COUNTERPARTY5, BBOOrderType.QUEUE5].includes(value)) {\n return OrderLevel.FIVE;\n }\n}\n\nexport function getScaledPlaceOrderMessage(result: any) {\n const rows = result?.data?.rows || [];\n\n if (rows.length > 0) {\n const totalCount = rows.length;\n const successCount = rows.filter((row: any) => row.success).length;\n\n // fully successful\n if (successCount === totalCount) {\n return i18n.t(\"orderEntry.scaledOrder.fullySuccessful\", {\n total: totalCount,\n });\n }\n\n // all failed\n if (successCount === 0) {\n return i18n.t(\"orderEntry.scaledOrder.allFailed\");\n }\n\n // partially successful\n return i18n.t(\"orderEntry.scaledOrder.partiallySuccessful\", {\n successCount,\n total: totalCount,\n });\n }\n}\n\nexport const safeNumber = (val: number | string) => {\n return Number.isNaN(Number(val)) ? 0 : Number(val);\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { usePositionStream } from \"@orderly.network/hooks\";\nimport { i18n, useTranslation } from \"@orderly.network/i18n\";\nimport {\n BBOOrderType,\n API,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport { OrderlyOrder } from \"@orderly.network/types\";\nimport {\n Badge,\n Button,\n Checkbox,\n cn,\n Divider,\n Flex,\n Grid,\n registerSimpleDialog,\n Text,\n textVariants,\n} from \"@orderly.network/ui\";\nimport { Decimal, getBBOType } from \"@orderly.network/utils\";\nimport { isBBOOrder } from \"../../utils\";\n\ntype OrderConfirmDialogProps = {\n order: OrderlyOrder;\n symbolInfo: API.SymbolExt;\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nexport const OrderConfirmDialog = (props: OrderConfirmDialogProps) => {\n const { symbolInfo, order, onConfirm, onCancel } = props;\n const { quote, quote_dp, base_dp } = symbolInfo;\n const { side, order_type, order_type_ext, level, symbol } = order;\n const { t } = useTranslation();\n const [{ rows: positions }] = usePositionStream(symbol);\n const position = positions?.[0];\n const positionQty = position?.position_qty;\n\n const [_, setNeedConfirm] = useLocalStorage(\"orderly_order_confirm\", 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\n const renderPrice = () => {\n if (\n order_type === OrderType.MARKET ||\n order_type === OrderType.STOP_MARKET\n ) {\n return <Text intensity={80}>{t(\"common.marketPrice\")}</Text>;\n }\n\n if (isBBOOrder({ order_type, order_type_ext })) {\n const bboType = getBBOType({\n type: order_type_ext!,\n side,\n level,\n });\n const label = {\n [BBOOrderType.COUNTERPARTY1]: t(\"orderEntry.bbo.counterparty1\"),\n [BBOOrderType.COUNTERPARTY5]: t(\"orderEntry.bbo.counterparty5\"),\n [BBOOrderType.QUEUE1]: t(\"orderEntry.bbo.queue1\"),\n [BBOOrderType.QUEUE5]: t(\"orderEntry.bbo.queue5\"),\n }[bboType!];\n\n return <Text intensity={80}>{label}</Text>;\n }\n\n return (\n <Text.numeral\n unit={quote}\n rule=\"price\"\n className=\"oui-text-base-contrast\"\n unitClassName=\"oui-text-base-contrast-36 oui-ml-1\"\n dp={quote_dp}\n padding={false}\n >\n {order.order_price}\n </Text.numeral>\n );\n };\n\n const renderTPSLPrice = ({\n price,\n isOrderPrice,\n isEnable,\n colorType,\n }: {\n price: string;\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.marketPrice\")}\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={quote_dp}\n padding={false}\n >\n {price}\n </Text.numeral>\n );\n };\n\n const renderTPSLQty = () => {\n if (!positionQty || !order.order_quantity) {\n return null;\n }\n let qty = new Decimal(order.order_quantity);\n if (order.position_type === PositionType.FULL) {\n qty = qty.plus(new Decimal(positionQty ?? 0));\n }\n return (\n <Flex justify={\"between\"}>\n <Text>\n {order.position_type === PositionType.FULL\n ? t(\"common.positionQty\")\n : t(\"common.orderQty\")}\n </Text>\n <Text.numeral\n rule={\"price\"}\n dp={base_dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {qty.toNumber()}\n </Text.numeral>\n </Flex>\n );\n };\n\n const renderPriceAndTotal = () => {\n if (order_type === OrderType.TRAILING_STOP) {\n const { activated_price, callback_value, callback_rate } = order;\n\n const callbackView = callback_rate ? (\n <Flex justify={\"between\"}>\n <Text>{t(\"orderEntry.trailingRate\")}</Text>\n <Text className=\"oui-text-base-contrast\">{callback_rate}%</Text>\n </Flex>\n ) : (\n <OrderItem\n title={t(\"orderEntry.trailingValue\")}\n value={callback_value!}\n unit={quote}\n dp={quote_dp}\n />\n );\n return (\n <>\n {activated_price && (\n <OrderItem\n title={t(\"common.triggerPrice\")}\n value={activated_price!}\n unit={quote}\n dp={quote_dp}\n />\n )}\n {callbackView}\n </>\n );\n }\n\n return (\n <>\n <Flex justify={\"between\"}>\n <Text>{t(\"common.price\")}</Text>\n {renderPrice()}\n </Flex>\n <OrderItem\n title={t(\"common.estTotal\")}\n value={order.total}\n unit={quote}\n dp={quote_dp}\n />\n </>\n );\n };\n\n const header = (\n <Flex\n justify={\"between\"}\n className=\"oui-orderEntry-orderConfirmDialog-header\"\n >\n <Text.formatted\n rule={\"symbol\"}\n showIcon\n className=\"oui-orderConfirmDialog-symbol\"\n >\n {order.symbol}\n </Text.formatted>\n <Flex\n justify={\"end\"}\n gapX={1}\n className=\"oui-orderConfirmDialog-header-tags\"\n >\n <OrderTypeTag type={order_type} />\n {side === OrderSide.BUY ? (\n <Badge color={\"buy\"} size={\"sm\"}>\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge color={\"sell\"} size={\"sm\"}>\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n );\n\n const quantityItem = (\n <Flex justify={\"between\"}>\n <Text>{t(\"common.orderQty\")}</Text>\n <Text.numeral\n rule={\"price\"}\n dp={base_dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {order.order_quantity}\n </Text.numeral>\n </Flex>\n );\n\n const triggerPriceItem = (order_type === OrderType.STOP_LIMIT ||\n (order_type === OrderType.STOP_MARKET && order.trigger_price)) && (\n <OrderItem\n title={t(\"common.trigger\")}\n value={order.trigger_price}\n unit={quote}\n dp={quote_dp}\n />\n );\n\n const tpslTriggerPrice = (order.tp_trigger_price ||\n order.sl_trigger_price) && (\n <>\n <Divider className=\"oui-my-4\" />\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className: \"oui-space-y-1 oui-w-full oui-flex oui-flex-col oui-gap-3\",\n })}\n >\n <Text className=\"oui-text-base-contrast\">{renderPositionType()}</Text>\n {renderTPSLQty()}\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 );\n\n const orderConfirmCheckbox = (\n <Flex\n gapX={1}\n pt={4}\n pb={5}\n className=\"oui-orderEntry-orderConfirmDialog-disableConfirm\"\n >\n <Checkbox\n id=\"orderConfirm\"\n color={\"white\"}\n className=\"oui-orderConfirmDialog-disableConfirm-checkbox\"\n onCheckedChange={(checked) => {\n setNeedConfirm(!!!checked);\n }}\n />\n <label\n htmlFor=\"orderConfirm\"\n className={textVariants({\n size: \"xs\",\n intensity: 54,\n })}\n >\n {t(\"orderEntry.disableOrderConfirm\")}\n </label>\n </Flex>\n );\n\n const buttons = (\n <Grid\n cols={2}\n gapX={3}\n className=\"oui-orderEntry-orderConfirmDialog-actions\"\n >\n <Button\n color={\"secondary\"}\n size={\"md\"}\n className=\"oui-cancel-btn\"\n onClick={() => onCancel()}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n size={\"md\"}\n className=\"oui-confirm-btn\"\n onClick={() => onConfirm()}\n >\n {t(\"common.confirm\")}\n </Button>\n </Grid>\n );\n\n return (\n <>\n {header}\n <Divider className=\"oui-my-4\" />\n\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className: \"oui-orderEntry-orderConfirmDialog-content oui-space-y-1\",\n })}\n >\n {quantityItem}\n {triggerPriceItem}\n\n {renderPriceAndTotal()}\n </div>\n\n {tpslTriggerPrice}\n\n {orderConfirmCheckbox}\n\n {buttons}\n </>\n );\n};\n\ntype OrderItemProps = {\n title: ReactNode;\n value: string;\n unit: string;\n dp: number;\n};\n\nconst OrderItem: FC<OrderItemProps> = (props) => {\n const { title, value, unit, dp } = props;\n return (\n <Flex justify=\"between\">\n <Text>{title}</Text>\n <Text.numeral\n unit={unit}\n rule=\"price\"\n dp={dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n unitClassName=\"oui-text-base-contrast-36 oui-ml-1\"\n >\n {value}\n </Text.numeral>\n </Flex>\n );\n};\n\nOrderConfirmDialog.displayName = \"OrderConfirmDialog\";\n\nconst OrderTypeTag = (props: { type: OrderType }) => {\n const { t } = useTranslation();\n const typeStr = useMemo(() => {\n switch (props.type) {\n case OrderType.LIMIT:\n return t(\"orderEntry.orderType.limit\");\n case OrderType.MARKET:\n return t(\"common.marketPrice\");\n case OrderType.STOP_LIMIT:\n return t(\"orderEntry.orderType.stopLimit\");\n case OrderType.STOP_MARKET:\n return t(\"orderEntry.orderType.stopMarket\");\n case OrderType.TRAILING_STOP:\n return t(\"orderEntry.orderType.trailingStop\");\n default:\n return \"\";\n }\n }, [props.type]);\n\n return (\n <Badge color={\"neutral\"} size={\"sm\"}>\n {typeStr}\n </Badge>\n );\n};\n\nconst Dialog = (\n props: Omit<OrderConfirmDialogProps, \"onCancel\" | \"onConfirm\"> & {\n close: () => void;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n },\n) => {\n const { close, resolve, reject, ...rest } = props;\n\n return (\n <OrderConfirmDialog\n {...rest}\n onCancel={() => {\n reject();\n close();\n }}\n onConfirm={() => {\n resolve();\n close();\n }}\n />\n );\n};\n\nexport const orderConfirmDialogId = \"orderConfirm\";\n\nregisterSimpleDialog(orderConfirmDialogId, Dialog, {\n size: \"sm\",\n title: () => i18n.t(\"orderEntry.orderConfirm\"),\n});\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { SimpleDialog } from \"@orderly.network/ui\";\n\ntype MaxQtyConfirmProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n maxQty: string;\n onConfirm: () => void;\n base: string;\n};\n\nexport const MaxQtyConfirm: FC<MaxQtyConfirmProps> = memo((props) => {\n const { t } = useTranslation();\n return (\n <SimpleDialog\n open={props.open}\n title={t(\"orderEntry.orderConfirm\")}\n closable\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n classNames={{\n footer: \"oui-maxQtyConfirm-footer\",\n body: \"oui-maxQtyConfirm-body\",\n }}\n actions={{\n primary: {\n label: t(\"orderEntry.placeOrderNow\"),\n className:\n \"oui-primary-btn oui-text-sm oui-font-semibold oui-w-[100%] oui-h-8\",\n onClick: () => {\n props.onConfirm();\n return Promise.resolve();\n },\n },\n secondary: {\n label: t(\"common.cancel\"),\n className:\n \"oui-secondary-btn oui-text-sm oui-font-semibold oui-w-[100%] oui-h-8\",\n onClick: () => {\n props.onOpenChange(false);\n return Promise.resolve();\n },\n },\n }}\n >\n <div className=\"oui-maxQtyConfirm-content oui-text-2xs lg:oui-text-sm\">\n {t(\"orderEntry.maxQty.reminder.content\", {\n maxQty: `${props.maxQty} ${props.base}`,\n })}\n </div>\n </SimpleDialog>\n );\n});\n","import { forwardRef, SVGProps, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport {\n Button,\n Flex,\n Grid,\n DataTable,\n cn,\n Badge,\n TokenIcon,\n Tooltip,\n Text,\n} from \"@orderly.network/ui\";\nimport {\n ScaledOrderConfirmScriptOptions,\n ScaledOrderConfirmScriptReturns,\n} from \"./scaledOrderConfirm.script\";\n\nexport type ScaledOrderConfirmProps = ScaledOrderConfirmScriptOptions &\n ScaledOrderConfirmScriptReturns & {\n close?: () => void;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n };\n\nexport const ScaledOrderConfirm = (props: ScaledOrderConfirmProps) => {\n const { order, symbolInfo, dataSource, national, askAndBid, totalQuantity } =\n props;\n const { base, quote, base_dp, quote_dp } = symbolInfo;\n const { t } = useTranslation();\n\n const onCancel = () => {\n props.reject();\n props.close?.();\n };\n\n const onConfirm = () => {\n props.resolve();\n props.close?.();\n };\n\n const columns = useMemo(() => {\n return [\n {\n title: t(\"common.symbol\"),\n dataIndex: \"symbol\",\n width: 125,\n render: (value: string, record: any) => {\n return (\n <Flex gap={2}>\n <div\n className={cn(\n \"oui-h-[38px] oui-w-1 oui-shrink-0 oui-rounded-[1px]\",\n record.side === OrderSide.BUY\n ? \"oui-bg-trade-profit\"\n : \"oui-bg-trade-loss\",\n )}\n />\n <Flex direction=\"column\" itemAlign=\"start\">\n <Flex gapX={1}>\n <TokenIcon symbol={value} className=\"oui-size-3\" />\n <Text.formatted\n rule=\"symbol\"\n size=\"xs\"\n formatString=\"base-type\"\n >\n {value}\n </Text.formatted>\n </Flex>\n\n <Badge color=\"neutral\" size=\"xs\">\n {t(\"orderEntry.orderType.limit\")}\n </Badge>\n </Flex>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.quantity\"),\n dataIndex: \"order_quantity\",\n width: 100,\n render: (value: string, record: any) => {\n return (\n <Text.numeral\n rule=\"price\"\n dp={base_dp}\n padding={false}\n color={record.side === OrderSide.BUY ? \"buy\" : \"sell\"}\n >\n {value}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.orderPrice\"),\n dataIndex: \"order_price\",\n width: 100,\n render: (value: string, record: any) => {\n // buy: limit_price_i >= ask0 , show warning.\n // sell: limit price <= bid0 , show warning.\n const showWarning = !!(record.side === OrderSide.BUY\n ? askAndBid?.[0] && Number(value) >= askAndBid?.[0]\n : askAndBid?.[1] && Number(value) <= askAndBid?.[1]);\n\n return (\n <Flex gapX={1}>\n <Text.numeral rule=\"price\" dp={quote_dp}>\n {value}\n </Text.numeral>\n\n {showWarning && (\n <Tooltip\n content={t(\n \"orderEntry.confirmScaledOrder.orderPrice.warning\",\n )}\n className=\"oui-w-[240px] oui-text-2xs oui-font-semibold oui-text-base-contrast-80\"\n >\n <TooltipIcon className=\"oui-text-warning-darken\" />\n </Tooltip>\n )}\n </Flex>\n );\n },\n },\n ];\n }, [t, symbolInfo, askAndBid, base_dp, quote_dp]);\n\n return (\n <div className=\"oui-orderEntry-scaledOrderConfirm oui-font-semibold\">\n <DataTable\n classNames={{\n root: cn(\n \"oui-scaledOrderConfirm-table\",\n \"oui-bg-base-7\",\n \"oui-rounded-lg\",\n // need to set overflow hidden because table header will avoid the border radius\n \"oui-overflow-hidden\",\n // \"oui-text-2xs lg:oui-text-xs\",\n // if orders is greater than 6, set the height to 320px to show scroll bar\n order.orders?.length >= 6 && \"oui-h-[320px]\",\n ),\n // set the min height of the table to show 2 rows\n scroll: \"!oui-min-h-[130px]\",\n }}\n dataSource={dataSource}\n columns={columns}\n bordered\n onRow={() => {\n return {\n className: cn(\"oui-h-[50px]\"),\n };\n }}\n />\n <div className=\"oui-scaledOrderConfirm-content oui-mb-5 oui-mt-4 oui-text-2xs\">\n <Flex justify=\"between\">\n <Text>{t(\"orderEntry.totalOrders\")}</Text>\n <Text intensity={80}>{order.orders?.length}</Text>\n </Flex>\n\n <Flex justify=\"between\" mt={2}>\n <Text>{t(\"orderEntry.totalQuantity\")}</Text>\n <Text.numeral\n rule=\"price\"\n unit={base}\n dp={base_dp}\n padding={false}\n intensity={80}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalQuantity}\n </Text.numeral>\n </Flex>\n\n <Flex justify=\"between\" mt={2}>\n <Text>{t(\"common.notional\")}</Text>\n <Text.numeral\n rule=\"price\"\n unit={quote}\n dp={quote_dp}\n padding={false}\n intensity={80}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {national}\n </Text.numeral>\n </Flex>\n </div>\n\n <Grid cols={2} gapX={3}>\n <Button\n color={\"secondary\"}\n size={\"md\"}\n className=\"oui-scaledOrderConfirm-cancel-btn\"\n onClick={onCancel}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n size={\"md\"}\n className=\"oui-scaledOrderConfirm-confirm-btn\"\n onClick={onConfirm}\n >\n {t(\"common.confirm\")}\n </Button>\n </Grid>\n </div>\n );\n};\n\nexport const TooltipIcon = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n width=\"12\"\n height=\"13\"\n viewBox=\"0 0 12 13\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...props}\n >\n <path d=\"M5.99951 1.50708C3.23811 1.50708 0.999512 3.74558 0.999512 6.50708C0.999512 9.26858 3.23811 11.5071 5.99951 11.5071C8.76091 11.5071 10.9995 9.26858 10.9995 6.50708C10.9995 3.74558 8.76091 1.50708 5.99951 1.50708ZM5.99951 4.00708C6.27566 4.00708 6.49951 4.23108 6.49951 4.50708C6.49951 4.78308 6.27566 5.00708 5.99951 5.00708C5.72336 5.00708 5.49951 4.78308 5.49951 4.50708C5.49951 4.23108 5.72336 4.00708 5.99951 4.00708ZM5.99951 5.50708C6.27566 5.50708 6.49951 5.73108 6.49951 6.00708V8.50708C6.49951 8.78308 6.27566 9.00708 5.99951 9.00708C5.72336 9.00708 5.49951 8.78308 5.49951 8.50708V6.00708C5.49951 5.73108 5.72336 5.50708 5.99951 5.50708Z\" />\n </svg>\n );\n },\n);\n","import { useEffect, useState } from \"react\";\nimport { useDebouncedCallback, useEventEmitter } from \"@orderly.network/hooks\";\n\nexport function useAskAndBid() {\n const ee = useEventEmitter();\n\n const [askAndBid, setAskAndBid] = useState<[number, number]>([0, 0]);\n\n const onOrderBookUpdate = useDebouncedCallback((data: any) => {\n const ask0 = data.asks?.[data.asks.length - 1]?.[0];\n const bid0 = data.bids?.[0]?.[0];\n setAskAndBid([ask0, bid0]);\n }, 200);\n\n useEffect(() => {\n ee.on(\"orderbook:update\", onOrderBookUpdate);\n return () => {\n ee.off(\"orderbook:update\", onOrderBookUpdate);\n onOrderBookUpdate.cancel();\n };\n }, [onOrderBookUpdate]);\n\n return askAndBid;\n}\n","import { useMemo } from \"react\";\nimport { API, OrderlyOrder } from \"@orderly.network/types\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { useAskAndBid } from \"../../../hooks/useAskAndBid\";\n\nexport type ScaledOrderConfirmScriptOptions = {\n order: OrderlyOrder & {\n orders: OrderlyOrder[];\n };\n symbolInfo: API.SymbolExt;\n};\n\nexport type ScaledOrderConfirmScriptReturns = ReturnType<\n typeof useScaledOrderConfirmScript\n>;\n\nexport function useScaledOrderConfirmScript(\n options: ScaledOrderConfirmScriptOptions,\n) {\n const { order, symbolInfo } = options;\n const orders = order.orders;\n\n const askAndBid = useAskAndBid();\n\n const national = useMemo(() => {\n const national = orders.reduce((acc, order) => {\n return acc.add(new Decimal(order.order_price).mul(order.order_quantity));\n }, zero);\n\n return national.toNumber();\n }, [orders]);\n\n const totalQuantity = useMemo(() => {\n const totalQuantity = orders.reduce((acc, order) => {\n return acc.add(new Decimal(order.order_quantity));\n }, zero);\n\n return totalQuantity.toString();\n }, [orders, symbolInfo.base_dp]);\n\n return { dataSource: orders, national, askAndBid, totalQuantity };\n}\n","import { FC } from \"react\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { registerSimpleDialog } from \"@orderly.network/ui\";\nimport { useScaledOrderConfirmScript } from \"./scaledOrderConfirm.script\";\nimport {\n ScaledOrderConfirm,\n ScaledOrderConfirmProps,\n} from \"./scaledOrderConfirm.ui\";\n\nexport type ScaledOrderConfirmWidgetProps = ScaledOrderConfirmProps;\n\nexport const ScaledOrderConfirmWidget: FC<ScaledOrderConfirmWidgetProps> = (\n props,\n) => {\n const state = useScaledOrderConfirmScript(props);\n\n return <ScaledOrderConfirm {...props} {...state} />;\n};\n\nexport const scaledOrderConfirmDialogId = \"scaledOrderConfirm\";\n\nregisterSimpleDialog(scaledOrderConfirmDialogId, ScaledOrderConfirmWidget, {\n size: \"md\",\n title: () => i18n.t(\"orderEntry.confirmScaledOrder\"),\n contentProps: {\n // className: \"oui-p-0\",\n },\n});\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide, OrderType } from \"@orderly.network/types\";\nimport { cn, Select, Text } from \"@orderly.network/ui\";\n\nexport const OrderTypeSelect = (props: {\n type: OrderType;\n onChange: (type: OrderType) => void;\n side: OrderSide;\n canTrade: boolean;\n}) => {\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n { label: t(\"orderEntry.orderType.limitOrder\"), value: OrderType.LIMIT },\n { label: t(\"orderEntry.orderType.marketOrder\"), value: OrderType.MARKET },\n {\n label: t(\"orderEntry.orderType.stopLimit\"),\n value: OrderType.STOP_LIMIT,\n },\n {\n label: t(\"orderEntry.orderType.stopMarket\"),\n value: OrderType.STOP_MARKET,\n },\n {\n label: t(\"orderEntry.orderType.scaledOrder\"),\n value: OrderType.SCALED,\n },\n {\n label: t(\"orderEntry.orderType.trailingStop\"),\n value: OrderType.TRAILING_STOP,\n },\n ];\n }, [t]);\n\n const displayLabelMap = useMemo(() => {\n return {\n [OrderType.LIMIT]: t(\"orderEntry.orderType.limit\"),\n [OrderType.MARKET]: t(\"common.marketPrice\"),\n [OrderType.STOP_LIMIT]: t(\"orderEntry.orderType.stopLimit\"),\n [OrderType.STOP_MARKET]: t(\"orderEntry.orderType.stopMarket\"),\n [OrderType.SCALED]: t(\"orderEntry.orderType.scaledOrder\"),\n [OrderType.TRAILING_STOP]: t(\"orderEntry.orderType.trailingStop\"),\n };\n }, [t]);\n\n return (\n <Select.options\n testid=\"oui-testid-orderEntry-orderType-button\"\n currentValue={props.type}\n value={props.type}\n options={options}\n onValueChange={props.onChange}\n contentProps={{\n className: cn(\n \"oui-orderEntry-orderTypeSelect-content\",\n \"oui-bg-base-8\",\n ),\n }}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-orderTypeSelect-btn\",\n \"oui-bg-base-6 oui-border-line\",\n ),\n }}\n valueFormatter={(value, option) => {\n const item = options.find((o) => o.value === value);\n if (!item) {\n return <Text size={\"xs\"}>{option.placeholder}</Text>;\n }\n\n const label = displayLabelMap[value as keyof typeof displayLabelMap];\n\n return (\n <Text\n size={\"xs\"}\n color={\n props.canTrade\n ? props.side === OrderSide.BUY\n ? \"buy\"\n : \"sell\"\n : undefined\n }\n >\n {label}\n </Text>\n );\n }}\n size={\"md\"}\n />\n );\n};\n","import { useSymbolLeverage } from \"@orderly.network/hooks\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { cn, Flex, modal, Text, useScreen } from \"@orderly.network/ui\";\nimport {\n SymbolLeverageDialogId,\n SymbolLeverageSheetId,\n} from \"@orderly.network/ui-leverage\";\nimport { Decimal } from \"@orderly.network/utils\";\n\ntype LeverageBadgeProps = {\n symbol: string;\n side: OrderSide;\n symbolLeverage?: number;\n};\n\nexport const LeverageBadge = (props: LeverageBadgeProps) => {\n const { symbol, side, symbolLeverage } = props;\n const { isMobile } = useScreen();\n const { maxLeverage } = useSymbolLeverage(symbol);\n\n const curLeverage = symbolLeverage || maxLeverage;\n\n const showModal = () => {\n const modalId = isMobile ? SymbolLeverageSheetId : SymbolLeverageDialogId;\n modal.show(modalId, {\n symbol,\n side,\n curLeverage,\n });\n };\n\n return (\n <Flex\n justify=\"center\"\n itemAlign=\"center\"\n gapX={1}\n className={cn(\n \"oui-orderEntry-leverage-btn\",\n \"oui-h-8\",\n \"oui-rounded oui-border oui-border-line oui-bg-base-6\",\n \"oui-cursor-pointer oui-select-none oui-text-xs oui-font-semibold oui-text-base-contrast-54\",\n )}\n onClick={showModal}\n >\n <Text>Cross</Text>\n <Text.numeral dp={0} rm={Decimal.ROUND_DOWN} unit=\"X\">\n {curLeverage}\n </Text.numeral>\n </Flex>\n );\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderlyOrder, OrderSide, OrderType } from \"@orderly.network/types\";\nimport { Button, cn } from \"@orderly.network/ui\";\nimport { OrderTypeSelect } from \"../orderTypeSelect\";\nimport { LeverageBadge } from \"./LeverageBadge\";\n\ntype OrderEntryHeaderProps = {\n symbol: string;\n side: OrderSide;\n canTrade: boolean;\n order_type: OrderType;\n setOrderValue: (key: keyof OrderlyOrder, value: any) => void;\n symbolLeverage?: number;\n};\n\nexport function OrderEntryHeader(props: OrderEntryHeaderProps) {\n const { canTrade, side, order_type, setOrderValue } = props;\n const { t } = useTranslation();\n\n return (\n <>\n <div\n className={cn(\n \"oui-orderEntry-side\",\n \"oui-grid oui-w-full oui-flex-1 oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]\",\n \"oui-grid-cols-2\",\n )}\n >\n <Button\n onClick={() => {\n props.setOrderValue(\"side\", OrderSide.BUY);\n }}\n size={\"md\"}\n fullWidth\n data-type={OrderSide.BUY}\n className={cn(\n \"oui-orderEntry-side-buy-btn\",\n side === OrderSide.BUY && canTrade\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 props.setOrderValue(\"side\", OrderSide.SELL);\n }}\n data-type={OrderSide.SELL}\n fullWidth\n size={\"md\"}\n className={cn(\n \"oui-orderEntry-side-sell-btn\",\n side === OrderSide.SELL && props.canTrade\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 </div>\n <div\n className={cn(\n \"oui-orderEntry-header-controls\",\n \"oui-grid oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]\",\n \"oui-grid-cols-2\",\n )}\n >\n <div className=\"oui-w-full oui-orderEntry-orderTypeSelect\">\n <OrderTypeSelect\n type={order_type!}\n side={side}\n canTrade={canTrade}\n onChange={(type) => {\n setOrderValue(\"order_type\", type);\n }}\n />\n </div>\n <div className=\"oui-w-full oui-orderEntry-leverage\">\n <LeverageBadge\n symbol={props.symbol}\n side={props.side}\n symbolLeverage={props.symbolLeverage}\n />\n </div>\n </div>\n </>\n );\n}\n","import {\n createContext,\n FocusEventHandler,\n useContext,\n RefObject,\n MutableRefObject,\n} from \"react\";\nimport { OrderValidationResult } from \"@orderly.network/hooks\";\nimport { API, OrderlyOrder } from \"@orderly.network/types\";\nimport { InputType, QuantityInputType } from \"../types\";\n\nexport type OrderEntryContextState = {\n errors: OrderValidationResult | null;\n errorMsgVisible: boolean;\n symbolInfo: API.SymbolExt;\n onFocus: (type: InputType) => FocusEventHandler;\n onBlur: (type: InputType) => FocusEventHandler;\n getErrorMsg: (\n key: keyof OrderValidationResult,\n customValue?: string,\n ) => string;\n setOrderValue: (key: keyof OrderlyOrder, value: any) => void;\n setOrderValues: (values: Partial<OrderlyOrder>) => void;\n currentFocusInput: InputType;\n // refs\n priceInputRef: RefObject<HTMLInputElement>;\n priceInputContainerRef: RefObject<HTMLDivElement>;\n triggerPriceInputRef: RefObject<HTMLInputElement>;\n activatedPriceInputRef: RefObject<HTMLInputElement>;\n lastQuantityInputType: MutableRefObject<InputType>;\n leverage?: number;\n};\n\nexport const OrderEntryContext = createContext<OrderEntryContextState>(\n {} as OrderEntryContextState,\n);\n\nexport const useOrderEntryContext = () => {\n return useContext(OrderEntryContext);\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { OrderEntryContext, OrderEntryContextState } from \"./orderEntryContext\";\n\nexport const OrderEntryProvider: FC<\n PropsWithChildren<OrderEntryContextState>\n> = (props) => {\n const {\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n } = props;\n\n const memoizedValue = useMemo<OrderEntryContextState>(() => {\n return {\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n // refs\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n };\n }, [\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n ]);\n\n return (\n <OrderEntryContext.Provider value={memoizedValue}>\n {props.children}\n </OrderEntryContext.Provider>\n );\n};\n","import { forwardRef, PropsWithChildren, ReactNode } from \"react\";\nimport { EMPTY_LIST } from \"@orderly.network/types\";\nimport { cn, inputFormatter, Input, InputProps } from \"@orderly.network/ui\";\nimport { useOrderEntryContext } from \"../orderEntryContext\";\n\nexport type CustomInputProps = {\n label: string;\n suffix?: ReactNode;\n placeholder?: string;\n id: string;\n className?: string;\n name?: string;\n onChange?: (value: string) => void;\n value?: InputProps[\"value\"];\n autoFocus?: InputProps[\"autoFocus\"];\n error?: string;\n onFocus?: InputProps[\"onFocus\"];\n onBlur?: InputProps[\"onBlur\"];\n formatters?: InputProps[\"formatters\"];\n overrideFormatters?: InputProps[\"formatters\"];\n classNames?: InputProps[\"classNames\"];\n readonly?: boolean;\n prefix?: ReactNode;\n};\n\nexport const CustomInput = forwardRef<HTMLInputElement, CustomInputProps>(\n (props, ref) => {\n const { placeholder = \"0\" } = props;\n const { errorMsgVisible } = useOrderEntryContext();\n\n return (\n <Input.tooltip\n ref={ref}\n tooltip={errorMsgVisible ? props.error : undefined}\n autoComplete={\"off\"}\n autoFocus={props.autoFocus}\n size={\"lg\"}\n placeholder={props.readonly ? \"\" : placeholder}\n id={props.id}\n name={props.name}\n color={props.error ? \"danger\" : undefined}\n prefix={\n props.prefix || (\n <InputLabel id={props.id} className={props.classNames?.prefix}>\n {props.label}\n </InputLabel>\n )\n }\n suffix={props.suffix}\n value={props.readonly ? \"\" : props.value || \"\"}\n // onChange={props.onChange}\n onValueChange={props.onChange}\n onFocus={(event) => {\n props.onFocus?.(event);\n }}\n onBlur={(event) => {\n props.onBlur?.(event);\n }}\n formatters={\n props.overrideFormatters || [\n ...(props.formatters ?? EMPTY_LIST),\n inputFormatter.numberFormatter,\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]\n }\n classNames={{\n root: cn(\n \"oui-orderEntry-customInput orderly-order-entry oui-relative oui-h-[54px] oui-rounded oui-border oui-border-solid oui-border-line oui-px-2 oui-py-1 group-first:oui-rounded-t-xl group-last:oui-rounded-b-xl\",\n props.error\n ? \"oui-border-transparent\"\n : \"focus-within:oui-border-transparent\",\n props.className,\n props.classNames?.root,\n ),\n input: cn(\"oui-mb-1 oui-mt-5 oui-h-5\", props?.classNames?.input),\n // prefix: cn(props.classNames?.prefix),\n suffix: cn(\n \"oui-absolute oui-right-0 oui-top-0 oui-justify-start oui-py-2 oui-text-2xs oui-text-base-contrast-36\",\n props.classNames?.suffix,\n ),\n }}\n readOnly={props.readonly}\n />\n );\n },\n);\n\nCustomInput.displayName = \"CustomInput\";\n\nconst InputLabel = (\n props: PropsWithChildren<{ id: string; className?: string }>,\n) => {\n return (\n <label\n htmlFor={props.id}\n className={cn(\n \"oui-input-label oui-absolute oui-left-2 oui-top-[7px] oui-text-2xs oui-text-base-contrast-36\",\n props.className,\n )}\n >\n {props.children}\n </label>\n );\n};\n","import { CSSProperties, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { BBOOrderType } from \"@orderly.network/types\";\nimport { Box, cn, Select, Text } from \"@orderly.network/ui\";\n\nexport const BBOOrderTypeSelect = (props: {\n value?: BBOOrderType;\n onChange: (value: BBOOrderType) => void;\n contentStyle?: CSSProperties;\n}) => {\n const { t } = useTranslation();\n\n const options = useMemo(\n () => [\n {\n label: t(\"orderEntry.bbo.counterparty1\"),\n value: BBOOrderType.COUNTERPARTY1,\n },\n {\n label: t(\"orderEntry.bbo.counterparty5\"),\n value: BBOOrderType.COUNTERPARTY5,\n },\n {\n label: t(\"orderEntry.bbo.queue1\"),\n value: BBOOrderType.QUEUE1,\n },\n {\n label: t(\"orderEntry.bbo.queue5\"),\n value: BBOOrderType.QUEUE5,\n },\n ],\n [],\n );\n\n return (\n <Select.options\n testid=\"oui-testid-orderEntry-bbo-orderType-button\"\n currentValue={props.value}\n value={props.value}\n options={options}\n onValueChange={props.onChange}\n contentProps={{\n className: cn(\n \"oui-orderEntry-bboOrderTypeSelect-content\",\n \"oui-bg-base-8 oui-w-full\",\n ),\n style: props.contentStyle,\n }}\n size={\"sm\"}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-bboOrderTypeSelect-btn\",\n \"oui-border-none oui-bg-transparent\",\n ),\n }}\n valueFormatter={(value, option) => {\n const item = options.find((item) => item.value === value);\n\n return (\n <Box>\n <Text size=\"sm\">{item?.label}</Text>\n </Box>\n );\n }}\n />\n );\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, cn, modal, Text } from \"@orderly.network/ui\";\nimport { OrderEntryScriptReturn } from \"../../../orderEntry.script\";\nimport { BBOStatus } from \"../../../utils\";\n\ntype LimitPriceSuffixProps = {\n quote: string;\n bbo: Pick<\n OrderEntryScriptReturn,\n \"bboStatus\" | \"bboType\" | \"onBBOChange\" | \"toggleBBO\"\n >;\n fillMiddleValue: OrderEntryScriptReturn[\"fillMiddleValue\"];\n};\n\nexport const LimitPriceSuffix = (props: LimitPriceSuffixProps) => {\n const { quote, bbo, fillMiddleValue } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"end\"\n className={cn(\"oui-orderEntry-limitPrice-suffix\", \"oui-text-2xs\")}\n >\n {quote}\n <Flex justify={\"end\"} itemAlign=\"center\" gap={2}>\n <Flex\n px={3}\n height={20}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"base\"\n className={cn(\n \"oui-orderEntry-bboToggle\",\n \"oui-mt-[2px] oui-cursor-pointer oui-select-none oui-border\",\n bbo.bboStatus === BBOStatus.ON\n ? \"oui-border-primary\"\n : \"oui-border-line-12\",\n bbo.bboStatus === BBOStatus.DISABLED && \"oui-cursor-not-allowed\",\n )}\n onClick={() => {\n if (bbo.bboStatus === BBOStatus.DISABLED) {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"xs\",\n content: (\n <Text intensity={54}>\n {t(\"orderEntry.bbo.disabled.tips\")}\n </Text>\n ),\n });\n } else {\n bbo.toggleBBO();\n }\n }}\n >\n <Text\n className={cn(\n \"oui-orderEntry-bboToggle-label\",\n bbo.bboStatus === BBOStatus.ON && \"oui-text-primary\",\n bbo.bboStatus === BBOStatus.OFF && \"oui-text-base-contrast-54\",\n bbo.bboStatus === BBOStatus.DISABLED &&\n \"oui-text-base-contrast-20\",\n )}\n >\n {t(\"orderEntry.bbo\")}\n </Text>\n </Flex>\n <Text\n className={cn(\n \"oui-orderEntry-midPrice-btn\",\n \"oui-select-none\",\n \"oui-cursor-pointer oui-text-primary\",\n )}\n onClick={fillMiddleValue}\n >\n Mid\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { cn, inputFormatter } from \"@orderly.network/ui\";\nimport { OrderEntryScriptReturn } from \"../../../orderEntry.script\";\nimport { InputType } from \"../../../types\";\nimport { BBOStatus } from \"../../../utils\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { BBOOrderTypeSelect } from \"./bboOrderTypeSelect\";\nimport { LimitPriceSuffix } from \"./limitPriceSuffix\";\n\nexport type PriceInputProps = {\n order_type: OrderType;\n order_price?: string;\n bbo: Pick<\n OrderEntryScriptReturn,\n \"bboStatus\" | \"bboType\" | \"onBBOChange\" | \"toggleBBO\"\n >;\n priceInputContainerWidth?: number;\n fillMiddleValue: OrderEntryScriptReturn[\"fillMiddleValue\"];\n};\n\n// TODO: memo component\nexport const PriceInput: FC<PriceInputProps> = (props) => {\n const { bbo } = props;\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n priceInputRef,\n priceInputContainerRef,\n } = useOrderEntryContext();\n\n const { quote, quote_dp } = symbolInfo;\n\n const readOnly = bbo.bboStatus === BBOStatus.ON;\n\n const suffix =\n props.order_type === OrderType.LIMIT ? (\n <LimitPriceSuffix\n quote={quote}\n bbo={bbo}\n fillMiddleValue={props.fillMiddleValue}\n />\n ) : (\n quote\n );\n\n return (\n <div\n ref={priceInputContainerRef}\n className=\"oui-orderEntry-priceInput-container oui-group oui-relative oui-w-full\"\n >\n <CustomInput\n id=\"order_price_input\"\n name=\"order_price_input\"\n label={t(\"common.price\")}\n suffix={suffix}\n value={props.order_price}\n className=\"oui-orderEntry-priceInput\"\n onChange={(e) => {\n setOrderValue(\"order_price\", e);\n }}\n error={getErrorMsg(\"order_price\")}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.PRICE)}\n onBlur={onBlur(InputType.PRICE)}\n readonly={readOnly}\n ref={priceInputRef}\n classNames={{\n root: cn(readOnly && \"focus-within:oui-outline-transparent \"),\n input: cn(readOnly && \"oui-cursor-auto\"),\n }}\n />\n {bbo.bboStatus === BBOStatus.ON && (\n <div\n className={cn(\n \"oui-orderEntry-bboSelect\",\n \"oui-absolute oui-bottom-1 oui-left-0\",\n )}\n >\n <BBOOrderTypeSelect\n value={bbo.bboType}\n onChange={bbo.onBBOChange}\n contentStyle={{\n width: props.priceInputContainerWidth,\n }}\n />\n </div>\n )}\n </div>\n );\n};\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype QuantityInputProps = {\n order_quantity?: string;\n};\n\nexport const QuantityInput: FC<QuantityInputProps> = memo((props) => {\n const { t } = useTranslation();\n\n const { symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const { base, base_dp } = symbolInfo;\n\n return (\n <CustomInput\n id=\"order_quantity_input\"\n name=\"order_quantity_input\"\n label={t(\"common.qty\")}\n suffix={base}\n error={getErrorMsg(\"order_quantity\")}\n value={props.order_quantity}\n onChange={(e) => {\n setOrderValue(\"order_quantity\", e);\n }}\n formatters={[inputFormatter.dpFormatter(base_dp)]}\n onFocus={onFocus(InputType.QUANTITY)}\n onBlur={onBlur(InputType.QUANTITY)}\n className=\"oui-orderEntry-quantityInput !oui-rounded-r\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n />\n );\n});\n\nQuantityInput.displayName = \"QuantityInput\";\n","import { FC, memo, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Select } from \"@orderly.network/ui\";\n\nexport enum OrderTotalType {\n OrderSize = \"orderSize\",\n InitialMargin = \"initialMargin\",\n}\n\ntype TotalTypeSelectProps = {\n value: OrderTotalType;\n onChange: (value: OrderTotalType) => void;\n};\n\nexport const TotalTypeSelect: FC<TotalTypeSelectProps> = memo((props) => {\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n {\n label: t(\"orderEntry.orderSize\"),\n value: OrderTotalType.OrderSize,\n },\n {\n label: t(\"orderEntry.initialMargin\"),\n value: OrderTotalType.InitialMargin,\n },\n ];\n }, [t]);\n\n return (\n <Select.options\n size={\"xs\"}\n value={props.value}\n valueFormatter={(value, option) => {\n const item = options.find((o) => o.value === value);\n return item?.label + \"≈\";\n }}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-totalTypeSelect-btn\",\n \"oui-w-auto oui-border-none oui-bg-transparent oui-shadow-none\",\n \"oui-absolute oui-left-0 oui-top-[5px] oui-text-2xs oui-text-base-contrast-36\",\n ),\n }}\n onValueChange={props.onChange}\n options={options}\n />\n );\n});\n\nTotalTypeSelect.displayName = \"TotalTypeSelect\";\n","import { FC, memo, useEffect, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { OrderTotalType, TotalTypeSelect } from \"./totalTypeSelect\";\n\ntype TotalInputProps = {\n total?: string;\n};\n\n/**\n * order size = order size (notional) = quantity * price\n * Initial margin = order size / leverage = quantity * price / leverage\n * Order size = Initial margin * leverage = quantity * price\n */\nexport const TotalInput: FC<TotalInputProps> = memo((props) => {\n const { t } = useTranslation();\n const { total } = props;\n\n const [margin, setMargin] = useState(\"\");\n\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n leverage = 1,\n currentFocusInput,\n } = useOrderEntryContext();\n\n const { quote } = symbolInfo;\n\n const [totalType, setTotalType] = useLocalStorage<OrderTotalType>(\n \"orderly_order_total_type\",\n OrderTotalType.OrderSize,\n );\n\n useEffect(() => {\n if (total) {\n if (currentFocusInput !== InputType.MARGIN) {\n const margin = new Decimal(total).div(leverage).todp(2).toString();\n setMargin(margin);\n }\n } else {\n setMargin(\"\");\n }\n }, [total, leverage, currentFocusInput]);\n\n const onMarginChange = (val: string) => {\n const total = val ? new Decimal(val).mul(leverage).toString() : \"\";\n setOrderValue(\"total\", total);\n setMargin(val);\n };\n\n const prefix = <TotalTypeSelect value={totalType} onChange={setTotalType} />;\n\n if (totalType === OrderTotalType.InitialMargin) {\n return (\n <CustomInput\n id=\"order_margin_input\"\n name=\"order_margin_input\"\n label={`${t(\"orderEntry.initialMargin\")}≈`}\n prefix={prefix}\n suffix={quote}\n error={getErrorMsg(\"total\") ? \"initial margin error\" : \"\"}\n value={margin}\n onChange={onMarginChange}\n // national precision is 2\n formatters={[inputFormatter.dpFormatter(2)]}\n onFocus={onFocus(InputType.MARGIN)}\n onBlur={onBlur(InputType.MARGIN)}\n className=\"oui-orderEntry-marginInput !oui-rounded-l\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n />\n );\n }\n\n return (\n <CustomInput\n id=\"order_total_input\"\n name=\"order_total_input\"\n label={`${t(\"orderEntry.orderSize\")}≈`}\n prefix={prefix}\n suffix={quote}\n error={getErrorMsg(\"total\")}\n value={props.total}\n onChange={(val) => {\n setOrderValue(\"total\", val);\n }}\n className=\"oui-orderEntry-totalInput !oui-rounded-l\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n // national precision is 2\n formatters={[inputFormatter.dpFormatter(2)]}\n onFocus={onFocus(InputType.TOTAL)}\n onBlur={onBlur(InputType.TOTAL)}\n />\n );\n});\n\nTotalInput.displayName = \"TotalInput\";\n","import { FC, memo } from \"react\";\nimport { Grid } from \"@orderly.network/ui\";\nimport { QuantityInput } from \"./quantityInput\";\nimport { TotalInput } from \"./totalInput\";\n\ntype QtyAndTotalInputProps = {\n order_quantity?: string;\n total?: string;\n};\n\nexport const QtyAndTotalInput: FC<QtyAndTotalInputProps> = memo((props) => {\n return (\n <Grid\n cols={2}\n className=\"oui-orderEntry-qtyAndTotal oui-group oui-space-x-1\"\n >\n <QuantityInput order_quantity={props.order_quantity} />\n <TotalInput total={props.total} />\n </Grid>\n );\n});\n\nQtyAndTotalInput.displayName = \"QtyAndTotalInput\";\n","import { FC, memo, useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { DistributionType } from \"@orderly.network/types\";\nimport { Box, Checkbox, cn, Flex, modal, Text } from \"@orderly.network/ui\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\nexport type QuantityDistributionInputProps = {\n distribution_type?: DistributionType;\n className?: string;\n};\n\nexport const QuantityDistributionInput: FC<QuantityDistributionInputProps> =\n memo((props) => {\n const { t } = useTranslation();\n const { setOrderValue } = useOrderEntryContext();\n\n const showHint = () => {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"sm\",\n content: <QuantityDistributionHint value={props.distribution_type} />,\n // classNames: {\n // content: \"oui-bg-base-6\",\n // },\n });\n };\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n justify=\"center\"\n p={2}\n r=\"base\"\n // gapY={1}\n width=\"100%\"\n intensity={600}\n className={cn(\n \"oui-orderEntry-quantityDistribution\",\n \"oui-t-rounded oui-text-base-contrast-36\",\n \"oui-border oui-border-solid oui-border-line\",\n props.className,\n )}\n >\n <Text\n size=\"2xs\"\n className=\"oui-quantityDistribution-hint oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n onClick={showHint}\n >\n {t(\"orderEntry.quantityDistribution\")}\n </Text>\n <QuantityDistribution\n value={props.distribution_type}\n onValueChange={(value) => {\n setOrderValue(\"distribution_type\", value);\n }}\n />\n </Flex>\n );\n });\n\ntype QuantityDistributionHintProps = {\n value?: DistributionType;\n};\n\nconst QuantityDistributionHint: FC<QuantityDistributionHintProps> = (props) => {\n const { t } = useTranslation();\n const [type, setType] = useState(DistributionType.FLAT);\n\n useEffect(() => {\n setType(\n [\n DistributionType.FLAT,\n DistributionType.ASCENDING,\n DistributionType.DESCENDING,\n ].includes(props.value!)\n ? props.value!\n : DistributionType.FLAT,\n );\n }, [props.value]);\n\n const content = useMemo(() => {\n return [\n {\n type: DistributionType.FLAT,\n title: t(\"orderEntry.distributionType.flat\"),\n description: t(\"orderEntry.distributionType.flat.description\"),\n formula: `${t(\"orderEntry.skew\")} = 1`,\n quantity: <FlatQuantity />,\n },\n {\n type: DistributionType.ASCENDING,\n title: t(\"orderEntry.distributionType.ascending\"),\n description: t(\"orderEntry.distributionType.ascending.description\"),\n formula: `${t(\"orderEntry.skew\")} > 1`,\n quantity: <AscendingQuantity />,\n },\n {\n type: DistributionType.DESCENDING,\n title: t(\"orderEntry.distributionType.descending\"),\n description: t(\"orderEntry.distributionType.descending.description\"),\n formula: `0 < ${t(\"orderEntry.skew\")} < 1`,\n quantity: <DescendingQuantity />,\n },\n ];\n }, []);\n\n const currentContent = useMemo(() => {\n return content.find((item) => item.type === type);\n }, [content, type]);\n\n return (\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-54\">\n <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n <Text intensity={80}>\n {t(\"orderEntry.quantityDistribution.description\")}\n </Text>\n <Text>{t(\"orderEntry.quantityDistribution.formula\")}</Text>\n </Flex>\n <Flex intensity={600} p={1} r=\"base\" mt={3} itemAlign=\"start\">\n <Flex direction=\"column\" itemAlign=\"start\">\n {content.map((item) => (\n <Box\n key={item.title}\n intensity={type === item.type ? 500 : 600}\n width={78}\n p={2}\n className=\"oui-cursor-pointer oui-rounded-l\"\n onClick={() => {\n setType(item.type);\n }}\n >\n <Text>{item.title}</Text>\n </Box>\n ))}\n </Flex>\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n gapY={1}\n p={2}\n intensity={500}\n width=\"100%\"\n className={cn(\n \"oui-rounded-r\",\n type === DistributionType.FLAT && \"oui-rounded-bl\",\n type === DistributionType.ASCENDING && \"oui-rounded-l\",\n type === DistributionType.DESCENDING && \"oui-rounded-tl\",\n )}\n >\n <div>{currentContent?.formula}</div>\n <Text>{currentContent?.description}</Text>\n <Flex width=\"100%\" justify=\"center\">\n {currentContent?.quantity}\n </Flex>\n <Flex width=\"100%\" gapX={1} justify=\"center\">\n <Text className=\"oui-text-base-1\">{t(\"common.price\")}</Text>\n <PriceChart />\n </Flex>\n </Flex>\n </Flex>\n </div>\n );\n};\n\ntype QuantityDistributionProps = {\n value?: DistributionType;\n onValueChange: (value: DistributionType) => void;\n};\n\nconst QuantityDistribution: FC<QuantityDistributionProps> = (props) => {\n const { value, onValueChange } = props;\n const { t } = useTranslation();\n\n const onChange = (value: DistributionType) => (checked: boolean) => {\n onValueChange(value);\n };\n\n const distributionTypeMap = useMemo(() => {\n return {\n [DistributionType.FLAT]: t(\"orderEntry.distributionType.flat\"),\n [DistributionType.ASCENDING]: t(\n \"orderEntry.distributionType.ascending.abbr\",\n ),\n [DistributionType.DESCENDING]: t(\n \"orderEntry.distributionType.descending.abbr\",\n ),\n [DistributionType.CUSTOM]: t(\"orderEntry.distributionType.custom\"),\n };\n }, [t]);\n\n return (\n <Flex\n className={cn(\n \"oui-orderEntry-quantityDistribution-options\",\n \"oui-gap-x-[6px] lg:oui-gap-x-2\",\n )}\n wrap=\"wrap\"\n >\n {Object.values(DistributionType).map((type) => {\n return (\n <Flex itemAlign={\"center\"} key={type}>\n <Checkbox\n id={`distribution-type-${type}`}\n color={\"white\"}\n variant={\"radio\"}\n className=\"oui-quantityDistribution-option-radio\"\n checked={value === type}\n onCheckedChange={onChange(type)}\n />\n <label\n htmlFor={`distribution-type-${type}`}\n className={cn(\n \"oui-quantityDistribution-option-label\",\n \"oui-text-2xs\",\n \"oui-ml-1\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {distributionTypeMap[type]}\n </label>\n </Flex>\n );\n })}\n </Flex>\n );\n};\n\nconst FlatQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"18\"\n y=\"18\"\n width=\"181\"\n height=\"4\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"15\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"62\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"109\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"156\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"203\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n </svg>\n );\n};\n\nconst AscendingQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"18\"\n y=\"18\"\n width=\"181\"\n height=\"4\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"15\"\n cy=\"20\"\n r=\"4.28571\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.42857\"\n />\n <circle\n cx=\"62\"\n cy=\"20\"\n r=\"5.14286\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.71429\"\n />\n <circle\n cx=\"109\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"156\"\n cy=\"20\"\n r=\"6.85714\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.28571\"\n />\n <circle\n cx=\"203\"\n cy=\"20\"\n r=\"7.71429\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.57143\"\n />\n </svg>\n );\n};\n\nconst DescendingQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n width=\"181\"\n height=\"4\"\n transform=\"matrix(-1 0 0 1 200 18)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"5\"\n cy=\"5\"\n r=\"4.28571\"\n transform=\"matrix(-1 0 0 1 208 15)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.42857\"\n />\n <circle\n cx=\"6\"\n cy=\"6\"\n r=\"5.14286\"\n transform=\"matrix(-1 0 0 1 162 14)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.71429\"\n />\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n transform=\"matrix(-1 0 0 1 116 13)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.85714\"\n transform=\"matrix(-1 0 0 1 70 12)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.28571\"\n />\n <circle\n cx=\"9\"\n cy=\"9\"\n r=\"7.71429\"\n transform=\"matrix(-1 0 0 1 24 11)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.57143\"\n />\n </svg>\n );\n};\n\nconst PriceChart = () => {\n return (\n <svg\n width=\"176\"\n height=\"8\"\n viewBox=\"0 0 176 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M175.354 4.35355C175.549 4.15829 175.549 3.84171 175.354 3.64645L172.172 0.464466C171.976 0.269204 171.66 0.269204 171.464 0.464466C171.269 0.659728 171.269 0.976311 171.464 1.17157L174.293 4L171.464 6.82843C171.269 7.02369 171.269 7.34027 171.464 7.53553C171.66 7.7308 171.976 7.7308 172.172 7.53553L175.354 4.35355ZM0 4V4.5H175V4V3.5H0V4Z\"\n fill=\"rgb(var(--oui-color-base-1))\"\n />\n </svg>\n );\n};\n","import { memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype ScaledPriceInputProps = {\n start_price?: string;\n end_price?: string;\n};\n\nexport const ScaledPriceInput = memo((props: ScaledPriceInputProps) => {\n const { t } = useTranslation();\n\n const { symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const { quote, quote_dp } = symbolInfo;\n\n return (\n <>\n <CustomInput\n label={t(\"orderEntry.startPrice\")}\n suffix={quote}\n id=\"order_start_price_input\"\n className=\"oui-orderEntry-scaledOrder-startPriceInput\"\n value={props.start_price}\n error={getErrorMsg(\"start_price\")}\n onChange={(e) => {\n setOrderValue(\"start_price\", e);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.START_PRICE)}\n onBlur={onBlur(InputType.START_PRICE)}\n classNames={{\n root: \"oui-rounded-t-xl\",\n }}\n />\n <CustomInput\n label={t(\"orderEntry.endPrice\")}\n suffix={quote}\n id=\"order_end_price_input\"\n className=\"oui-orderEntry-scaledOrder-endPriceInput\"\n value={props.end_price}\n error={getErrorMsg(\"end_price\")}\n onChange={(val) => {\n setOrderValue(\"end_price\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.END_PRICE)}\n onBlur={onBlur(InputType.END_PRICE)}\n />\n </>\n );\n});\n\nScaledPriceInput.displayName = \"ScaledPriceInput\";\n","import { FC, useMemo } from \"react\";\nimport { Select, Text, cn } from \"@orderly.network/ui\";\n\nexport type QuantityUnitProps = {\n base: string;\n quote: string;\n value: string;\n onValueChange: (value: string) => void;\n};\n\nconst valueRenderer = (value: string) => {\n return (\n <Text size=\"2xs\" intensity={36}>\n {value}\n </Text>\n );\n};\n\nexport const ScaledQuantityUnit: FC<QuantityUnitProps> = (props) => {\n const { base, quote } = props;\n\n const options = useMemo(() => {\n return [{ name: quote }, { name: base }];\n }, [base, quote]);\n\n return (\n <Select.tokens\n variant=\"text\"\n size=\"xs\"\n iconSize=\"2xs\"\n tokens={options}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-scaledQuantityUnit-btn\",\n \"oui-absolute oui-right-0 oui-top-1\",\n \"oui-w-full oui-justify-end\",\n \"oui-shadow-none\",\n ),\n }}\n value={props.value}\n onValueChange={props.onValueChange}\n valueFormatter={valueRenderer}\n contentProps={{\n align: \"end\",\n alignOffset: -1,\n sideOffset: -4,\n className: \"oui-border oui-border-line-6\",\n }}\n />\n );\n};\n","import { memo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { ScaledQuantityUnit } from \"./scaledQuantityUnit\";\n\ntype ScaledQuantityInputProps = {\n order_quantity?: string;\n total?: string;\n};\n\nexport const ScaledQuantityInput = memo((props: ScaledQuantityInputProps) => {\n const { t } = useTranslation();\n const { errors, symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const [quantityUnit, setQuantityUnit] = useLocalStorage<\"quote\" | \"base\">(\n \"orderly_order_quantity_unit\",\n \"quote\",\n );\n\n const { base, quote, base_dp, quote_dp } = symbolInfo;\n\n const isBase = quantityUnit === \"base\";\n const unit = isBase ? base : quote;\n\n const suffix = (\n <ScaledQuantityUnit\n base={base}\n quote={quote}\n value={unit}\n onValueChange={(value) => {\n setQuantityUnit(value === base ? \"base\" : \"quote\");\n }}\n />\n );\n\n if (isBase) {\n return (\n <CustomInput\n label={t(\"common.qty\")}\n suffix={suffix}\n id=\"order_quantity_input\"\n name=\"order_quantity_input\"\n className=\"oui-orderEntry-scaledOrder-quantityInput !oui-rounded-r\"\n value={props.order_quantity}\n error={getErrorMsg(\n \"order_quantity\",\n `${errors?.order_quantity?.value} ${base}`,\n )}\n onChange={(val) => {\n setOrderValue(\"order_quantity\", val);\n }}\n formatters={[inputFormatter.dpFormatter(base_dp)]}\n onFocus={onFocus(InputType.QUANTITY)}\n onBlur={onBlur(InputType.QUANTITY)}\n />\n );\n }\n\n return (\n <CustomInput\n label={t(\"common.qty\")}\n suffix={suffix}\n id=\"order_total_input\"\n name=\"order_total_input\"\n className=\"oui-orderEntry-scaledOrder-totalInput !oui-rounded-r\"\n value={props.total}\n error={getErrorMsg(\"order_quantity\", `${errors?.total?.value} ${quote}`)}\n onChange={(val) => {\n setOrderValue(\"total\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.TOTAL)}\n onBlur={onBlur(InputType.TOTAL)}\n />\n );\n});\n","import { memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype SkewInputProps = {\n skew?: string;\n};\n\nexport const SkewInput = memo((props: SkewInputProps) => {\n const { t } = useTranslation();\n\n const { onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n return (\n <CustomInput\n id=\"order_skew_input\"\n label={t(\"orderEntry.skew\")}\n className=\"oui-orderEntry-scaledOrder-skewInput\"\n value={props.skew}\n error={getErrorMsg(\"skew\")}\n onChange={(val) => {\n setOrderValue(\"skew\", val);\n }}\n onFocus={onFocus(InputType.SKEW)}\n onBlur={onBlur(InputType.SKEW)}\n overrideFormatters={[\n inputFormatter.rangeFormatter({ min: 0, max: 100, dp: 2 }),\n inputFormatter.dpFormatter(2),\n ]}\n classNames={{\n root: \"oui-rounded-b-xl\",\n }}\n />\n );\n});\n","import { memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype TotalOrdersInputProps = {\n total_orders?: string;\n};\n\nexport const TotalOrdersInput = memo((props: TotalOrdersInputProps) => {\n const { t } = useTranslation();\n const { onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n return (\n <CustomInput\n label={t(\"orderEntry.totalOrders\")}\n placeholder=\"2-20\"\n id=\"order_total_orders_input\"\n className={\"oui-orderEntry-scaledOrder-totalOrdersInput !oui-rounded-l\"}\n value={props.total_orders}\n error={getErrorMsg(\"total_orders\")}\n onChange={(val) => {\n setOrderValue(\"total_orders\", val);\n }}\n overrideFormatters={[\n // inputFormatter.rangeFormatter({ min: 2, max: 20 }),\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(0),\n ]}\n onFocus={onFocus(InputType.TOTAL_ORDERS)}\n onBlur={onBlur(InputType.TOTAL_ORDERS)}\n />\n );\n});\n","import { DistributionType, OrderlyOrder } from \"@orderly.network/types\";\nimport { cn, Grid } from \"@orderly.network/ui\";\nimport { QuantityDistributionInput } from \"./quantityDistributionInput\";\nimport { ScaledPriceInput } from \"./scaledPriceInput\";\nimport { ScaledQuantityInput } from \"./scaledQuantityInput\";\nimport { SkewInput } from \"./skewInput\";\nimport { TotalOrdersInput } from \"./totalOrdersInput\";\n\ntype ScaledOrderInputProps = {\n values: Partial<OrderlyOrder>;\n};\n\nexport const ScaledOrderInput = (props: ScaledOrderInputProps) => {\n const { values } = props;\n\n const showSkewInput = values.distribution_type === DistributionType.CUSTOM;\n\n return (\n <div className=\"oui-orderEntry-scaledOrderInput oui-space-y-1\">\n <ScaledPriceInput\n start_price={values.start_price}\n end_price={values.end_price}\n />\n\n <Grid\n cols={2}\n className=\"oui-scaledOrderInput-qtyAndOrders oui-group oui-space-x-1\"\n >\n <ScaledQuantityInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n <TotalOrdersInput total_orders={values.total_orders} />\n </Grid>\n\n <QuantityDistributionInput\n distribution_type={values.distribution_type}\n className={cn(!showSkewInput && \"oui-rounded-b-xl\")}\n />\n\n {showSkewInput && <SkewInput skew={values.skew} />}\n </div>\n );\n};\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype TriggerPriceInputProps = {\n trigger_price?: string;\n};\n\nexport const TriggerPriceInput: FC<TriggerPriceInputProps> = memo((props) => {\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n triggerPriceInputRef,\n } = useOrderEntryContext();\n\n return (\n <div className=\"oui-orderEntry-triggerPriceInput-container oui-group\">\n <CustomInput\n ref={triggerPriceInputRef}\n id=\"order_trigger_price_input\"\n name=\"order_trigger_price_input\"\n label={t(\"common.trigger\")}\n suffix={symbolInfo.quote}\n value={props.trigger_price}\n className=\"oui-orderEntry-triggerPriceInput\"\n onChange={(e) => {\n setOrderValue(\"trigger_price\", e);\n }}\n error={getErrorMsg(\"trigger_price\")}\n formatters={[inputFormatter.dpFormatter(symbolInfo.quote_dp)]}\n onFocus={onFocus(InputType.TRIGGER_PRICE)}\n onBlur={onBlur(InputType.TRIGGER_PRICE)}\n />\n </div>\n );\n});\n\nTriggerPriceInput.displayName = \"TriggerPriceInput\";\n","import { memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype ActivePriceInputProps = {\n activated_price?: string;\n};\n\nexport const ActivePriceInput = memo<ActivePriceInputProps>((props) => {\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n activatedPriceInputRef,\n } = useOrderEntryContext();\n\n return (\n <div className=\"oui-orderEntry-activatedPriceInput-container oui-group\">\n <CustomInput\n ref={activatedPriceInputRef}\n id=\"order_activated_price_input\"\n name=\"order_activated_price_input\"\n label={t(\"common.triggerPrice\")}\n placeholder={`0 (${t(\"common.optional\")})`}\n suffix={symbolInfo.quote}\n error={getErrorMsg(\"activated_price\")}\n value={props.activated_price}\n className=\"oui-orderEntry-activatedPriceInput\"\n onChange={(val: string) => {\n setOrderValue(\"activated_price\", val);\n }}\n formatters={[inputFormatter.dpFormatter(symbolInfo.quote_dp)]}\n onFocus={onFocus(InputType.ACTIVATED_PRICE)}\n onBlur={onBlur(InputType.ACTIVATED_PRICE)}\n />\n </div>\n );\n});\n\nActivePriceInput.displayName = \"ActivePriceInput\";\n","import { FC, memo } from \"react\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\nconst percentages = [1, 2, 3, 5];\n\ntype CallbackRatePercentagesProps = {\n className?: string;\n callback_rate?: string;\n onClick?: (value: string) => void;\n};\n\nexport const CallbackRatePercentages: FC<CallbackRatePercentagesProps> = memo(\n (props) => {\n const { setOrderValue } = useOrderEntryContext();\n\n return (\n <Flex gapX={2} className={props.className}>\n {percentages.map((item) => {\n const value = item.toString();\n const isActive = props.callback_rate === value;\n\n return (\n <Flex\n key={item}\n justify=\"center\"\n itemAlign=\"center\"\n width={46}\n height={18}\n className={cn(\n \"oui-cursor-pointer oui-select-none\",\n \"oui-rounded oui-border\",\n isActive ? \"oui-border-base-contrast-36\" : \"oui-border-line-12\",\n )}\n onClick={() => {\n setOrderValue(\"callback_rate\", value);\n props.onClick?.(value);\n }}\n >\n <Text size=\"2xs\" intensity={isActive ? 80 : 36} weight=\"semibold\">\n {item}%\n </Text>\n </Flex>\n );\n })}\n </Flex>\n );\n },\n);\n\nCallbackRatePercentages.displayName = \"CallbackRatePercentages\";\n","import { FC, memo, useMemo } from \"react\";\nimport { TrailingCallbackType } from \"@orderly.network/types\";\nimport { Select, cn } from \"@orderly.network/ui\";\n\ntype TrailingCallbackSelectProps = {\n quote: string;\n value: string;\n onValueChange: (value: TrailingCallbackType) => void;\n};\n\nexport const TrailingCallbackSelect: FC<TrailingCallbackSelectProps> = memo(\n (props) => {\n const { quote } = props;\n\n const options = useMemo(() => {\n return [\n { label: quote, value: TrailingCallbackType.VALUE },\n { label: \"%\", value: TrailingCallbackType.RATE },\n ];\n }, [quote]);\n\n return (\n <Select.options\n variant=\"text\"\n size=\"xs\"\n options={options}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-trailingCallbackSelect-btn\",\n \"oui-absolute oui-right-0 oui-top-1\",\n \"oui-w-[124px] oui-justify-end\",\n \"oui-text-base-contrast-36\",\n ),\n }}\n value={props.value}\n onValueChange={props.onValueChange}\n contentProps={{\n align: \"end\",\n alignOffset: -1,\n sideOffset: -4,\n className:\n \"oui-orderEntry-trailingCallbackSelect-content oui-border oui-border-line-6\",\n }}\n />\n );\n },\n);\n\nTrailingCallbackSelect.displayName = \"trailingCallbackSelect\";\n","import { FC, memo, useCallback, useRef } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { TrailingCallbackType } from \"@orderly.network/types\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { CallbackRatePercentages } from \"./callbackRatePercentages\";\nimport { TrailingCallbackSelect } from \"./trailingCallbackSelect\";\n\ntype TrailingCallbackInputProps = {\n callback_value?: string;\n callback_rate?: string;\n};\n\nexport const TrailingCallbackInput: FC<TrailingCallbackInputProps> = memo(\n (props) => {\n const { callback_value, callback_rate } = props;\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n } = useOrderEntryContext();\n const { quote, quote_dp } = symbolInfo;\n // const [open, setOpen] = useState(false);\n\n const lastCallbackValueRef = useRef<string>();\n const lastCallbackRateRef = useRef<string>();\n\n const [callbackType, setCallbackType] = useLocalStorage(\n \"orderly_order_trailing_callback_type\",\n TrailingCallbackType.VALUE,\n );\n\n const onCallbackTypeChange = useCallback(\n (type: TrailingCallbackType) => {\n setCallbackType(type);\n // when switch to callback rate, save the last callback value\n if (type === TrailingCallbackType.RATE) {\n lastCallbackValueRef.current = callback_value;\n setOrderValues({\n callback_value: \"\",\n callback_rate: lastCallbackRateRef.current,\n });\n // when switch to callback value, save the last callback rate\n } else {\n lastCallbackRateRef.current = callback_rate;\n setOrderValues({\n callback_value: lastCallbackValueRef.current,\n callback_rate: \"\",\n });\n }\n },\n [callback_value, callback_rate],\n );\n\n const suffix = (\n <TrailingCallbackSelect\n quote={quote}\n value={callbackType}\n onValueChange={onCallbackTypeChange}\n />\n );\n\n // don't need to convert trailing rate to estimated value\n // const estimatedValue = useMemo(() => {\n // if (callbackType === TrailingCallbackType.RATE) {\n // return callback_rate\n // }\n // }, [callback_rate, callbackType]);\n\n // const tooltipContent = estimatedValue\n // ? `≈ ${estimatedValue} ${quote}`\n // : undefined;\n\n // const openTooltip = useCallback(() => {\n // setOpen(true);\n // }, []);\n\n // const closeTooltip = useCallback(() => {\n // setOpen(false);\n // }, []);\n\n if (callbackType === TrailingCallbackType.RATE) {\n return (\n // <Tooltip\n // content={tooltipContent}\n // open={open && !!tooltipContent}\n // sideOffset={-25}\n // className=\"!oui-p-3\"\n // >\n <div className=\"oui-orderEntry-trailingCallback oui-relative\">\n <CustomInput\n id=\"order_callback_rate_input\"\n name=\"order_callback_rate_input\"\n label={t(\"orderEntry.trailingRate\")}\n suffix={suffix}\n error={getErrorMsg(\"callback_rate\")}\n value={callback_rate}\n className=\"oui-trailingCallback-rateInput\"\n onChange={(val: string) => {\n setOrderValue(\"callback_rate\", val);\n }}\n formatters={[inputFormatter.dpFormatter(1)]}\n onFocus={(e) => {\n onFocus(InputType.CALLBACK_RATE)(e);\n // openTooltip();\n }}\n onBlur={(e) => {\n onBlur(InputType.CALLBACK_RATE)(e);\n // closeTooltip();\n }}\n classNames={{\n root: \"oui-h-[68px]\",\n input: \"oui-mb-5\",\n prefix: \"!oui-top-1\",\n }}\n />\n <CallbackRatePercentages\n className=\"oui-trailingCallback-percentages oui-absolute oui-bottom-1 oui-left-2\"\n callback_rate={callback_rate}\n // onClick={openTooltip}\n />\n </div>\n // </Tooltip>\n );\n }\n\n return (\n <CustomInput\n id=\"order_callback_value_input\"\n name=\"order_callback_value_input\"\n label={t(\"orderEntry.trailingValue\")}\n suffix={suffix}\n error={getErrorMsg(\"callback_value\")}\n value={callback_value}\n className=\"oui-trailingCallback-valueInput\"\n onChange={(val: string) => {\n setOrderValue(\"callback_value\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.CALLBACK_VALUE)}\n onBlur={onBlur(InputType.CALLBACK_VALUE)}\n classNames={{\n input: \"!oui-mb-[6px]\",\n prefix: \"!oui-top-1\",\n }}\n />\n );\n },\n);\n\nTrailingCallbackInput.displayName = \"TrailingCallbackInput\";\n","import { OrderlyOrder } from \"@orderly.network/types\";\nimport { QtyAndTotalInput } from \"../qtyAndTotal/qtyAndTotalInput\";\nimport { ActivePriceInput } from \"./activePriceInput\";\nimport { TrailingCallbackInput } from \"./trailingCallbackInput\";\n\ntype TrailingStopInputProps = {\n values: Partial<OrderlyOrder>;\n};\n\nexport const TrailingStopInput = (props: TrailingStopInputProps) => {\n const { values } = props;\n\n return (\n <div className=\"oui-orderEntry-trailingStopInput oui-space-y-1\">\n <ActivePriceInput activated_price={values.activated_price} />\n <TrailingCallbackInput\n callback_value={values.callback_value}\n callback_rate={values.callback_rate}\n />\n <QtyAndTotalInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n </div>\n );\n};\n","import { OrderlyOrder, OrderType } from \"@orderly.network/types\";\nimport { PriceInput, PriceInputProps } from \"./limit/priceInput\";\nimport { QtyAndTotalInput } from \"./qtyAndTotal/qtyAndTotalInput\";\nimport { ScaledOrderInput } from \"./scaledOrder\";\nimport { TriggerPriceInput } from \"./stop/triggerPriceInput\";\nimport { TrailingStopInput } from \"./trailingStop\";\n\nexport type OrderInputProps = {\n values: Partial<OrderlyOrder>;\n} & Omit<PriceInputProps, \"order_price\" | \"order_type\">;\n\nexport function OrderInput(props: OrderInputProps) {\n const { values } = props;\n\n const type = values.order_type;\n\n if (type === OrderType.SCALED) {\n return <ScaledOrderInput values={values} />;\n }\n\n if (type === OrderType.TRAILING_STOP) {\n return <TrailingStopInput values={values} />;\n }\n\n const showTriggerPrice =\n type === OrderType.STOP_LIMIT || type === OrderType.STOP_MARKET;\n\n const showPrice = type === OrderType.LIMIT || type === OrderType.STOP_LIMIT;\n\n const triggerPriceInput = showTriggerPrice && (\n <TriggerPriceInput trigger_price={values.trigger_price} />\n );\n\n const priceInput = showPrice && (\n <PriceInput\n order_type={values.order_type!}\n order_price={values.order_price}\n bbo={props.bbo}\n fillMiddleValue={props.fillMiddleValue}\n priceInputContainerWidth={props.priceInputContainerWidth}\n />\n );\n\n return (\n <div className={\"oui-orderEntry-orderInput-container oui-space-y-1\"}>\n {triggerPriceInput}\n {priceInput}\n <QtyAndTotalInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n </div>\n );\n}\n","import { memo, useEffect, useMemo, useState } from \"react\";\nimport { utils } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { Flex, Slider, textVariants, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputType } from \"../../types\";\nimport { useOrderEntryContext } from \"../orderEntryContext\";\n\ntype QuantitySliderProps = {\n canTrade: boolean;\n side: OrderSide;\n order_quantity?: string;\n maxQty: number;\n};\nconst SLIDER_MIN = 0;\nconst SLIDER_MAX = 100;\n\nexport const QuantitySlider = memo((props: QuantitySliderProps) => {\n const { canTrade, side, order_quantity, maxQty } = props;\n\n const [sliderValue, setSliderValue] = useState<number>(0);\n\n const { setOrderValue, symbolInfo, lastQuantityInputType } =\n useOrderEntryContext();\n\n const { base_dp, base_tick } = symbolInfo;\n\n const { t } = useTranslation();\n\n const color = useMemo(\n () => (canTrade ? (side === OrderSide.BUY ? \"buy\" : \"sell\") : undefined),\n [side, canTrade],\n );\n\n const maxLabel = useMemo(() => {\n return side === OrderSide.BUY\n ? t(\"orderEntry.maxBuy\")\n : t(\"orderEntry.maxSell\");\n }, [side, t]);\n\n const onSliderValueChange = (value: number) => {\n lastQuantityInputType.current = InputType.QUANTITY_SLIDER;\n setSliderValue(value);\n };\n\n const sliderToQuantity = (value: number) => {\n const newQty = new Decimal(value)\n .div(SLIDER_MAX)\n .mul(maxQty)\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n setOrderValue(\"order_quantity\", utils.formatNumber(newQty, base_tick));\n };\n\n const onMax = () => {\n onSliderValueChange(SLIDER_MAX);\n // when previous slider value is max, quantity will not update by useEffect, so must set quantity manually to maxQty\n if (sliderValue === SLIDER_MAX) {\n sliderToQuantity(SLIDER_MAX);\n }\n };\n\n // update quantity when slider value and maxQty changes\n useEffect(() => {\n if (lastQuantityInputType.current === InputType.QUANTITY_SLIDER) {\n sliderToQuantity(sliderValue);\n }\n }, [sliderValue, maxQty]);\n\n useEffect(() => {\n const quantityToSlider = () => {\n if (order_quantity && Number(order_quantity) !== 0 && maxQty !== 0) {\n return new Decimal(Math.min(Number(order_quantity), maxQty))\n .div(maxQty)\n .mul(SLIDER_MAX)\n .todp(2, Decimal.ROUND_DOWN)\n .toNumber();\n }\n return 0;\n };\n\n // update slider value when last quantity input type is not quantity slider\n if (lastQuantityInputType.current !== InputType.QUANTITY_SLIDER) {\n setSliderValue(quantityToSlider());\n }\n }, [order_quantity, maxQty]);\n\n return (\n <div className=\"oui-orderEntry-quantitySlider\">\n <Slider\n disabled={maxQty === 0 || !canTrade}\n value={[sliderValue]}\n color={color}\n markCount={4}\n showTip\n onValueChange={(e) => {\n onSliderValueChange(e[0]);\n }}\n min={SLIDER_MIN}\n max={SLIDER_MAX}\n />\n <Flex\n justify={\"between\"}\n className=\"oui-quantitySlider-footer oui-pt-1 xl:oui-pt-2\"\n >\n <Text.numeral\n size={\"2xs\"}\n color={color}\n dp={2}\n padding={false}\n suffix=\"%\"\n >\n {canTrade ? sliderValue : 0}\n </Text.numeral>\n <Flex>\n <button\n className={textVariants({\n size: \"2xs\",\n className: \"oui-quantitySlider-maxQty-btn oui-mr-1\",\n })}\n onClick={onMax}\n data-testid=\"oui-testid-orderEntry-maxQty-value-button\"\n >\n {maxLabel}\n </button>\n <Text.numeral\n size={\"2xs\"}\n color={color}\n dp={base_dp}\n padding={false}\n className=\"oui-quantitySlider-maxQty-value\"\n data-testid=\"oui-testid-orderEntry-maxQty-value\"\n >\n {canTrade ? maxQty : 0}\n </Text.numeral>\n </Flex>\n </Flex>\n </div>\n );\n});\n\nQuantitySlider.displayName = \"QuantitySlider\";\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Switch } from \"@orderly.network/ui\";\n\nexport interface ReduceOnlySwitchProps {\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n className?: string;\n}\n\nexport const ReduceOnlySwitch: React.FC<ReduceOnlySwitchProps> = ({\n checked,\n onCheckedChange,\n className,\n}) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n itemAlign={\"center\"}\n gapX={1}\n className={cn(\"oui-orderEntry-reduceOnly\", className)}\n >\n <Switch\n data-testid=\"oui-testid-orderEntry-reduceOnly-switch\"\n className={cn(\"oui-reduceOnly-switch\", \"oui-h-[14px]\")}\n id={\"reduceOnly\"}\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n <label\n htmlFor={\"reduceOnly\"}\n className={\"oui-reduceOnly-label oui-text-xs\"}\n >\n {t(\"orderEntry.reduceOnly\")}\n </label>\n </Flex>\n );\n};\n","import { createContext, ReactNode, useContext } from \"react\";\nimport { PnLMode } from \"./useBuilder.script\";\n\nexport type PnlInputContextState = {\n mode: PnLMode;\n setMode: (mode: PnLMode) => void;\n tipsEle: ReactNode | null;\n};\n\nexport const PnlInputContext = createContext<PnlInputContextState>(\n {} as PnlInputContextState,\n);\n\nexport const usePnlInputContext = () => {\n return useContext(PnlInputContext);\n};\n","import { useEffect, useMemo, useRef, useState } from \"react\";\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\";\nimport { usePnlInputContext } from \"./pnlInputContext\";\n\nexport enum PnLMode {\n PnL = \"PnL\",\n OFFSET = \"Offset\",\n PERCENTAGE = \"Offset%\",\n}\n\nexport type PNL_Values = {\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n};\n\ntype PNL_Keys =\n | \"tp_offset\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"sl_offset\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\";\n\nexport type BuilderProps = {\n type: \"TP\" | \"SL\";\n\n quote_dp?: number;\n onChange: (key: PNL_Keys, value: number | string) => void;\n\n values: PNL_Values;\n};\n\nexport const usePNLInputBuilder = (props: BuilderProps) => {\n const { type, values, quote_dp } = props;\n const { t } = useTranslation();\n const [focus, setFocus] = useState(true);\n // const [mode, setMode] = useLocalStorage<PnLMode>(\n // \"TP/SL_Mode\",\n // PnLMode.PERCENTAGE\n // );\n const { mode, setMode, tipsEle } = usePnlInputContext();\n\n const [tipVisible, setTipVisible] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const key = useMemo<PNL_Keys>(() => {\n switch (mode) {\n case PnLMode.OFFSET:\n return `${type.toLowerCase()}_offset` as PNL_Keys;\n case PnLMode.PERCENTAGE:\n return `${type.toLowerCase()}_offset_percentage` as PNL_Keys;\n default:\n return `${type.toLowerCase()}_pnl` as PNL_Keys;\n }\n }, [mode]);\n\n const [innerValue, setInnerValue] = useState<string>(\n values[mode as keyof PNL_Values],\n );\n\n // const value = useMemo(() => {\n // // console.log(\"mode\", mode, values);\n // const value = values[mode as keyof PNL_Values];\n // // if (isFocused) {\n // // return value;\n // // }\n // return value;\n // }, [values, mode, isFocused]);\n\n useEffect(() => {\n if (isFocused) {\n return;\n }\n setInnerValue(values[mode as keyof PNL_Values]);\n }, [values, mode, isFocused]);\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 modeLabelMap = useMemo(() => {\n return {\n [PnLMode.PnL]: t(\"tpsl.pnl\"),\n [PnLMode.OFFSET]: t(\"tpsl.offset\"),\n [PnLMode.PERCENTAGE]: `${t(\"tpsl.offset\")}%`,\n };\n }, [t]);\n\n const percentageSuffix = useRef<string>(\"\");\n\n const onValueChange = (value: string) => {\n // console.log(\"onValueChange\", value);\n // if (!isFocused) {\n // props.onChange(key, value);\n // } else {\n // setInnerValue(value);\n // }\n setInnerValue(value);\n props.onChange(key, value);\n };\n\n const onFocus = () => {\n // updateTips();\n setTipVisible(true);\n setIsFocused(true);\n };\n\n /**\n * hide tips when input is blurred\n */\n const onBlur = () => {\n // setTips(undefined);\n setTipVisible(false);\n setIsFocused(false);\n props.onChange(key, innerValue);\n };\n\n const formatter = (options: {\n dp?: number;\n mode: PnLMode;\n type: \"TP\" | \"SL\";\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 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 // value = new Decimal(\n // value.replace(\n // new RegExp(percentageSuffix.current.replace(\".\", \"\\\\.\") + \"$\"),\n // \"\"\n // )\n // )\n // .mul(100)\n // .toString();\n\n // return `${todpIfNeed(value, 2)}${percentageSuffix.current}`;\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 // return (Number(value) * 100).toFixed(2);\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 // console.log(\"onSendBefore\", value);\n\n if (mode === PnLMode.PERCENTAGE) {\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 value = new Decimal(value).div(100).toString();\n value = `${value}${percentageSuffix.current}`;\n }\n } else if (mode === PnLMode.PnL && type === \"SL\" && focus) {\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 };\n\n return {\n mode,\n modes,\n modeLabelMap,\n formatter,\n onModeChange: (mode: PnLMode) => {\n setMode(mode);\n },\n onFocus,\n onBlur,\n value: innerValue,\n onValueChange,\n quote_dp,\n tips: tipVisible ? tipsEle : undefined,\n setFocus,\n };\n};\n\nexport type PNLInputState = ReturnType<typeof usePNLInputBuilder>;\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n CaretDownIcon,\n cn,\n Input,\n MenuItem,\n Text,\n SimpleDropdownMenu,\n} from \"@orderly.network/ui\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { PNLInputState, PnLMode } from \"./useBuilder.script\";\n\nexport type PNLInputProps = PNLInputState & {\n testIds?: {\n input?: string;\n dropDown?: string;\n };\n quote: string;\n type: \"TP\" | \"SL\";\n};\n\nexport const PNLInput = (props: PNLInputProps) => {\n const {\n mode,\n modes,\n modeLabelMap,\n onModeChange,\n onValueChange,\n quote,\n quote_dp,\n value,\n type,\n tips,\n onFocus,\n onBlur,\n setFocus,\n } = props;\n\n const [prefix, setPrefix] = useState<string>(mode);\n\n const [placeholder, setPlaceholder] = useState<string>(\n mode === PnLMode.PERCENTAGE ? \"%\" : quote,\n );\n\n useEffect(() => {\n setPrefix(mode);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n }, [mode]);\n\n useEffect(() => {\n setPrefix(!!value ? \"\" : mode);\n }, [value]);\n\n const id = useMemo(() => `${type.toLowerCase()}_${mode.toLowerCase()}`, []);\n\n return (\n <Input.tooltip\n prefix={modeLabelMap[prefix as keyof typeof modeLabelMap] || prefix}\n size={\"md\"}\n placeholder={placeholder}\n id={id}\n align={\"right\"}\n value={value}\n tooltip={tips}\n tooltipProps={{\n content: {\n side: props.type === \"TP\" ? \"top\" : \"bottom\",\n },\n }}\n data-testid={props.testIds?.input}\n autoComplete={\"off\"}\n onValueChange={onValueChange}\n formatters={[\n inputFormatter.numberFormatter,\n props.formatter({ dp: quote_dp, mode, type }),\n inputFormatter.currencyFormatter,\n // inputFormatter.identifierFormatter(),\n ]}\n classNames={{\n root: cn(\n \"oui-orderEntry-pnlInput-container\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n ),\n additional: \"oui-text-base-contrast-54\",\n input: \"oui-orderEntry-pnlInput oui-text-inherit\",\n }}\n onFocus={() => {\n setPrefix(\"\");\n setPlaceholder(\"\");\n setFocus(true);\n onFocus();\n }}\n onBlur={() => {\n setPrefix(!!value ? \"\" : mode);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n onBlur();\n }}\n suffix={\n <>\n {mode === PnLMode.PERCENTAGE && !!value && (\n <Text size={\"2xs\"} color=\"inherit\" className=\"oui-ml-[2px]\">\n %\n </Text>\n )}\n <PNLMenus\n mode={mode}\n modes={modes}\n onModeChange={(item) => onModeChange(item.value as PnLMode)}\n testId={props.testIds?.dropDown}\n />\n </>\n }\n />\n );\n};\n\nconst PNLMenus = (props: {\n mode?: string;\n modes: MenuItem[];\n onModeChange: (value: MenuItem) => void;\n testId?: string;\n}) => {\n return (\n <SimpleDropdownMenu\n currentValue={props.mode}\n menu={props.modes}\n align={\"end\"}\n size={\"xs\"}\n className={\"oui-pnlInput-menu oui-min-w-[80px]\"}\n onCloseAutoFocus={(event) => event.preventDefault()}\n onSelect={(item) => props.onModeChange(item as MenuItem)}\n >\n <button\n className={\"oui-pnlInput-menuTrigger-btn oui-p-2\"}\n data-testid={props.testId}\n >\n <CaretDownIcon size={12} color={\"white\"} />\n </button>\n </SimpleDropdownMenu>\n );\n};\n","import { PNLInput } from \"./pnlInput.ui\";\nimport { BuilderProps, PnLMode, usePNLInputBuilder } from \"./useBuilder.script\";\n\nexport const PnlInputWidget = (\n props: BuilderProps & {\n testIds?: {\n input?: string;\n dropDown?: string;\n };\n quote: string;\n }\n) => {\n const { testIds, quote, ...rest } = props;\n const state = usePNLInputBuilder(rest);\n return (\n <PNLInput {...state} testIds={testIds} quote={quote} type={props.type} />\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { PnlInputContext, PnlInputContextState } from \"./pnlInputContext\";\nimport { PNL_Values, PnLMode } from \"./useBuilder.script\";\n\nexport const PnlInputProvider: React.FC<\n React.PropsWithChildren<{\n values: PNL_Values & { trigger_price?: string };\n type: \"TP\" | \"SL\";\n }>\n> = (props) => {\n const { type, values, children } = props;\n const [mode, setMode] = useLocalStorage<PnLMode>(\n \"TP/SL_Mode\",\n PnLMode.PERCENTAGE,\n );\n const { t } = useTranslation();\n\n const tipsEle = useMemo(() => {\n if (!values.PnL || !values.trigger_price) {\n return null;\n }\n return (\n <Flex>\n <span className={\"oui-text-xs oui-text-base-contrast-54\"}>\n {mode === PnLMode.PnL\n ? t(\"orderEntry.estRoi\")\n : t(\"orderEntry.estPnL\")}\n </span>\n {mode === PnLMode.PnL ? (\n <Text.numeral\n rule={\"percentages\"}\n className={cn(\n \"oui-ml-1 oui-text-xs\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n >\n {values.ROI}\n </Text.numeral>\n ) : (\n <Text.numeral\n rule={\"price\"}\n className={cn(\n \"oui-ml-1 oui-text-xs\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n >\n {values.PnL}\n </Text.numeral>\n )}\n </Flex>\n );\n }, [mode, values.ROI, values.PnL, values.trigger_price]);\n\n const memoizedValue = useMemo<PnlInputContextState>(() => {\n return { mode, setMode, tipsEle };\n }, [mode, setMode, tipsEle]);\n\n return (\n <PnlInputContext.Provider value={memoizedValue}>\n {children}\n </PnlInputContext.Provider>\n );\n};\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { ERROR_MSG_CODES, OrderValidationResult } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport { OrderlyOrder, OrderType, PositionType } from \"@orderly.network/types\";\nimport {\n cn,\n Flex,\n Text,\n Input,\n inputFormatter,\n Switch,\n SettingFillIcon,\n useScreen,\n DotStatus,\n} from \"@orderly.network/ui\";\nimport { Grid } from \"@orderly.network/ui\";\nimport { TPSLPositionTypeWidget } from \"@orderly.network/ui-tpsl\";\nimport { useOrderEntryContext } from \"./orderEntryContext\";\nimport { PnlInputWidget } from \"./pnlInput/pnlInput.widget\";\nimport { usePnlInputContext } from \"./pnlInput/pnlInputContext\";\nimport { PnlInputProvider } from \"./pnlInput/pnlInputProvider\";\nimport { PNL_Values } from \"./pnlInput/useBuilder.script\";\nimport { ReduceOnlySwitch } from \"./reduceOnlySwitch\";\n\ntype OrderValueKeys = keyof OrderlyOrder;\n\ntype Est_Values = PNL_Values & {\n trigger_price?: string;\n};\n\ntype TPSL_Values = {\n tp: Est_Values;\n sl: Est_Values;\n position_type: PositionType;\n};\n\nexport const OrderTPSL = (props: {\n // onCancelTPSL: () => void;\n // onEnableTP_SL: () => void;\n switchState: boolean;\n onSwitchChanged: (state: boolean) => void;\n onChange: (key: OrderValueKeys, value: any) => void;\n values: TPSL_Values;\n orderType: OrderType;\n errors: OrderValidationResult | null;\n quote_dp: number | undefined;\n showTPSLAdvanced: () => void;\n setOrderValue: (key: string, value: any) => void;\n reduceOnlyChecked?: boolean;\n onReduceOnlyChange?: (checked: boolean) => void;\n}) => {\n const tpslFormRef = React.useRef<HTMLDivElement>(null);\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n useEffect(() => {\n if (\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n ) {\n props.onSwitchChanged(false);\n }\n }, [props.orderType]);\n\n if (\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n ) {\n return null;\n }\n\n const isSlPriceWarning =\n props.errors?.[\"sl_trigger_price\"]?.[\"type\"] ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n return (\n <div className=\"oui-orderEntry-tpsl\">\n <Flex\n itemAlign={\"center\"}\n justify={\"between\"}\n className=\"oui-orderEntry-tpsl-header\"\n >\n <Flex itemAlign={\"center\"} gapX={1}>\n <Switch\n id={\"order_entry_tpsl\"}\n className=\"oui-h-[14px]\"\n checked={props.switchState}\n disabled={\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n }\n onCheckedChange={(checked) => {\n props.onSwitchChanged(checked);\n }}\n />\n <label htmlFor={\"order_entry_tpsl\"} className={\"oui-text-xs\"}>\n {t(\"common.tpsl\")}\n </label>\n {/* <ExclamationFillIcon\n color=\"white\"\n // opacity={0.36}\n size={14}\n opacity={1}\n className=\"oui-cursor-pointer oui-text-base-contrast-36 hover:oui-text-base-contrast-80\"\n onClick={() => {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"xs\",\n content: (\n <Text intensity={54}>{t(\"orderEntry.tpsl.tips\")}</Text>\n ),\n });\n }}\n /> */}\n </Flex>\n <Flex itemAlign={\"center\"} gapX={2}>\n {isMobile && props.onReduceOnlyChange && (\n <ReduceOnlySwitch\n checked={props.reduceOnlyChecked ?? false}\n onCheckedChange={props.onReduceOnlyChange}\n />\n )}\n {!isMobile && (\n <TPSLAdvancedButton\n className={cn(\n \"oui-group oui-invisible\",\n props.switchState && \"oui-visible\",\n )}\n showTPSLAdvanced={props.showTPSLAdvanced}\n />\n )}\n </Flex>\n </Flex>\n <div\n className={cn(\n \"oui-orderEntry-tpsl-body\",\n \"oui-max-h-0 oui-overflow-hidden oui-transition-all\",\n props.switchState && \"oui-max-h-[120px]\",\n )}\n onTransitionEnd={() => {\n console.log(\"transition end\");\n tpslFormRef.current?.style.setProperty(\n \"opacity\",\n props.switchState ? \"1\" : \"0\",\n );\n }}\n >\n <TPSLInputForm\n ref={tpslFormRef}\n setOrderValue={props.setOrderValue}\n onChange={props.onChange}\n values={props.values}\n errors={props.errors}\n quote_dp={props.quote_dp}\n showTPSLAdvanced={props.showTPSLAdvanced}\n isMobile={isMobile}\n isSlPriceWarning={isSlPriceWarning}\n />\n </div>\n\n {isSlPriceWarning && <TPSLPriceWarning errors={props.errors} />}\n </div>\n );\n};\n\nconst TPSLPriceWarning = (props: { errors: OrderValidationResult | null }) => {\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n\n return (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={getErrorMsg(\"sl_trigger_price\")}\n />\n );\n};\n\nconst TPSLInputForm = React.forwardRef<\n HTMLDivElement,\n {\n setOrderValue: (key: string, value: any) => void;\n onChange: (key: OrderValueKeys, value: any) => void;\n values: TPSL_Values;\n errors: OrderValidationResult | null;\n quote_dp: number | undefined;\n showTPSLAdvanced: () => void;\n isMobile: boolean;\n isSlPriceWarning?: boolean;\n }\n>((props, ref) => {\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n const { t } = useTranslation();\n\n return (\n <div\n ref={ref}\n className={\n \"oui-orderEntry-tpsl-form oui-space-y-1 oui-px-px oui-py-2 oui-transition-all\"\n }\n >\n <Flex itemAlign={\"center\"} justify={\"between\"} gapX={2}>\n <TPSLPositionTypeWidget\n value={props.values.position_type}\n onChange={props.onChange}\n />\n {props.isMobile && (\n <TPSLAdvancedButton\n showTPSLAdvanced={props.showTPSLAdvanced}\n isMobile={props.isMobile}\n />\n )}\n </Flex>\n <PnlInputProvider values={props.values.tp} type={\"TP\"}>\n <TPSLInputRow\n type={\"TP\"}\n error={getErrorMsg(\"tp_trigger_price\")}\n onChange={props.onChange}\n values={props.values.tp}\n quote_dp={props.quote_dp}\n testIds={{\n first: \"oui-testid-orderEntry-tpsl-tpPrice-input\",\n second: \"oui-testid-orderEntry-tpsl-tpPnl-input\",\n dropDown: \"oui-testid-orderEntry-tpsl-tp-dropDown-trigger-button\",\n }}\n />\n </PnlInputProvider>\n <PnlInputProvider values={props.values.sl} type={\"SL\"}>\n <TPSLInputRow\n type={\"SL\"}\n error={\n props.isSlPriceWarning ? undefined : getErrorMsg(\"sl_trigger_price\")\n }\n displayErrorMessage={getErrorMsg(\"sl_trigger_price\") !== undefined}\n onChange={props.onChange}\n values={props.values.sl}\n quote_dp={props.quote_dp}\n testIds={{\n first: \"oui-testid-orderEntry-tpsl-slPrice-input\",\n second: \"oui-testid-orderEntry-tpsl-slPnl-input\",\n dropDown: \"oui-testid-orderEntry-tpsl-sl-dropDown-trigger-button\",\n }}\n classNames={{\n root: props.isSlPriceWarning\n ? \"oui-outline-warning-darken focus-within:oui-outline-warning-darken\"\n : undefined,\n }}\n />\n </PnlInputProvider>\n </div>\n );\n});\n\nTPSLInputForm.displayName = \"TPSLInputForm\";\n\nconst TPSLAdvancedButton = (props: {\n showTPSLAdvanced: () => void;\n className?: string;\n isMobile?: boolean;\n}) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n itemAlign={\"center\"}\n gapX={1}\n onClick={props.showTPSLAdvanced}\n className={cn(\n \"oui-orderEntry-tpsl-advanced-btn\",\n \"oui-group oui-cursor-pointer\",\n props.className,\n )}\n >\n <Text\n className={cn(\n \"oui-cursor-pointer group-hover:oui-text-base-contrast\",\n props.isMobile ? \"oui-text-2xs\" : \"oui-text-sm\",\n )}\n >\n {t(\"tpsl.advanced\")}\n </Text>\n <SettingFillIcon\n size={12}\n className=\"oui-advanced-icon oui-text-base-contrast-54 group-hover:oui-text-base-contrast oui-cursor-pointer\"\n opacity={1}\n onClick={props.showTPSLAdvanced}\n />\n </Flex>\n );\n};\n\n//------- TPSLTriggerPriceInput start -------\nconst TPSLTriggerPriceInput = (props: {\n type: \"TP\" | \"SL\";\n error: string | undefined;\n displayErrorMessage?: boolean;\n values: Est_Values;\n onChange: (value: string) => void;\n quote_dp: number | undefined;\n testId?: string;\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}) => {\n const { t } = useTranslation();\n const { errorMsgVisible } = useOrderEntryContext();\n const { tipsEle } = usePnlInputContext();\n const [prefix, setPrefix] = useState<string>(`${props.type} Price`);\n const [placeholder, setPlaceholder] = useState<string>(\"USDC\");\n\n const [tipVisible, setTipVisible] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const [innerValue, setInnerValue] = useState<string>(\n props.values.trigger_price ?? \"\",\n );\n\n useEffect(() => {\n if (isFocused) {\n return;\n }\n setInnerValue(props.values.trigger_price ?? \"\");\n }, [props.values.trigger_price, isFocused]);\n\n const triggerPriceToolTipEle = useMemo(() => {\n if (props.error && (errorMsgVisible || props.displayErrorMessage))\n return props.error;\n if (tipVisible) return tipsEle;\n\n return null;\n }, [\n props.error,\n errorMsgVisible,\n tipVisible,\n tipsEle,\n props.displayErrorMessage,\n ]);\n\n const getPrefixLabel = (trigger_price?: string) => {\n let _prefix = props.type === \"TP\" ? t(\"tpsl.tpPrice\") : t(\"tpsl.slPrice\");\n\n if (trigger_price) {\n _prefix = props.type === \"TP\" ? t(\"tpsl.tp\") : t(\"tpsl.sl\");\n }\n return _prefix;\n };\n\n const onValueChange = (value: string) => {\n setInnerValue(value);\n props.onChange(value);\n };\n\n // console.log(\"props.values.trigger_price\", props.values.trigger_price);\n\n useEffect(() => {\n setPrefix(getPrefixLabel(props.values.trigger_price));\n\n if (!isFocused) {\n setInnerValue(props.values.trigger_price ?? \"\");\n }\n }, [props.type, props.values.trigger_price]);\n\n const onFocus = () => {\n setPrefix(props.type === \"TP\" ? t(\"tpsl.tp\") : t(\"tpsl.sl\"));\n setPlaceholder(\"\");\n setTipVisible(true);\n setIsFocused(true);\n };\n\n const onBlur = () => {\n setPrefix(getPrefixLabel(props.values.trigger_price));\n setPlaceholder(\"USDC\");\n setTipVisible(false);\n setIsFocused(false);\n props.onChange(innerValue);\n };\n\n return (\n <Input.tooltip\n data-testid={props.testId}\n prefix={prefix}\n size={\"md\"}\n placeholder={placeholder}\n align=\"right\"\n onFocus={onFocus}\n onBlur={onBlur}\n tooltip={triggerPriceToolTipEle}\n tooltipProps={{\n content: {\n side: props.type === \"TP\" ? \"top\" : \"bottom\",\n },\n }}\n color={props.error ? \"danger\" : undefined}\n autoComplete={\"off\"}\n value={innerValue}\n classNames={{\n additional: \"oui-text-base-contrast-54\",\n root: cn(\n \"oui-orderEntry-tpsl-triggerPrice\",\n \"oui-pr-2 md:oui-pr-3\",\n props.classNames?.root,\n ),\n prefix: cn(\"oui-pr-1 md:oui-pr-2\", props.classNames?.prefix),\n input: cn(\n \"oui-text-2xs placeholder:oui-text-2xs\",\n props.classNames?.input,\n ),\n }}\n // onChange={props.onChange}\n onValueChange={onValueChange}\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(props.quote_dp ?? 2),\n inputFormatter.currencyFormatter,\n ]}\n />\n );\n};\n\n//------- TPSLTriggerPriceInput end -------\n\nconst TPSLInputRow: React.FC<{\n type: \"TP\" | \"SL\";\n values: Est_Values;\n error?: string;\n displayErrorMessage?: boolean;\n onChange: (key: OrderValueKeys, value: any) => void;\n quote_dp: number | undefined;\n testIds?: {\n first?: string;\n second?: string;\n dropDown?: string;\n };\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}> = (props) => {\n return (\n <Grid cols={2} gapX={1}>\n <TPSLTriggerPriceInput\n testId={props.testIds?.first}\n type={props.type}\n error={props.error}\n displayErrorMessage={props.displayErrorMessage}\n values={props.values ?? \"\"}\n classNames={props.classNames}\n onChange={(event) => {\n props.onChange(\n props.type === \"SL\" ? \"sl_trigger_price\" : \"tp_trigger_price\",\n event,\n );\n }}\n quote_dp={props.quote_dp}\n />\n\n <PnlInputWidget\n testIds={{\n input: props.testIds?.second,\n dropDown: props.testIds?.dropDown,\n }}\n onChange={props.onChange}\n quote={\"USDC\"}\n quote_dp={2}\n type={props.type}\n values={{\n PnL: props.values.PnL,\n Offset: props.values.Offset,\n \"Offset%\": props.values[\"Offset%\"],\n ROI: props.values.ROI,\n }}\n />\n </Grid>\n );\n};\n","import React, { useCallback, useEffect, useId, useMemo, useState } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationResult,\n useLocalStorage,\n useMemoizedFn,\n useOrderlyContext,\n} 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 cn,\n Divider,\n Flex,\n modal,\n SimpleSheet,\n Switch,\n ThrottledButton,\n toast,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { TPSLAdvancedWidget } from \"@orderly.network/ui-tpsl\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { AdditionalConfigButton } from \"./components/additional/additionalConfigButton\";\nimport {\n AdditionalInfo,\n AdditionalInfoProps,\n} from \"./components/additional/additionalInfo\";\nimport { PinButton } from \"./components/additional/pinButton\";\nimport { AdvancedTPSLResult } from \"./components/advancedTPSLResult\";\nimport { AssetInfo } from \"./components/assetInfo\";\nimport { Available } from \"./components/available\";\nimport { orderConfirmDialogId } from \"./components/dialog/confirm.ui\";\nimport { MaxQtyConfirm } from \"./components/dialog/maxQtyConfirm\";\nimport { scaledOrderConfirmDialogId } from \"./components/dialog/scaledOrderConfirm\";\nimport { OrderEntryHeader } from \"./components/header\";\nimport { OrderEntryProvider } from \"./components/orderEntryProvider\";\nimport { OrderInput } from \"./components/orderInput\";\nimport { QuantitySlider } from \"./components/quantitySlider\";\nimport { ReduceOnlySwitch } from \"./components/reduceOnlySwitch\";\nimport { OrderTPSL } from \"./components/tpsl\";\nimport { type OrderEntryScriptReturn } from \"./orderEntry.script\";\nimport { getScaledPlaceOrderMessage } from \"./utils\";\n\ntype OrderEntryProps = OrderEntryScriptReturn & {\n containerRef?: React.RefObject<HTMLDivElement>;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n};\n\nexport const OrderEntry: React.FC<OrderEntryProps> = (props) => {\n const {\n side,\n formattedOrder,\n setOrderValue,\n setOrderValues,\n symbolInfo,\n maxQty,\n freeCollateral,\n helper,\n submit,\n metaState,\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n disableFeatures,\n currentLtv,\n fillMiddleValue,\n soundAlert,\n setSoundAlert,\n currentFocusInput,\n } = props;\n const [maxQtyConfirmOpen, setMaxQtyConfirmOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const { isMobile } = useScreen();\n const [hasAdvancedTPSLResult, setHasAdvancedTPSLResult] =\n useState<boolean>(false);\n\n const { errors, validated } = metaState;\n\n const [errorMsgVisible, setErrorMsgVisible] = useState(false);\n\n const [needConfirm, setNeedConfirm] = useLocalStorage(\n \"orderly_order_confirm\",\n true,\n );\n const [pinned, setPinned] = useLocalStorage(\n \"orderly-order-additional-pinned\",\n true,\n );\n const [showTPSLAdvanced, setShowTPSLAdvanced] = useState(false);\n const [hidden, setHidden] = useLocalStorage(\"orderly-order-hidden\", false);\n\n const [slippage, setSlippage] = useLocalStorage(\"orderly-slippage\", \"1\", {\n parseJSON: ((value: string | null) => {\n return !value || value === '\"\"' ? \"1\" : JSON.parse(value);\n }) as any,\n });\n\n const { notification } = useOrderlyContext();\n\n const soundAlertId = useId();\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(validated ? errors : null);\n\n const buttonLabel = useMemo(() => {\n // TODO: remove this for bug handling\n // if (isMobile && freeCollateral <= 0) {\n // return t(\"common.deposit\");\n // }\n return side === OrderSide.BUY\n ? t(\"orderEntry.buyLong\")\n : t(\"orderEntry.sellShort\");\n }, [side, t, isMobile]);\n\n useEffect(() => {\n if (validated) {\n setErrorMsgVisible(true);\n }\n }, [validated]);\n\n // set slippage\n useEffect(() => {\n if (disableFeatures?.includes(\"slippageSetting\")) {\n return;\n }\n if (slippage) {\n setOrderValue(\"slippage\", Number(slippage));\n } else {\n setOrderValue(\"slippage\", undefined);\n }\n }, [slippage, disableFeatures]);\n\n useEffect(() => {\n const clickHandler = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (\n target.closest(\"#order-entry-submit-button\")\n // || target.closest(\".orderly-order-entry\")\n ) {\n return;\n }\n setErrorMsgVisible((visible) => {\n if (visible) {\n return false;\n }\n return visible;\n });\n };\n\n if (errorMsgVisible) {\n document.addEventListener(\"click\", clickHandler);\n } else {\n document.removeEventListener(\"click\", clickHandler);\n }\n\n return () => {\n document.removeEventListener(\"click\", clickHandler);\n };\n }, [errorMsgVisible]);\n\n const onSubmit = useMemoizedFn(async () => {\n const isScaledOrder = formattedOrder.order_type === OrderType.SCALED;\n\n // TODO: in the future, we will be add `level` to `OrderValidationItem`, use `level` manager ui state\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n helper\n .validate(isSlPriceError ? props.slPriceError : undefined)\n .then(\n // validate success, it return the order\n // TODO: get order from other function\n (order: any) => {\n // scaled order is always need confirm\n if (isScaledOrder) {\n return modal.show(scaledOrderConfirmDialogId, {\n order,\n symbolInfo,\n size: isMobile ? \"sm\" : \"md\",\n });\n }\n\n if (needConfirm) {\n return modal.show(orderConfirmDialogId, {\n order: formattedOrder,\n symbolInfo,\n });\n }\n\n return true;\n },\n // should catch validate error first, then submit\n (errors: OrderValidationResult) => {\n // slippage error message is not show input tooltip, so we need to manually show it by toast\n if (errors.slippage) {\n toast.error(t(\"orderEntry.slippage.error.max\"));\n }\n\n // when switch order type, validated not changed, so we need to set it to true\n setErrorMsgVisible(true);\n\n return Promise.reject();\n },\n )\n .then(() => {\n // validate success, submit order\n return submit({ resetOnSuccess: false }).then((result: any) => {\n if (!result.success && result.message) {\n toast.error(result.message);\n } else if (result.success && isScaledOrder) {\n const message = getScaledPlaceOrderMessage(result);\n if (message) {\n toast.success(message);\n }\n }\n });\n })\n .catch((error) => {\n // submit order error\n if (error?.message) {\n toast.error(error.message);\n // toast.error(`Error:${error.message}`);\n\n // if (error instanceof ApiError) {\n // toast.error(error.message);\n }\n });\n });\n\n const formattedMaxQty = useMemo(() => {\n return new Decimal(maxQty)\n .todp(symbolInfo.base_dp, Decimal.ROUND_DOWN)\n .toString();\n }, [maxQty, symbolInfo.base_dp]);\n\n const onMaxQtyConfirm = useCallback(() => {\n setOrderValue(\"order_quantity\", formattedMaxQty);\n // submit order when order_quantity updated\n requestAnimationFrame(() => {\n onSubmit();\n });\n setMaxQtyConfirmOpen(false);\n }, [setOrderValue, formattedMaxQty]);\n\n const validateSubmit = async () => {\n // show a prompt reminding the user. If the user confirms, automatically disable Reduce Only and proceed with the action.\n if (formattedOrder.reduce_only && maxQty === 0) {\n return modal.confirm({\n title: t(\"orderEntry.reduceOnly.reminder\"),\n content: t(\"orderEntry.reduceOnly.reminder.content\"),\n okLabel: t(\"orderEntry.placeOrderNow\"),\n onOk: async () => {\n setOrderValue(\"reduce_only\", false);\n // submit order when reduce only updated\n requestAnimationFrame(() => {\n props.resetMetaState();\n onSubmit();\n });\n return Promise.resolve(true);\n },\n onCancel: async () => {\n return Promise.resolve(false);\n },\n });\n } else if (maxQty > 0 && Number(formattedOrder.order_quantity) > maxQty) {\n setMaxQtyConfirmOpen(true);\n } else {\n onSubmit();\n }\n };\n\n const onShowTPSLAdvanced = () => {\n helper.validate().then(\n () => {\n setShowTPSLAdvanced(true);\n },\n (errors) => {\n const tpslKey = new Set([\"tp_trigger_price\", \"sl_trigger_price\"]);\n if (Object.keys(errors).every((key: string) => tpslKey.has(key))) {\n setShowTPSLAdvanced(true);\n }\n },\n );\n // modal.show(TPSLAdvancedDialogId, {\n // order: formattedOrder,\n // setOrderValue: setOrderValue,\n // });\n // setShowTPSLAdvanced(true);\n };\n\n const onSubmitAdvancedTPSL = (order: OrderlyOrder) => {\n if (order.side !== formattedOrder.side) {\n setOrderValue(\"side\", order.side);\n }\n setOrderValues({\n position_type: order.position_type,\n tp_order_type: order.tp_order_type,\n tp_pnl: order.tp_pnl,\n tp_offset: order.tp_offset,\n tp_offset_percentage: order.tp_offset_percentage,\n tp_ROI: order.tp_ROI,\n tp_trigger_price: order.tp_trigger_price,\n tp_order_price: order.tp_order_price,\n sl_order_type: order.sl_order_type,\n sl_trigger_price: order.sl_trigger_price,\n sl_order_price: order.sl_order_price,\n sl_pnl: order.sl_pnl,\n sl_offset: order.sl_offset,\n sl_offset_percentage: order.sl_offset_percentage,\n sl_ROI: order.sl_ROI,\n });\n setShowTPSLAdvanced(false);\n setHasAdvancedTPSLResult(true);\n };\n\n const onDeleteAdvancedTPSL = () => {\n setHasAdvancedTPSLResult(false);\n setOrderValues({\n tp_trigger_price: undefined,\n tp_order_price: undefined,\n tp_order_type: OrderType.MARKET,\n sl_trigger_price: undefined,\n sl_order_price: undefined,\n sl_order_type: OrderType.MARKET,\n tp_pnl: undefined,\n sl_pnl: undefined,\n position_type: PositionType.FULL,\n });\n };\n\n useEffect(() => {\n setHasAdvancedTPSLResult(false);\n }, [props.symbol]);\n\n const showReduceOnlySection =\n (isMobile &&\n formattedOrder.order_type !== OrderType.LIMIT &&\n formattedOrder.order_type !== OrderType.MARKET) ||\n !isMobile;\n\n const showSoundSection =\n (Boolean(notification?.orderFilled?.media) ||\n Boolean(notification?.orderFilled?.soundOptions?.length)) &&\n (notification?.orderFilled?.displayInOrderEntry ?? true);\n\n const additionalInfoProps: AdditionalInfoProps = {\n pinned,\n setPinned,\n needConfirm,\n setNeedConfirm,\n hidden,\n setHidden,\n onValueChange: setOrderValue,\n orderTypeExtra: formattedOrder[\"order_type_ext\"],\n showExtra:\n formattedOrder[\"order_type\"] === OrderType.LIMIT && !props.tpslSwitch,\n };\n // Additional info (fok,ioc、post only, order confirm hidden)\n const extraButton = !pinned && (\n <AdditionalConfigButton {...additionalInfoProps} />\n );\n\n return (\n <OrderEntryProvider\n errors={errors}\n errorMsgVisible={errorMsgVisible}\n symbolInfo={symbolInfo}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n getErrorMsg={getErrorMsg}\n setOrderValue={setOrderValue}\n setOrderValues={setOrderValues}\n currentFocusInput={currentFocusInput.current}\n priceInputRef={props.priceInputRef}\n priceInputContainerRef={props.priceInputContainerRef}\n triggerPriceInputRef={props.triggerPriceInputRef}\n activatedPriceInputRef={props.activatedPriceInputRef}\n lastQuantityInputType={props.lastQuantityInputType}\n leverage={props.symbolLeverage}\n >\n <MaxQtyConfirm\n open={maxQtyConfirmOpen}\n onOpenChange={setMaxQtyConfirmOpen}\n maxQty={formattedMaxQty}\n onConfirm={onMaxQtyConfirm}\n base={symbolInfo.base}\n />\n <div\n className={cn(\n \"oui-orderEntry\",\n \"oui-space-y-2 oui-text-base-contrast-54 xl:oui-space-y-3\",\n )}\n ref={props.containerRef}\n >\n <OrderEntryHeader\n symbol={props.symbol}\n canTrade={props.canTrade}\n side={side}\n order_type={formattedOrder.order_type!}\n setOrderValue={setOrderValue}\n symbolLeverage={props.symbolLeverage}\n />\n\n <Available\n currentLtv={currentLtv}\n canTrade={props.canTrade}\n quote={symbolInfo?.quote}\n freeCollateral={freeCollateral}\n />\n\n <OrderInput\n values={formattedOrder}\n priceInputContainerWidth={props.priceInputContainerWidth}\n fillMiddleValue={fillMiddleValue}\n bbo={{\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n }}\n />\n\n <QuantitySlider\n canTrade={props.canTrade}\n side={props.side}\n order_quantity={formattedOrder.order_quantity}\n maxQty={maxQty}\n />\n\n {/* Submit button */}\n <ThrottledButton\n fullWidth\n id={\"order-entry-submit-button\"}\n // color={side === OrderSide.BUY ? \"buy\" : \"sell\"}\n data-type={OrderSide.BUY}\n className={cn(\n \"oui-orderEntry-submit-btn\",\n side === OrderSide.BUY\n ? \"orderly-order-entry-submit-button-buy oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\"\n : \"orderly-order-entry-submit-button-sell oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\",\n )}\n onClick={validateSubmit}\n loading={props.isMutating}\n disabled={!props.canTrade}\n >\n {buttonLabel}\n </ThrottledButton>\n\n {/* Asset info */}\n <AssetInfo\n canTrade={props.canTrade}\n quote={symbolInfo.quote}\n estLiqPrice={props.estLiqPrice}\n estLiqPriceDistance={props.estLiqPriceDistance}\n estLeverage={props.estLeverage}\n currentLeverage={props.currentLeverage}\n slippage={slippage}\n dp={symbolInfo.quote_dp}\n setSlippage={setSlippage}\n estSlippage={props.estSlippage}\n orderType={formattedOrder.order_type!}\n disableFeatures={disableFeatures}\n symbol={props.symbol}\n side={side}\n />\n\n <Divider className=\"oui-w-full\" />\n\n {/* TP SL switch and content */}\n {hasAdvancedTPSLResult ? (\n <AdvancedTPSLResult\n order={formattedOrder}\n symbolInfo={props.symbolInfo}\n errors={validated ? errors : null}\n onEdit={() => {\n setShowTPSLAdvanced(true);\n }}\n onDelete={() => {\n onDeleteAdvancedTPSL();\n }}\n />\n ) : (\n <OrderTPSL\n // onCancelTPSL={props.cancelTP_SL}\n // onEnableTP_SL={props.enableTP_SL}\n quote_dp={props.symbolInfo.quote_dp}\n switchState={props.tpslSwitch}\n onSwitchChanged={props.setTpslSwitch}\n orderType={formattedOrder.order_type!}\n errors={\n validated || props.slPriceError !== undefined\n ? { ...errors, ...props.slPriceError }\n : null\n }\n setOrderValue={setOrderValue}\n reduceOnlyChecked={formattedOrder.reduce_only ?? false}\n onReduceOnlyChange={(checked) => {\n setOrderValue(\"reduce_only\", checked);\n }}\n values={{\n position_type:\n formattedOrder.position_type ?? PositionType.PARTIAL,\n tp: {\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 sl: {\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 showTPSLAdvanced={onShowTPSLAdvanced}\n onChange={(key, value) => {\n setOrderValue(key, value);\n }}\n />\n )}\n\n {showReduceOnlySection && (\n <Flex\n justify={\"between\"}\n itemAlign={\"center\"}\n className={cn(\"oui-reduceOnly-container\", \"oui-mt-2\")}\n >\n <ReduceOnlySwitch\n checked={formattedOrder.reduce_only ?? false}\n onCheckedChange={(checked) => {\n setOrderValue(\"reduce_only\", checked);\n }}\n />\n {!showSoundSection && extraButton}\n </Flex>\n )}\n {showSoundSection && (\n <Flex\n justify={\"between\"}\n itemAlign={\"center\"}\n className=\"oui-soundAlert-container\"\n >\n <Flex itemAlign={\"center\"} gapX={1}>\n <Switch\n className={cn(\"oui-soundAlert-switch\", \"oui-h-[14px]\")}\n id={soundAlertId}\n checked={soundAlert}\n onCheckedChange={(checked) => setSoundAlert(checked)}\n />\n <label\n htmlFor={soundAlertId}\n className={cn(\"oui-soundAlert-label\", \"oui-text-xs\")}\n >\n {t(\"portfolio.setting.soundAlerts\")}\n </label>\n </Flex>\n {extraButton}\n </Flex>\n )}\n {!showSoundSection &&\n isMobile &&\n (formattedOrder.order_type == OrderType.LIMIT ||\n formattedOrder.order_type == OrderType.MARKET) &&\n !formattedOrder.reduce_only &&\n !pinned && (\n <Flex className=\"oui-w-full\" justify={\"end\"}>\n {extraButton}\n </Flex>\n )}\n {/* Additional info (fok,ioc、post only, order confirm hidden) */}\n {pinned && (\n <Box\n p={2}\n r={\"md\"}\n intensity={700}\n position={\"relative\"}\n className=\"oui-additional-container\"\n >\n <AdditionalInfo {...additionalInfoProps} />\n <PinButton\n onClick={() => {\n setPinned(false);\n }}\n className={cn(\n \"oui-additional-pin-btn\",\n \"oui-group oui-absolute oui-right-2 oui-top-2\",\n )}\n data-testid=\"oui-testid-orderEntry-pinned-button\"\n />\n </Box>\n )}\n </div>\n\n <SimpleSheet\n open={showTPSLAdvanced}\n onOpenChange={setShowTPSLAdvanced}\n classNames={{\n body: cn(\n \"oui-tpslAdvanced-body\",\n \"oui-h-full oui-pb-0 oui-border-none\",\n ),\n overlay: cn(\"oui-tpslAdvanced-overlay\", \"!oui-bg-base-10/60\"),\n content: cn(\n \"oui-tpslAdvanced-sheet\",\n \"oui-rounded-[16px] oui-border-none !oui-p-0\",\n isMobile\n ? \"oui-inset-y-0 oui-right-0 oui-w-[280px]\"\n : \"!oui-bottom-[40px] oui-right-3 oui-top-[44px] !oui-h-auto oui-w-[360px]\",\n ),\n }}\n contentProps={{ side: \"right\", closeable: false }}\n >\n <TPSLAdvancedWidget\n setOrderValue={setOrderValue}\n order={formattedOrder as OrderlyOrder}\n onSubmit={onSubmitAdvancedTPSL}\n onClose={() => {\n setShowTPSLAdvanced(false);\n }}\n symbolLeverage={props.symbolLeverage}\n />\n </SimpleSheet>\n </OrderEntryProvider>\n );\n};\n","import { useEffect, useMemo, useRef } from \"react\";\nimport { useLocalStorage, useTrack } from \"@orderly.network/hooks\";\nimport {\n BBOOrderType,\n OrderlyOrder,\n OrderSide,\n OrderType,\n TrackerEventName,\n} from \"@orderly.network/types\";\nimport {\n BBOStatus,\n getOrderLevelByBBO,\n getOrderTypeByBBO,\n isBBOOrder,\n} from \"../utils\";\n\nexport function useBBOState({\n tpslSwitch,\n order_type,\n order_type_ext,\n side,\n setOrderValues,\n}: {\n tpslSwitch: boolean;\n order_type?: OrderType;\n order_type_ext?: OrderType;\n side?: OrderSide;\n setOrderValues: (values: Partial<OrderlyOrder>) => void;\n}) {\n const [localBBOType, setLocalBBOType] = useLocalStorage<\n BBOOrderType | undefined\n >(\"orderly_order_bbo_type\", undefined);\n\n const lastBBOType = useRef<BBOOrderType>(localBBOType);\n\n const { track } = useTrack();\n\n const bboStatus = useMemo(() => {\n if (\n tpslSwitch ||\n [OrderType.POST_ONLY, OrderType.IOC, OrderType.FOK].includes(\n order_type_ext!,\n )\n ) {\n return BBOStatus.DISABLED;\n }\n\n return localBBOType && order_type === OrderType.LIMIT\n ? BBOStatus.ON\n : BBOStatus.OFF;\n }, [tpslSwitch, order_type_ext, order_type, localBBOType]);\n\n const toggleBBO = () => {\n track(TrackerEventName.clickBBOButton);\n if (localBBOType) {\n // unselect bbo\n setLocalBBOType(undefined);\n // update formattedOrder values immediately instead of via useEffect\n setOrderValues({\n order_type_ext: undefined,\n level: undefined,\n });\n } else {\n setLocalBBOType(lastBBOType.current || BBOOrderType.COUNTERPARTY1);\n }\n };\n\n const onBBOChange = (value: BBOOrderType) => {\n setLocalBBOType(value);\n lastBBOType.current = value;\n };\n\n useEffect(() => {\n if (bboStatus === BBOStatus.DISABLED) {\n setOrderValues({\n // if order_type_ext is not bbo(ask, bid), keep previous value\n order_type_ext: isBBOOrder({ order_type_ext })\n ? undefined\n : order_type_ext,\n level: undefined,\n });\n }\n }, [bboStatus, order_type_ext]);\n\n useEffect(() => {\n if (bboStatus === BBOStatus.ON) {\n const orderType = getOrderTypeByBBO(localBBOType, side!);\n const orderLevel = getOrderLevelByBBO(localBBOType)!;\n setOrderValues({\n order_type_ext: orderType,\n level: orderLevel,\n });\n }\n }, [localBBOType, bboStatus, side]);\n\n return {\n bboStatus,\n bboType: localBBOType,\n setBBOType: setLocalBBOType,\n onBBOChange,\n toggleBBO,\n };\n}\n","import { useRef, FocusEvent } from \"react\";\nimport { OrderEntryReturn, useMemoizedFn, utils } from \"@orderly.network/hooks\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputType } from \"../types\";\n\ntype FocusAndBlurProps = {\n base_tick: number;\n order_type?: OrderType;\n order_quantity?: string;\n setValue: OrderEntryReturn[\"setValue\"];\n};\n\nexport function useFocusAndBlur(props: FocusAndBlurProps) {\n const { base_tick, order_type, order_quantity, setValue } = props;\n const currentFocusInput = useRef<InputType>(InputType.NONE);\n const lastScaledOrderPriceInput = useRef<InputType>(InputType.END_PRICE);\n const lastQuantityInputType = useRef<InputType>(InputType.NONE);\n\n const formatQty = () => {\n if (\n base_tick < 1 ||\n // scaled order should not format quantity, because it is total quantity\n order_type === OrderType.SCALED ||\n !order_quantity\n ) {\n return;\n }\n\n // TODO: use this to format quantity instead of utils.formatNumber, need time to test\n // const formatQty = new Decimal(formattedOrder.order_quantity)\n // .todp(0, Decimal.ROUND_DOWN)\n // .div(symbolInfo.base_tick)\n // .toString();\n\n const quantity = utils.formatNumber(\n order_quantity,\n new Decimal(base_tick || \"0\").toNumber(),\n );\n\n setValue(\"order_quantity\", quantity, {\n shouldUpdateLastChangedField: false,\n });\n };\n\n const onFocus = (type: InputType) => (_: FocusEvent) => {\n currentFocusInput.current = type;\n\n // set last scaled order price input\n if (\n [InputType.START_PRICE, InputType.END_PRICE].includes(\n currentFocusInput.current!,\n )\n ) {\n lastScaledOrderPriceInput.current = type;\n }\n\n if (\n [InputType.QUANTITY, InputType.TOTAL, InputType.MARGIN].includes(type)\n ) {\n lastQuantityInputType.current = type;\n }\n };\n\n const onBlur = (type: InputType) => (_: FocusEvent) => {\n setTimeout(() => {\n if (currentFocusInput.current !== type) {\n return;\n }\n currentFocusInput.current = InputType.NONE;\n }, 300);\n\n if (type === InputType.QUANTITY) {\n formatQty();\n }\n };\n\n return {\n currentFocusInput,\n lastScaledOrderPriceInput,\n lastQuantityInputType,\n onFocus: useMemoizedFn(onFocus),\n onBlur: useMemoizedFn(onBlur),\n };\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { OrderType } from \"@orderly.network/types\";\n\nexport function usePriceInputContainer({\n order_type_ext,\n}: {\n order_type_ext?: OrderType;\n}) {\n const [priceInputContainerWidth, setPriceInputContainerWidth] = useState(0);\n const priceInputContainerRef = useRef<HTMLDivElement | null>(null);\n\n // useEffect(() => {\n // if (\n // priceInputContainerRef.current &&\n // // update BBO select width when is BBO order\n // isBBOOrder({ order_type_ext: formattedOrder.order_type_ext })\n // ) {\n // const width =\n // priceInputContainerRef.current.getBoundingClientRect()?.width;\n // if (width) {\n // setPriceInputContainerWidth(width);\n // }\n // }\n // }, [priceInputContainerRef, formattedOrder.order_type_ext]);\n\n useEffect(() => {\n const element = priceInputContainerRef.current;\n\n if (!element) {\n return;\n }\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n if (width) {\n // update BBO order select dropdown width when priceInputContainerRef width changed\n setPriceInputContainerWidth(width);\n }\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.unobserve(element);\n };\n }, [priceInputContainerRef, order_type_ext]);\n\n return { priceInputContainerRef, priceInputContainerWidth };\n}\n","import { useEffect, useMemo, useRef } from \"react\";\nimport {\n useComputedLTV,\n useEventEmitter,\n useLocalStorage,\n useMarginRatio,\n useMemoizedFn,\n useOrderEntry,\n useOrderlyContext,\n useTpslPriceChecker,\n} from \"@orderly.network/hooks\";\nimport { useCanTrade } from \"@orderly.network/react-app\";\nimport {\n DistributionType,\n OrderLevel,\n OrderSide,\n OrderType,\n PositionType,\n ORDER_ENTRY_EST_LIQ_PRICE_CHANGE,\n} from \"@orderly.network/types\";\nimport { Decimal, removeTrailingZeros } from \"@orderly.network/utils\";\nimport { useAskAndBid } from \"./hooks/useAskAndBid\";\nimport { useBBOState } from \"./hooks/useBBOState\";\nimport { useFocusAndBlur } from \"./hooks/useFocusAndBlur\";\nimport { usePriceInputContainer } from \"./hooks/usePriceInputContainer\";\nimport { InputType } from \"./types\";\nimport { BBOStatus, isBBOOrder, safeNumber } from \"./utils\";\n\nexport type OrderEntryScriptInputs = {\n symbol: string;\n};\n\nexport const ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\nexport const ORDERLY_ORDER_SOUND_OPTION_KEY = \"orderly_order_sound_option\";\n\nexport type OrderEntryScriptReturn = ReturnType<typeof useOrderEntryScript>;\n\nconst ORDER_ENTRY_EST_LIQ_ACTIVE_WINDOW_MS = 3 * 1000;\n\nexport const useOrderEntryScript = (inputs: OrderEntryScriptInputs) => {\n /** Active user window for treating estLiqPrice as coming from an actively edited order. */\n const { symbol } = inputs;\n const [localOrderType, setLocalOrderType] = useLocalStorage(\n \"orderly-order-entry-order-type\",\n OrderType.LIMIT,\n );\n const [localOrderSide, setLocalOrderSide] = useLocalStorage(\n \"orderly-order-entry-order-side\",\n OrderSide.BUY,\n );\n\n const { notification } = useOrderlyContext();\n\n const orderFilledConfig = notification?.orderFilled;\n const defaultSoundValue =\n orderFilledConfig?.defaultSoundValue ??\n orderFilledConfig?.soundOptions?.[0]?.value;\n\n const [soundAlert, setSoundAlert] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n orderFilledConfig?.defaultOpen ?? false,\n );\n\n const [initialSoundValue] = useLocalStorage<string | null>(\n ORDERLY_ORDER_SOUND_OPTION_KEY,\n defaultSoundValue ?? null,\n );\n void initialSoundValue;\n\n const canTrade = useCanTrade();\n\n const {\n formattedOrder,\n setValue,\n setValues: setOrderValues,\n symbolInfo,\n ...state\n } = useOrderEntry(symbol, {\n initialOrder: {\n symbol,\n order_type: localOrderType,\n position_type: PositionType.PARTIAL,\n side: localOrderSide,\n },\n });\n\n const [tpslSwitch, setTpslSwitch] = useLocalStorage(\n \"orderly-order-entry-tp_sl-switch\",\n false,\n );\n\n const { currentLeverage } = useMarginRatio();\n const ee = useEventEmitter();\n const triggerPriceInputRef = useRef<HTMLInputElement | null>(null);\n const priceInputRef = useRef<HTMLInputElement | null>(null);\n const activatedPriceInputRef = useRef<HTMLInputElement | null>(null);\n /** Tracks last time the user interacted with core order inputs (used to gate estLiqPrice emission). */\n const lastUserActiveTimeRef = useRef<number>(Date.now());\n\n const { bboStatus, bboType, setBBOType, onBBOChange, toggleBBO } =\n useBBOState({\n tpslSwitch,\n order_type: formattedOrder.order_type,\n order_type_ext: formattedOrder.order_type_ext,\n side: formattedOrder.side,\n setOrderValues,\n });\n\n const {\n currentFocusInput,\n lastScaledOrderPriceInput,\n lastQuantityInputType,\n onFocus,\n onBlur,\n } = useFocusAndBlur({\n base_tick: symbolInfo?.base_tick,\n order_type: formattedOrder.order_type,\n order_quantity: formattedOrder.order_quantity,\n setValue,\n });\n\n // cancel TP/SL\n const cancelTP_SL = () => {\n // if(formattedOrder.)\n setOrderValues({\n tp_trigger_price: \"\",\n sl_trigger_price: \"\",\n position_type: PositionType.FULL,\n });\n };\n\n const enableTP_SL = () => {\n setOrderValues({\n order_type_ext: undefined,\n position_type: PositionType.FULL,\n });\n };\n\n const setOrderValue = useMemoizedFn(\n (\n key: any,\n value: any,\n options?: {\n shouldUpdateLastChangedField?: boolean;\n },\n ) => {\n if (key === \"order_type\") {\n setLocalOrderType(value);\n }\n if (key === \"side\") {\n setLocalOrderSide(value);\n }\n\n if (\n (key === \"reduce_only\" && value) ||\n (key === \"order_type\" &&\n (value === OrderType.STOP_LIMIT || value === OrderType.STOP_MARKET))\n ) {\n // cancelTP_SL();\n\n const data = {\n tp_trigger_price: \"\",\n sl_trigger_price: \"\",\n [key]: value,\n };\n\n if (key === \"order_type\") {\n data[\"order_type_ext\" as any] = \"\";\n }\n\n setOrderValues(data);\n\n return;\n }\n\n if (key === \"order_type\" && value !== OrderType.LIMIT) {\n const data = {\n level: undefined,\n order_type_ext: undefined,\n [key]: value,\n };\n\n setOrderValues(data);\n\n return;\n }\n\n if (key === \"order_type\" && value === OrderType.SCALED) {\n setOrderValues({\n distribution_type: DistributionType.FLAT,\n [key]: value,\n });\n return;\n }\n\n setValue(key, value, options);\n },\n );\n\n const onTPSLSwitchChanged = (state: boolean) => {\n setTpslSwitch(state);\n if (state) {\n enableTP_SL();\n } else {\n cancelTP_SL();\n }\n };\n\n useEffect(() => {\n const updateOrderPrice = (price: string) => {\n setValue(\"order_price\", price);\n };\n ee.on(\"update:orderPrice\", updateOrderPrice);\n\n return () => {\n ee.off(\"update:orderPrice\", updateOrderPrice);\n };\n }, []);\n\n useEffect(() => {\n const focusInputElement = (target: HTMLInputElement | null) => {\n requestAnimationFrame(() => {\n target?.focus();\n });\n };\n\n // handle orderbook item click event\n const orderBookItemClickHandler = (item: number[]) => {\n const price = removeTrailingZeros(item[0]);\n const { order_type, order_type_ext } = formattedOrder;\n\n // handle trigger price input, focus on trigger price input\n if (\n currentFocusInput.current === InputType.TRIGGER_PRICE &&\n (order_type === OrderType.STOP_LIMIT ||\n order_type === OrderType.STOP_MARKET)\n ) {\n setValue(\"trigger_price\", price);\n focusInputElement(triggerPriceInputRef.current);\n return;\n }\n\n // handle bbo order, unselect bbo and set order price, focus on order price input\n if (isBBOOrder({ order_type, order_type_ext })) {\n setBBOType(undefined);\n\n setOrderValues({\n order_type_ext: undefined,\n level: undefined,\n });\n\n requestAnimationFrame(() => {\n // Since BBO will update the price when unselected, we should set order price in requestAnimationFrame\n // We can't call setValue directly here because it's inside a requestAnimationFrame, and the formattedOrder accessed inside setValue would be the old value\n // setValue(\"order_price\", price);\n ee.emit(\"update:orderPrice\", price);\n });\n\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle limit order and stop limit order, set order price and focus on order price input\n if (\n order_type === OrderType.STOP_LIMIT ||\n order_type === OrderType.LIMIT\n ) {\n setValue(\"order_price\", price);\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle stop market order, set trigger price and focus on trigger price input\n if (order_type === OrderType.STOP_MARKET) {\n setValue(\"trigger_price\", price);\n focusInputElement(triggerPriceInputRef.current);\n return;\n }\n\n // handle market order, set order type to limit\n if (order_type === OrderType.MARKET) {\n // unselect bbo\n setBBOType(undefined);\n\n // You can't call setValue twice here , the second value will override the first, so you need to combine them into a single setValues call\n setOrderValues({\n order_type: OrderType.LIMIT,\n order_price: price,\n });\n\n focusInputElement(priceInputRef.current);\n return;\n }\n\n if (\n order_type === OrderType.SCALED &&\n lastScaledOrderPriceInput.current\n ) {\n const field =\n lastScaledOrderPriceInput.current === InputType.START_PRICE\n ? \"start_price\"\n : \"end_price\";\n setValue(field, price);\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle trailing stop order, set activated price and focus on activated price input\n if (order_type === OrderType.TRAILING_STOP) {\n setValue(\"activated_price\", price);\n focusInputElement(activatedPriceInputRef.current);\n return;\n }\n\n // default, set order price and focus on order price input\n setValue(\"order_price\", price);\n focusInputElement(priceInputRef.current);\n };\n\n ee.on(\"orderbook:item:click\", orderBookItemClickHandler);\n\n return () => {\n ee.off(\"orderbook:item:click\", orderBookItemClickHandler);\n };\n // Please do not modify this deps lightly, because `setValue` also relies on these state internally\n }, [formattedOrder, symbolInfo]);\n\n useEffect(() => {\n // after switching symbol, all the input number should be cleared (price, qty, TP/SL, etc)\n state.reset();\n state.resetMetaState();\n // reset last quantity input type\n lastQuantityInputType.current = InputType.NONE;\n }, [symbol]);\n\n // if scaled order, and distribution_type is not set, set it to flat\n useEffect(() => {\n if (\n formattedOrder.order_type === OrderType.SCALED &&\n !formattedOrder.distribution_type\n ) {\n setValue(\"distribution_type\", DistributionType.FLAT);\n }\n }, [formattedOrder.order_type, formattedOrder.distribution_type]);\n\n const currentLtv = useComputedLTV();\n const askAndBid = useAskAndBid();\n\n const fillMiddleValue = () => {\n if (bboStatus === BBOStatus.ON) {\n toggleBBO();\n }\n if (formattedOrder.order_type === OrderType.LIMIT) {\n const [bestAsk = 0, bestBid = 0] = askAndBid;\n const midPrice = new Decimal(safeNumber(bestAsk))\n .add(safeNumber(bestBid))\n .div(2)\n .toNumber();\n // 1. Since BBO will update the price when unselected, we should set order price in raf\n // 2. raf is mainly used to solve the timing problem caused by React state update, ensuring that the orderPrice is triggered after the state is fully updated to avoid accessing expired state values.\n requestAnimationFrame(() => {\n ee.emit(\"update:orderPrice\", midPrice);\n });\n }\n };\n\n const { priceInputContainerRef, priceInputContainerWidth } =\n usePriceInputContainer({\n order_type_ext: formattedOrder.order_type_ext,\n });\n\n const slPriceError = useTpslPriceChecker({\n slPrice: formattedOrder.sl_trigger_price,\n liqPrice: state.estLiqPrice,\n side: formattedOrder.side,\n currentPosition: state.currentPosition,\n orderQuantity: Number(formattedOrder.order_quantity),\n });\n\n useEffect(() => {\n if (formattedOrder.reduce_only) {\n setTpslSwitch(false);\n }\n }, [formattedOrder.reduce_only]);\n\n useEffect(() => {\n if (tpslSwitch) {\n setOrderValue(\"reduce_only\", false);\n }\n }, [tpslSwitch]);\n\n /** Track user activity via core order fields (price, quantity, side) to drive estLiqPrice active window. */\n useEffect(() => {\n lastUserActiveTimeRef.current = Date.now();\n }, [\n formattedOrder.order_price,\n formattedOrder.order_quantity,\n formattedOrder.side,\n ]);\n\n /**\n * Broadcast estimated liquidation price for TradingView chart liquidation line (avoids parent state / callback loops).\n * Includes a user-activity flag so downstream consumers can decide whether to treat this estLiqPrice as active.\n */\n useEffect(() => {\n const lastActive = lastUserActiveTimeRef.current;\n const now = Date.now();\n const isUserActive =\n now - lastActive <= ORDER_ENTRY_EST_LIQ_ACTIVE_WINDOW_MS;\n\n ee.emit(ORDER_ENTRY_EST_LIQ_PRICE_CHANGE, {\n symbol,\n estLiqPrice: state.estLiqPrice ?? null,\n isUserActive,\n });\n }, [ee, symbol, state.estLiqPrice]);\n\n return {\n ...state,\n slPriceError: slPriceError ?? undefined,\n side: formattedOrder.side as OrderSide,\n type: formattedOrder.order_type as OrderType,\n level: formattedOrder.level as OrderLevel,\n formattedOrder,\n setOrderValue,\n setOrderValues,\n currentLeverage,\n\n // cancelTP_SL,\n // enableTP_SL,\n tpslSwitch,\n setTpslSwitch: onTPSLSwitchChanged,\n symbolInfo,\n onFocus,\n onBlur,\n\n priceInputRef,\n priceInputContainerRef,\n priceInputContainerWidth,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n\n canTrade,\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n currentLtv,\n fillMiddleValue,\n symbol,\n soundAlert,\n setSoundAlert,\n currentFocusInput,\n };\n};\n","import React from \"react\";\nimport {\n OrderEntryScriptInputs,\n useOrderEntryScript,\n} from \"./orderEntry.script\";\nimport { OrderEntry } from \"./orderEntry.ui\";\n\nexport const OrderEntryWidget: React.FC<\n OrderEntryScriptInputs & {\n containerRef?: React.RefObject<HTMLDivElement>;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n }\n> = (props) => {\n const state = useOrderEntryScript(props);\n return (\n <OrderEntry\n {...state}\n containerRef={props.containerRef}\n disableFeatures={props.disableFeatures}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/additional/additionalInfo.tsx","../src/components/additional/additionalConfigButton.tsx","../src/components/additional/pinButton.tsx","../src/components/advancedTPSLResult/index.tsx","../src/components/fee/regularFee/regularFees.ui.tsx","../src/components/fee/regularFee/regularFees.widget.tsx","../src/components/fee/fees.widget.tsx","../src/components/slippage/components/slippageEditor.tsx","../src/components/slippage/components/slippageCell.tsx","../src/components/slippage/slippage.ui.tsx","../src/components/assetInfo/index.tsx","../src/components/LTVRiskTooltip/LTVRiskTooltip.ui.tsx","../src/components/LTVRiskTooltip/LTVRiskTooltip.script.ts","../src/components/LTVRiskTooltip/LTVRiskTooltip.widget.tsx","../src/components/available/index.tsx","../src/utils.ts","../src/components/dialog/confirm.ui.tsx","../src/components/dialog/maxQtyConfirm.tsx","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.ui.tsx","../src/hooks/useAskAndBid.ts","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.script.ts","../src/components/dialog/scaledOrderConfirm/scaledOrderConfirm.widget.tsx","../src/components/orderTypeSelect/index.tsx","../src/components/marginModeSwitch/marginModeSwitch.ui.tsx","../src/components/marginModeSwitch/marginModeSwitch.script.tsx","../src/components/marginModeSettings/marginModeSettings.script.tsx","../src/components/marginModeSettings/marginModeSettings.ui.tsx","../src/components/marginModeSettings/marginModeSettings.widget.tsx","../src/components/marginModeSwitch/marginModeSwitch.widget.tsx","../src/components/header/LeverageBadge.tsx","../src/components/header/index.tsx","../src/components/orderEntryContext.tsx","../src/components/orderEntryProvider.tsx","../src/components/customInput/index.tsx","../src/components/orderInput/limit/bboOrderTypeSelect.tsx","../src/components/orderInput/limit/limitPriceSuffix.tsx","../src/components/orderInput/limit/priceInput.tsx","../src/components/orderInput/qtyAndTotal/quantityInput.tsx","../src/components/orderInput/qtyAndTotal/totalTypeSelect.tsx","../src/components/orderInput/qtyAndTotal/totalInput.tsx","../src/components/orderInput/qtyAndTotal/qtyAndTotalInput.tsx","../src/components/orderInput/scaledOrder/quantityDistributionInput.tsx","../src/components/orderInput/scaledOrder/scaledPriceInput.tsx","../src/components/orderInput/scaledOrder/scaledQuantityUnit.tsx","../src/components/orderInput/scaledOrder/scaledQuantityInput.tsx","../src/components/orderInput/scaledOrder/skewInput.tsx","../src/components/orderInput/scaledOrder/totalOrdersInput.tsx","../src/components/orderInput/scaledOrder/index.tsx","../src/components/orderInput/stop/triggerPriceInput.tsx","../src/components/orderInput/trailingStop/activePriceInput.tsx","../src/components/orderInput/trailingStop/callbackRatePercentages.tsx","../src/components/orderInput/trailingStop/trailingCallbackSelect.tsx","../src/components/orderInput/trailingStop/trailingCallbackInput.tsx","../src/components/orderInput/trailingStop/index.tsx","../src/components/orderInput/index.tsx","../src/components/quantitySlider/index.tsx","../src/components/reduceOnlySwitch/index.tsx","../src/components/pnlInput/pnlInputContext.tsx","../src/components/pnlInput/useBuilder.script.ts","../src/components/pnlInput/pnlInput.ui.tsx","../src/components/pnlInput/pnlInput.widget.tsx","../src/components/pnlInput/pnlInputProvider.tsx","../src/components/tpsl.tsx","../src/orderEntry.ui.tsx","../src/hooks/useBBOState.ts","../src/hooks/useFocusAndBlur.ts","../src/hooks/usePriceInputContainer.ts","../src/orderEntry.script.ts","../src/orderEntry.injectable.tsx","../src/orderEntry.widget.tsx"],"names":["useTranslation","useEffect","jsxs","cn","Flex","jsx","Checkbox","OrderType","Tooltip","Fragment","Divider","Switch","open","useState","PopoverRoot","PopoverTrigger","PopoverContent","useOrderEntryFormErrorMsg","Text","PositionType","AuthGuard","useFeeState","useRwaSymbolsInfoStore","forwardRef","useImperativeHandle","Decimal","modal","ExclamationFillIcon","TooltipTrigger","Input","inputFormatter","Box","useBoolean","useScreen","useRef","SimpleDialog","EditIcon","useGetEstLiqPrice","removeTrailingZeros","Button","useQuery","useHoldingStream","useAppStore","useIndexPricesStream","account","zero","useComputedLTV","useCallback","useMemo","MarginMode","InfoCircleIcon","AddCircleIcon","options","BBOOrderType","OrderSide","OrderLevel","i18n","usePositionStream","useLocalStorage","getBBOType","Badge","textVariants","Grid","registerSimpleDialog","memo","TokenIcon","DataTable","useEventEmitter","useDebouncedCallback","national","order","totalQuantity","Select","IconButton","CloseIcon","ChevronRightIcon","useMarginModeBySymbol","toast","useMarkets","MarketsType","formatSymbol","useMarginModes","CloseCircleFillIcon","registerSimpleSheet","useModal","useFeatureFlag","FlagKeys","SymbolLeverageSheetId","SymbolLeverageDialogId","createContext","useContext","EMPTY_LIST","item","margin","total","DistributionType","value","TrailingCallbackType","utils","Slider","todpIfNeed","mode","SimpleDropdownMenu","CaretDownIcon","React","ERROR_MSG_CODES","DotStatus","TPSLPositionTypeWidget","SettingFillIcon","useOrderlyContext","useId","useMemoizedFn","errors","ThrottledButton","SimpleSheet","TPSLAdvancedWidget","useTrack","TrackerEventName","useCanTrade","useOrderEntry","useMarginRatio","state","useTpslPriceChecker","ORDER_ENTRY_EST_LIQ_PRICE_CHANGE","injectable"],"mappings":"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","file":"index.js","sourcesContent":["import { FC, useEffect } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderlyOrder, OrderType } from \"@orderly.network/types\";\nimport {\n Checkbox,\n cn,\n Divider,\n Flex,\n Switch,\n Tooltip,\n} from \"@orderly.network/ui\";\n\nexport type AdditionalInfoProps = {\n pinned: boolean;\n setPinned: (value: boolean) => void;\n needConfirm: boolean;\n setNeedConfirm: (value: boolean) => void;\n hidden: boolean;\n setHidden: (value: boolean) => void;\n onValueChange?: (key: keyof OrderlyOrder, value: any) => void;\n orderTypeExtra?: OrderType;\n showExtra?: boolean;\n};\n\nexport const AdditionalInfo: FC<AdditionalInfoProps> = (props) => {\n const { pinned, orderTypeExtra } = props;\n const { t } = useTranslation();\n\n const onTypeToggle = (type: OrderType) => (checked: boolean) => {\n if (props.onValueChange) {\n props.onValueChange(\n \"order_type_ext\" as keyof OrderlyOrder,\n checked ? type : \"\",\n // orderTypeExtra === type ? \"\" : type\n );\n }\n };\n\n useEffect(() => {\n props.onValueChange?.(\"visible_quantity\", props.hidden ? 0 : 1);\n }, [props.hidden]);\n\n return (\n <div\n className={cn(\n \"oui-orderEntry-additionalInfo\",\n \"oui-text-base-contrast-54\",\n )}\n >\n <Flex\n justify={pinned ? \"start\" : \"between\"}\n mb={3}\n width={pinned ? \"unset\" : \"100%\"}\n className=\"oui-gap-x-2 md:oui-gap-x-3\"\n wrap=\"wrap\"\n gapY={1}\n >\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-postOnly-checkBox\"\n id={\"toggle_order_post_only\"}\n className={\"oui-postOnly-checkbox oui-peer\"}\n color={\"white\"}\n variant={\"radio\"}\n disabled={!props.showExtra}\n checked={orderTypeExtra === OrderType.POST_ONLY}\n onCheckedChange={onTypeToggle(OrderType.POST_ONLY)}\n />\n <Tooltip\n content={t(\"orderEntry.orderType.postOnly.tooltip\")}\n className=\"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-80\"\n >\n <label\n htmlFor={\"toggle_order_post_only\"}\n className={cn(\n \"oui-postOnly-label\",\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-cursor-pointer oui-whitespace-nowrap oui-break-normal oui-border-b oui-border-dashed oui-border-line-12\",\n )}\n >\n {t(\"orderEntry.orderType.postOnly\")}\n </label>\n </Tooltip>\n </Flex>\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-ioc-checkBox\"\n id={\"toggle_order_iov\"}\n color={\"white\"}\n className={cn(\"oui-ioc-checkbox\", \"oui-peer\")}\n variant={\"radio\"}\n checked={orderTypeExtra === OrderType.IOC}\n onCheckedChange={onTypeToggle(OrderType.IOC)}\n disabled={!props.showExtra}\n />\n <Tooltip\n content={t(\"orderEntry.orderType.ioc.tooltip\")}\n className=\"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-80\"\n >\n <label\n htmlFor={\"toggle_order_iov\"}\n className={cn(\n \"oui-ioc-label\",\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-cursor-pointer oui-whitespace-nowrap oui-break-normal oui-border-b oui-border-dashed oui-border-line-12\",\n )}\n >\n {t(\"orderEntry.orderType.ioc\")}\n </label>\n </Tooltip>\n </Flex>\n <Flex itemAlign={\"center\"}>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-fox-checkBox\"\n id={\"toggle_order_fok\"}\n color={\"white\"}\n variant={\"radio\"}\n className={cn(\"oui-fok-checkbox\", \"oui-peer\")}\n checked={orderTypeExtra === OrderType.FOK}\n onCheckedChange={onTypeToggle(OrderType.FOK)}\n disabled={!props.showExtra}\n />\n <Tooltip\n content={t(\"orderEntry.orderType.fok.tooltip\")}\n className=\"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-80\"\n >\n <label\n htmlFor={\"toggle_order_fok\"}\n className={cn(\n \"oui-fok-label\",\n \"oui-ml-1 oui-text-2xs peer-data-[disabled]:oui-text-base-contrast-20\",\n \"oui-cursor-pointer oui-whitespace-nowrap oui-break-normal oui-border-b oui-border-dashed oui-border-line-12\",\n )}\n >\n {t(\"orderEntry.orderType.fok\")}\n </label>\n </Tooltip>\n </Flex>\n </Flex>\n\n <Flex gapX={6}>\n <Flex>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-orderConfirm-checkBox\"\n id={\"toggle_order_confirm\"}\n color={\"white\"}\n className=\"oui-orderConfirm-checkbox\"\n checked={props.needConfirm}\n onCheckedChange={(checked) => {\n props.setNeedConfirm(!!checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_confirm\"}\n className={\"oui-orderConfirm-label oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.orderConfirm\")}\n </label>\n </Flex>\n <Flex>\n <Checkbox\n data-testid=\"oui-testid-orderEntry-hidden-checkBox\"\n id={\"toggle_order_hidden\"}\n color={\"white\"}\n className=\"oui-orderHidden-checkbox\"\n checked={props.hidden}\n onCheckedChange={(checked: boolean) => {\n props.setHidden(checked);\n }}\n />\n <Tooltip\n content={t(\"orderEntry.hidden.tooltip\")}\n className=\"oui-max-w-[280px] oui-text-2xs oui-text-base-contrast-80\"\n >\n <label\n htmlFor={\"toggle_order_hidden\"}\n className={\n \"oui-orderHidden-label oui-ml-1 oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12 oui-text-2xs\"\n }\n >\n {t(\"orderEntry.hidden\")}\n </label>\n </Tooltip>\n </Flex>\n </Flex>\n {!pinned && (\n <>\n <Divider className={\"oui-my-3\"} />\n <Flex>\n <Switch\n data-testid=\"oui-testid-orderEntry-additional-keepVisible-switch\"\n id={\"toggle_order_keep_visible\"}\n className=\"oui-keepVisible-switch\"\n onCheckedChange={(checked) => {\n props.setPinned(checked);\n }}\n />\n <label\n htmlFor={\"toggle_order_keep_visible\"}\n className={\"oui-keepVisible-label oui-ml-1 oui-text-2xs\"}\n >\n {t(\"orderEntry.keepVisible\")}\n </label>\n </Flex>\n </>\n )}\n </div>\n );\n};\n","import { useState } from \"react\";\nimport {\n PopoverContent,\n PopoverRoot,\n PopoverTrigger,\n} from \"@orderly.network/ui\";\nimport { AdditionalInfo, AdditionalInfoProps } from \"./additionalInfo\";\n\nexport function AdditionalConfigButton(props: AdditionalInfoProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n data-testid=\"oui-testid-orderEntry-additional-button\"\n className=\"oui-orderEntry-additionalConfig-btn\"\n onClick={() => {\n setOpen(true);\n }}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-36 hover:oui-fill-base-contrast-80\"\n >\n <path\n d=\"M3.332 2.665a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V3.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667V7.332a.667.667 0 0 0-.667-.667zm-8 4a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667zm4 0a.667.667 0 0 0-.667.667v1.333c0 .368.299.667.667.667h1.333a.667.667 0 0 0 .667-.667v-1.333a.667.667 0 0 0-.667-.667z\"\n // fill=\"#fff\"\n // fillOpacity={open ? 0.8 : 0.36}\n />\n </svg>\n </button>\n </PopoverTrigger>\n <PopoverContent\n side={\"top\"}\n align={\"end\"}\n className={\n \"oui-orderEntry-additionalInfo-popover-content oui-w-[230px]\"\n }\n >\n <AdditionalInfo {...props} />\n </PopoverContent>\n </PopoverRoot>\n );\n}\n","import { HTMLAttributes, useState } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\n\nconst defaultPath =\n \"M10.007 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.852-2.523 1.233.361 1.95.015 2.961-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103 5.35 5.35 0 0 0-2.104-1.312c-.448-.15-.808-.208-1.042-.208\";\n\nexport const PinButton = (props: HTMLAttributes<HTMLButtonElement>) => {\n const [path, setPath] = useState(defaultPath);\n return (\n <button\n {...props}\n className={cn(\"oui-orderEntry-pin-btn\", props.className)}\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable={false}\n onMouseEnter={() => {\n setPath(\n 'M10.008 1.302a.74.74 0 0 0-.486.214c-1.033.989-1.349 1.815-.972 2.948-.88.675-1.437.84-2.536.84-1.503 0-2.484.182-3.152.85v.02a1.583 1.583 0 0 0 0 2.248l1.867 1.882-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.194 1.87 1.861a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.523.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.48c0-.234-.06-.593-.209-1.04a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.15-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.107.507.508.94 1.13 1.119 1.945-.636.61-1.026.658-1.662.323a.67.67 0 0 0-.779.117c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.292-.076 1.773-.48 2.206-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.515 2.226-.514 1.742.001 2.668-.448 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.686-.29-1.047.321-1.67\"',\n );\n }}\n onMouseLeave={() => {\n setPath(defaultPath);\n }}\n className=\"oui-text-primary-darken\"\n >\n <path d={path} />\n </svg>\n </button>\n );\n};\n","import { SVGProps } from \"react\";\nimport { OrderValidationResult } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport {\n API,\n OrderlyOrder,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport { Divider, Flex, Text } from \"@orderly.network/ui\";\n\nexport function AdvancedTPSLResult(props: {\n order: Partial<OrderlyOrder>;\n symbolInfo: API.SymbolExt;\n errors: OrderValidationResult | null;\n onEdit: () => void;\n onDelete: () => void;\n}) {\n const { order: formattedOrder, symbolInfo, onEdit, onDelete, errors } = props;\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n const { t } = useTranslation();\n\n const renderTp = () => {\n const error = getErrorMsg(\"tp_trigger_price\");\n if (formattedOrder.tp_trigger_price || formattedOrder.tp_order_price) {\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-advancedTPSLResult-tp oui-w-full\"\n gap={4}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n gapY={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpTriggerPrice\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.tp_trigger_price ?? \"\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.tpOrderPrice\")}</Text>\n {formattedOrder.tp_order_type === OrderType.LIMIT ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.tp_order_price ?? \"\"}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast\">Market</Text>\n )}\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.totalEstTpPnl\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n coloring\n dp={2}\n >\n {Number(formattedOrder.tp_pnl)}\n </Text.numeral>\n </Flex>\n </Flex>\n {error && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"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\">{error}</Text>\n </Flex>\n )}\n </Flex>\n );\n }\n return null;\n };\n\n const renderSl = () => {\n if (formattedOrder.sl_trigger_price || formattedOrder.sl_order_price) {\n const error = getErrorMsg(\"sl_trigger_price\");\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-advancedTPSLResult-sl oui-w-full\"\n gap={4}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n gapY={1}\n className=\"oui-w-full\"\n >\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slTriggerPrice\")}</Text>\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.sl_trigger_price ?? \"\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.slOrderPrice\")}</Text>\n {formattedOrder.sl_order_type === OrderType.LIMIT ? (\n <Text.numeral\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n className=\"oui-text-base-contrast\"\n dp={symbolInfo.quote_dp}\n >\n {formattedOrder.sl_order_price ?? \"\"}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast\">Market</Text>\n )}\n </Flex>\n\n <Flex justify={\"between\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.totalEstSlPnl\")}</Text>\n <Text.numeral\n coloring\n suffix={\n <Text className=\"oui-ml-1 oui-text-base-contrast-36\">\n {symbolInfo.quote}\n </Text>\n }\n dp={2}\n >\n {Number(formattedOrder.sl_pnl)}\n </Text.numeral>\n </Flex>\n {error && (\n <Flex\n justify={\"start\"}\n itemAlign={\"start\"}\n gap={2}\n className=\"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\">{error}</Text>\n </Flex>\n )}\n </Flex>\n </Flex>\n );\n }\n return null;\n };\n\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-orderEntry-advancedTpslResult oui-w-full oui-text-2xs\"\n gap={4}\n >\n <Flex\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-advancedTpslResult-header oui-w-full\"\n >\n <Text>{t(\"common.tpsl\")}</Text>\n <Flex gap={2} className=\"oui-advancedTpslResult-actions\">\n <DeleteIcon\n size={12}\n className=\"oui-delete-btn oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n opacity={1}\n onClick={onDelete}\n />\n <EditIcon\n size={12}\n className=\"oui-edit-btn oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n onClick={onEdit}\n />\n </Flex>\n </Flex>\n <Flex justify={\"between\"} itemAlign={\"start\"} className=\"oui-w-full\">\n <Text>{t(\"tpsl.mode\")}</Text>\n <Text className=\"oui-text-base-contrast\">\n {formattedOrder.position_type === PositionType.FULL\n ? t(\"tpsl.fullPosition\")\n : t(\"tpsl.partialPosition\")}\n </Text>\n </Flex>\n {renderTp()}\n {renderSl()}\n\n <Divider className=\"oui-mb-2 oui-w-full\" />\n </Flex>\n );\n}\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\nconst DeleteIcon: React.FC<IconProps> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={props.size}\n height={props.size}\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M5.99903 0.976562C5.44653 0.976562 4.99903 1.42406 4.99903 1.97656H2.49902C2.22302 1.97656 1.99902 2.20056 1.99902 2.47656C1.99902 2.75256 2.22302 2.97656 2.49902 2.97656H9.49903C9.77503 2.97656 9.99903 2.75256 9.99903 2.47656C9.99903 2.20056 9.77503 1.97656 9.49903 1.97656H6.99903C6.99903 1.42406 6.55153 0.976562 5.99903 0.976562ZM2.49902 3.97655V8.97654C2.49902 10.0715 3.40152 10.961 4.49903 10.961L7.51453 10.9765C8.61203 10.9765 9.49903 10.074 9.49903 8.97654V3.97655H2.49902ZM4.99903 5.47655C5.27503 5.47655 5.49903 5.70055 5.49903 5.97655V8.97654C5.49903 9.25254 5.27503 9.47654 4.99903 9.47654C4.72303 9.47654 4.49903 9.25254 4.49903 8.97654V5.97655C4.49903 5.70055 4.72303 5.47655 4.99903 5.47655ZM6.99903 5.47655C7.27503 5.47655 7.49903 5.70055 7.49903 5.97655V8.97654C7.49903 9.25254 7.27503 9.47654 6.99903 9.47654C6.72303 9.47654 6.49903 9.25254 6.49903 8.97654V5.97655C6.49903 5.70055 6.72303 5.47655 6.99903 5.47655Z\" />\n </svg>\n );\n};\n\nconst EditIcon: React.FC<IconProps> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 12 12\"\n width={props.size}\n height={props.size}\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.49779 0.976562C8.36529 0.976562 8.23229 1.02357 8.13829 1.11707C7.86029 1.39507 6.85979 2.39558 6.63779 2.61808L2.13529 7.12059L1.63479 7.62059C1.56529 7.69059 1.52929 7.78958 1.50979 7.88658L1.00979 10.3881C0.939788 10.7381 1.23779 11.0361 1.58779 10.9666C1.90079 10.9036 3.77679 10.5286 4.08929 10.4661C4.18629 10.4466 4.28529 10.4106 4.35529 10.3411L4.85529 9.84059L9.35779 5.33808C9.58029 5.11608 10.5808 4.11506 10.8588 3.83756C10.9523 3.74356 10.9993 3.61056 10.9993 3.47806C10.9993 2.65956 10.7908 2.07456 10.3583 1.63306C9.92179 1.18756 9.33879 0.976562 8.49779 0.976562ZM8.69479 1.98606C9.14629 2.01256 9.43879 2.11608 9.63929 2.32108C9.84429 2.53008 9.97379 2.82008 10.0018 3.26258C9.72779 3.53608 9.32679 3.93106 8.99829 4.25956C8.60179 3.86306 8.11279 3.37407 7.71629 2.97757C8.04529 2.64907 8.42129 2.25956 8.69479 1.98606ZM6.99729 3.69657L8.27929 4.97858L4.49579 8.76207L3.21379 7.48009L6.99729 3.69657ZM2.49479 8.19908L3.77679 9.48107L3.72979 9.52809C3.39979 9.59409 2.73329 9.73359 2.11929 9.85659L2.44779 8.24608L2.49479 8.19908Z\" />\n </svg>\n );\n};\n","import React from \"react\";\nimport { useFeeState } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\n\nexport const RegularFeesUI: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n const { t } = useTranslation();\n const { taker, maker } = props;\n\n const originalTrailingFees = (\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n width={\"100%\"}\n gap={1}\n className=\"oui-orderEntry-fees\"\n >\n <Flex width={\"100%\"} itemAlign=\"center\" justify={\"between\"}>\n <Text className=\"oui-fees-label oui-truncate\" size=\"2xs\">\n {t(\"common.fees\")}\n </Text>\n <AuthGuard\n fallback={() => (\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}: --% / {t(\"dmm.maker\")}: --%\n </Text>\n )}\n >\n <Flex gap={1} className=\"oui-fees-value-container\">\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.taker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {taker}\n </Text>\n <Text size=\"2xs\">/</Text>\n <Text className=\"oui-truncate\" size=\"2xs\">\n {t(\"dmm.maker\")}:\n </Text>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-80\">\n {maker}\n </Text>\n </Flex>\n </AuthGuard>\n </Flex>\n </Flex>\n );\n\n return originalTrailingFees;\n};\n","import React from \"react\";\nimport { useFeeState } from \"@orderly.network/hooks\";\nimport { RegularFeesUI } from \"./regularFees.ui\";\n\nexport const RegularFeesWidget: React.FC<{ taker: string; maker: string }> = (\n props,\n) => {\n return <RegularFeesUI {...props} />;\n};\n","import React from \"react\";\nimport { useFeeState, useRwaSymbolsInfoStore } from \"@orderly.network/hooks\";\nimport { RegularFeesWidget } from \"./regularFee\";\n\nexport const FeesWidget: React.FC<{ symbol: string }> = ({ symbol }) => {\n const { takerFee, makerFee, rwaTakerFee, rwaMakerFee } = useFeeState();\n const info = useRwaSymbolsInfoStore();\n const isRwa = info?.[symbol] !== undefined;\n\n return (\n <RegularFeesWidget\n taker={isRwa ? rwaTakerFee : takerFee}\n maker={isRwa ? rwaMakerFee : makerFee}\n />\n );\n};\n","import {\n FC,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n cn,\n ExclamationFillIcon,\n Flex,\n Input,\n inputFormatter,\n modal,\n Text,\n Tooltip,\n TooltipTrigger,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\ninterface SlippageProps {\n initialValue?: number;\n isMobile?: boolean;\n}\n\nconst options = [0.01, 0.05, 0.1];\n\nexport const SlippageEditor = forwardRef<\n { getValue: () => number | undefined },\n SlippageProps\n>((props, ref) => {\n const { t } = useTranslation();\n const [value, setValue] = useState<number>();\n const [customValue, setCustomValue] = useState(\"\");\n const [error, setError] = useState<string | undefined>(undefined);\n\n useImperativeHandle(ref, () => ({\n getValue: () =>\n customValue ? new Decimal(customValue)?.toNumber() : value,\n }));\n\n useEffect(() => {\n if (props.initialValue && !options.includes(props.initialValue!)) {\n setCustomValue(props.initialValue!.toString());\n } else {\n setValue(props.initialValue);\n }\n }, [props.initialValue, open]);\n\n const onClick = (val: number) => {\n setValue(val);\n setCustomValue(\"\");\n setError(undefined);\n };\n\n const onValueChange = (val: string) => {\n if (!val) {\n setCustomValue(val);\n return;\n }\n\n const d = new Decimal(val);\n setValue(undefined);\n if (d.gt(3)) {\n setCustomValue(\"3\");\n setError(t(\"orderEntry.slippage.error.exceed\"));\n } else {\n setCustomValue(val);\n setError(undefined);\n }\n };\n\n const toolTipButton = props.isMobile ? (\n <button\n onClick={() => {\n // setOpen(true)\n modal.alert({\n title: t(\"common.tips\"),\n message: <Text size=\"2xs\">{t(\"orderEntry.slippage.tips\")}</Text>,\n });\n }}\n >\n <ExclamationFillIcon className=\"oui-text-base-contrast-54\" size={16} />\n </button>\n ) : (\n <Tooltip\n // @ts-ignore\n content={\n <Text intensity={80} size=\"2xs\">\n {t(\"orderEntry.slippage.tips\")}\n </Text>\n }\n className=\"oui-w-[260px] oui-bg-base-6\"\n arrow={{ className: \"oui-fill-base-6\" }}\n >\n <TooltipTrigger>\n <ExclamationFillIcon className=\"oui-text-base-contrast-54\" size={16} />\n </TooltipTrigger>\n </Tooltip>\n );\n\n return (\n <div className=\"oui-orderEntry-slippageEditor oui-text-2xs\">\n <Flex mb={2} gapX={1}>\n <Text size=\"xs\">{t(\"orderEntry.slippage\")}</Text>\n {toolTipButton}\n </Flex>\n <Flex gapX={2}>\n {options.map((item) => {\n const isActive = value === item;\n return (\n <SlippageItem\n key={item}\n value={item}\n isActive={isActive}\n onClick={() => {\n onClick(item);\n }}\n />\n );\n })}\n\n <Input\n suffix=\"%\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(2),\n ]}\n value={customValue}\n onValueChange={onValueChange}\n classNames={{\n root: cn(\n \"oui-slippageEditor-customInput\",\n \"oui-rounded-md oui-bg-base-6\",\n \"oui-h-[40px] oui-w-[74px]\",\n ),\n input: \"oui-text-base-contrast\",\n additional: \"oui-pl-1\",\n }}\n />\n </Flex>\n {!!error && (\n <Box mt={5} className=\"-oui-mb-5\">\n <Text size=\"2xs\" color=\"danger\">\n {error}\n </Text>\n </Box>\n )}\n </div>\n );\n});\n\ntype SlippageItemProps = {\n value: number;\n isActive: boolean;\n onClick: () => void;\n};\n\nconst SlippageItem: FC<SlippageItemProps> = ({ value, isActive, onClick }) => {\n return (\n <Flex\n intensity={600}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"md\"\n width={74}\n height={40}\n className={cn(\n \"oui-slippageEditor-option\",\n \"oui-cursor-pointer oui-select-none\",\n isActive\n ? \"oui-bg-primary-light oui-text-primary-contrast/80\"\n : \"oui-text-base-contrast-80\",\n )}\n onClick={onClick}\n >\n <Text size=\"sm\">{value}%</Text>\n </Flex>\n );\n};\n","import { useRef } from \"react\";\nimport { useBoolean } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n EditIcon,\n Flex,\n Text,\n SimpleDialog,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { SlippageEditor } from \"./slippageEditor\";\n\nexport const SlippageCell = (props: {\n slippage: string;\n setSlippage: (slippage: string) => void;\n estSlippage: number | null;\n}) => {\n const { t } = useTranslation();\n const [open, { setTrue: setOpen, setFalse: setClose, toggle }] =\n useBoolean(false);\n\n const { isMobile } = useScreen();\n const slippageRef = useRef<{ getValue: () => number | undefined }>(null);\n\n const onConfirm = () => {\n const val = slippageRef.current?.getValue();\n\n props.setSlippage(!val ? \"1\" : val.toString());\n setClose();\n return Promise.resolve(true);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={toggle}\n title={t(\"common.settings\")}\n contentProps={{ size: isMobile ? \"xs\" : \"sm\" }}\n classNames={{\n footer: \"oui-orderEntry-slippage-footer\",\n body: \"oui-orderEntry-slippage-body\",\n }}\n actions={{\n primary: {\n disabled: false,\n label: t(\"common.save\"),\n onClick: onConfirm,\n className: \"oui-slippage-save-btn\",\n },\n secondary: {\n label: t(\"common.cancel\"),\n onClick: () => setClose(),\n className: \"oui-slippage-cancel-btn\",\n },\n }}\n >\n <SlippageEditor\n ref={slippageRef}\n isMobile={isMobile}\n initialValue={props.slippage ? Number(props.slippage) : undefined}\n />\n </SimpleDialog>\n <Flex justify={\"between\"} className=\"oui-orderEntry-slippage\">\n <Text className=\"oui-slippage-label\" size=\"2xs\">\n {t(\"orderEntry.slippage\")}\n </Text>\n <AuthGuard\n fallback={() => (\n <Text size=\"2xs\">\n {t(\"orderEntry.slippage.est\")}: -% / {t(\"common.max\")}: --%\n </Text>\n )}\n >\n <Flex gap={1} className=\"oui-slippage-value-container\">\n <Text.numeral\n size=\"2xs\"\n rule=\"percentages\"\n prefix={`${t(\"orderEntry.slippage.est\")}: `}\n suffix={` / ${t(\"common.max\")}: `}\n >\n {props.estSlippage ?? 0}\n </Text.numeral>\n <button\n className=\"oui-slippage-edit-btn oui-text-2xs\"\n onClick={() => setOpen()}\n >\n <Flex className=\"oui-gap-0.5\" as=\"span\">\n <Text size=\"2xs\" className=\"oui-text-primary\">\n {`${props.slippage || \"-\"}%`}\n </Text>\n <EditIcon\n className=\"oui-slippage-edit-icon oui-text-primary oui-hidden md:oui-block\"\n size={12}\n opacity={1}\n />\n </Flex>\n </button>\n </Flex>\n </AuthGuard>\n </Flex>\n </>\n );\n};\n","import { SlippageCell } from \"./components/slippageCell\";\n\nexport const SlippageUI = (props: {\n slippage: string;\n setSlippage: (slippage: string) => void;\n estSlippage: number | null;\n}) => {\n return <SlippageCell {...props} />;\n};\n","import { useGetEstLiqPrice } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide, OrderType } from \"@orderly.network/types\";\nimport { Flex, Text, Tooltip, useScreen } from \"@orderly.network/ui\";\nimport { FeesWidget } from \"../fee\";\nimport { SlippageUI } from \"../slippage/slippage.ui\";\n\nexport function AssetInfo(props: {\n symbol: string;\n canTrade: boolean;\n quote: string;\n estLiqPrice: number | null;\n estLiqPriceDistance: number | null;\n estLeverage: number | null;\n currentLeverage: number | null;\n slippage: string;\n dp: number;\n estSlippage: number | null;\n setSlippage: (slippage: string) => void;\n orderType: OrderType;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n side: OrderSide;\n}) {\n const { canTrade, disableFeatures, orderType, symbol } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const displayEstLiqPrice = useGetEstLiqPrice({\n estLiqPrice: props.estLiqPrice,\n symbol: symbol,\n side: props.side,\n });\n\n return (\n <div\n className={\"oui-orderEntry-assetInfo oui-space-y-[2px] xl:oui-space-y-1\"}\n >\n <Flex justify={\"between\"} className=\"oui-orderEntry-estLiqPrice\">\n {isMobile ? (\n <Text size=\"2xs\">{t(\"orderEntry.estLiqPrice\")}</Text>\n ) : (\n <Tooltip\n content={\n <div className=\"oui-min-w-[204px] oui-max-w-[280px] oui-text-2xs oui-leading-normal oui-text-base-contrast-80\">\n <div className=\"oui-text-pretty\">\n {t(\"common.liquidationPrice.tooltip\")}\n </div>\n <div>\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/perpetual-futures/liquidations\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-text-primary oui-underline\"\n >\n {t(\"common.liquidationPrice.tooltip.learnMore\")}\n </a>\n </div>\n </div>\n }\n >\n <Text\n size=\"2xs\"\n className=\"oui-estLiqPrice-label oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {t(\"orderEntry.estLiqPrice\")}\n </Text>\n </Tooltip>\n )}\n <Text.numeral\n unit={props.quote}\n size={\"2xs\"}\n dp={props.dp}\n className={\"oui-estLiqPrice-value oui-text-base-contrast-80\"}\n unitClassName={\"oui-ml-1 oui-text-base-contrast-36\"}\n >\n {canTrade ? (displayEstLiqPrice ?? \"--\") : \"--\"}\n </Text.numeral>\n </Flex>\n\n {orderType === OrderType.MARKET &&\n !disableFeatures?.includes(\"slippageSetting\") && (\n <SlippageUI\n slippage={props.slippage}\n setSlippage={props.setSlippage}\n estSlippage={props.estSlippage}\n />\n )}\n\n {!disableFeatures?.includes(\"feesInfo\") && (\n <FeesWidget symbol={props.symbol} />\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { useTranslation, type LocaleMessages } from \"@orderly.network/i18n\";\nimport { MarginMode } from \"@orderly.network/types\";\nimport { Button, cn, Divider, Flex, Text } from \"@orderly.network/ui\";\nimport { removeTrailingZeros } from \"@orderly.network/utils\";\nimport type { LTVTooltipScriptReturn } from \"./LTVRiskTooltip.script\";\n\nconst calculateLTVColor = (val: number): string => {\n if (val >= 0 && val < 50) {\n return \"oui-text-success\";\n } else if (val >= 50 && val < 80) {\n return \"oui-text-warning\";\n } else if (val >= 80) {\n return \"oui-text-danger\";\n } else {\n return \"\";\n }\n};\n\nexport const LTVRiskTooltipUI: React.FC<LTVTooltipScriptReturn> = (props) => {\n const { t } = useTranslation();\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isThresholdLoading,\n holdingData = [],\n currentLtv,\n onConvert,\n marginMode,\n } = props;\n return (\n <Flex\n gap={1}\n className=\"oui-orderEntry-ltvRiskTooltip oui-w-72 oui-max-w-72\"\n direction=\"column\"\n itemAlign=\"start\"\n >\n <Flex width={\"100%\"} justify=\"between\" itemAlign=\"center\">\n <Text intensity={36} size=\"xs\">\n {t(\"common.assets\")}\n </Text>\n <Text intensity={36} size=\"xs\">\n {t(\"transfer.deposit.collateralContribution\")}\n </Text>\n </Flex>\n {holdingData.map((asset, index) => {\n return (\n <Flex\n key={`item-${index}`}\n width={\"100%\"}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <Text intensity={80} size=\"xs\">\n {asset.token}\n </Text>\n <Text\n size=\"xs\"\n intensity={80}\n className={cn(\n Number(asset.collateralContribution) < 0 && \"oui-text-warning\",\n )}\n >\n {removeTrailingZeros(asset.collateralContribution)}\n </Text>\n </Flex>\n );\n })}\n <Divider className=\"oui-w-full\" />\n <Flex width={\"100%\"} justify=\"between\" itemAlign=\"center\">\n <Text intensity={36} size=\"xs\">\n {t(\"transfer.LTV.currentLTV\")}\n </Text>\n <Text\n size=\"xs\"\n intensity={36}\n className={cn(\"oui-select-none\", calculateLTVColor(currentLtv))}\n >\n {currentLtv}%\n </Text>\n </Flex>\n\n <Text className=\"oui-py-2\" intensity={54} size=\"2xs\">\n {t(\"transfer.LTV.tooltip\", {\n threshold: isThresholdLoading ? \"-\" : ltv_threshold,\n usdcThreshold: isThresholdLoading ? \"-\" : negative_usdc_threshold,\n })}\n </Text>\n <Button\n fullWidth\n size={\"md\"}\n variant={\"outlined\"}\n color={\"secondary\"}\n className=\"oui-ltvRiskTooltip-convert-btn\"\n onClick={onConvert}\n >\n {t(\"transfer.convert.convertAssets\")}\n </Button>\n </Flex>\n );\n};\n","import { useCallback } from \"react\";\nimport {\n useComputedLTV,\n useHoldingStream,\n useIndexPricesStream,\n useQuery,\n useAppStore,\n} from \"@orderly.network/hooks\";\nimport { account } from \"@orderly.network/perp\";\nimport { API, MarginMode } from \"@orderly.network/types\";\nimport { modal } from \"@orderly.network/ui\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\n\nconst useConvertThreshold = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n { errorRetryCount: 3 },\n );\n return {\n ltv_threshold: new Decimal(data?.ltv_threshold ?? 0).mul(100).toNumber(),\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n } as const;\n};\n\nexport const useLTVTooltipScript = (marginMode?: MarginMode) => {\n const { data: holdingList = [], isLoading: isHoldingLoading } =\n useHoldingStream();\n\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isLoading: isThresholdLoading,\n } = useConvertThreshold();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const { getIndexPrice } = useIndexPricesStream();\n\n const holdingData = holdingList.map((item) => {\n const tokenInfo = tokensInfo?.find(({ token }) => token === item.token);\n\n // Use extracted function for index price calculation\n const indexPrice = getIndexPrice(item.token);\n\n // Calculate collateral ratio for this token\n const collateralRatio = tokenInfo\n ? account.collateralRatio({\n baseWeight: tokenInfo.base_weight ?? 0,\n discountFactor: tokenInfo.discount_factor ?? 0,\n collateralQty: item.holding,\n collateralCap: tokenInfo?.user_max_qty ?? item.holding,\n indexPrice: indexPrice,\n })\n : zero;\n\n // Calculate collateral contribution for this token\n const collateralContribution = account.collateralContribution({\n collateralQty: item.holding,\n collateralCap: tokenInfo?.user_max_qty ?? item.holding,\n collateralRatio: collateralRatio.toNumber(),\n indexPrice: indexPrice,\n });\n\n return {\n ...item,\n collateralContribution: collateralContribution,\n };\n });\n\n const currentLtv = useComputedLTV();\n\n const onConvert = useCallback(async () => {\n return modal.show(\"ConvertDialogId\");\n }, []);\n\n return {\n holdingData,\n isHoldingLoading,\n ltv_threshold,\n negative_usdc_threshold,\n isThresholdLoading,\n currentLtv: currentLtv,\n onConvert: onConvert,\n marginMode,\n };\n};\n\nexport type LTVTooltipScriptReturn = ReturnType<typeof useLTVTooltipScript>;\n","import React from \"react\";\nimport { MarginMode } from \"@orderly.network/types\";\nimport { useLTVTooltipScript } from \"./LTVRiskTooltip.script\";\nimport { LTVRiskTooltipUI } from \"./LTVRiskTooltip.ui\";\n\nexport const LTVRiskTooltipWidget: React.FC<{ marginMode?: MarginMode }> = ({\n marginMode,\n}) => {\n const state = useLTVTooltipScript(marginMode);\n return <LTVRiskTooltipUI {...state} />;\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { MarginMode } from \"@orderly.network/types\";\nimport {\n Flex,\n Tooltip,\n Text,\n InfoCircleIcon,\n AddCircleIcon,\n Button,\n modal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { LTVRiskTooltipWidget } from \"../LTVRiskTooltip\";\n\ntype AvailableProps = {\n canTrade: boolean;\n currentLtv: number;\n freeCollateral: number;\n quote?: string;\n marginMode?: MarginMode;\n};\n\nexport const Available = (props: AvailableProps) => {\n const { canTrade, currentLtv, quote, freeCollateral, marginMode } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const showLTV = useMemo(() => {\n return (\n typeof currentLtv === \"number\" &&\n !Number.isNaN(currentLtv) &&\n currentLtv > 0\n );\n }, [currentLtv]);\n\n return (\n <Flex\n itemAlign={\"center\"}\n justify={\"between\"}\n className=\"oui-orderEntry-available\"\n >\n {marginMode === MarginMode.ISOLATED ? (\n <Tooltip content={t(\"transfer.LTV.isolatedModeUsdcOnly\")}>\n <Text className=\"oui-available-label oui-cursor-pointer\" size={\"2xs\"}>\n {t(\"common.available\")}\n </Text>\n </Tooltip>\n ) : (\n <Text className=\"oui-available-label\" size={\"2xs\"}>\n {t(\"common.available\")}\n </Text>\n )}\n <Flex itemAlign={\"center\"} justify={\"center\"} gap={1}>\n {showLTV && (\n <Tooltip\n className={\"oui-available-ltvRisk-tooltip oui-bg-base-6 oui-p-2\"}\n content={<LTVRiskTooltipWidget marginMode={marginMode} />}\n >\n <InfoCircleIcon\n className={\"oui-cursor-pointer oui-text-warning oui-opacity-80\"}\n />\n </Tooltip>\n )}\n <Text.numeral\n unit={quote}\n size={\"2xs\"}\n className={\"oui-available-value oui-text-base-contrast-80\"}\n unitClassName={\"oui-ml-1 oui-text-base-contrast-54\"}\n dp={2}\n padding={false}\n >\n {canTrade ? freeCollateral : 0}\n </Text.numeral>\n <Button\n variant=\"text\"\n size=\"xs\"\n color=\"secondary\"\n className=\"oui-available-deposit-icon oui-p-0 hover:oui-text-base-contrast-80\"\n onClick={() => {\n // TODO: when we plan to move modal IDs to a public package, we need to use the ID from the public package\n const handleDomId = isMobile\n ? \"DepositAndWithdrawWithSheetId\"\n : \"DepositAndWithdrawWithDialogId\";\n modal.show(handleDomId, {\n activeTab: \"deposit\",\n });\n }}\n >\n <AddCircleIcon opacity={1} />\n </Button>\n </Flex>\n </Flex>\n );\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport {\n BBOOrderType,\n OrderLevel,\n OrderSide,\n OrderType,\n} from \"@orderly.network/types\";\n\nexport enum BBOStatus {\n ON = \"on\",\n OFF = \"off\",\n DISABLED = \"disabled\",\n}\n\n/**\n * if provide order_type, check order_type and order_type_ext, otherswise only check order_type_ext\n */\nexport function isBBOOrder(options: {\n order_type?: OrderType;\n order_type_ext?: OrderType;\n}) {\n const { order_type, order_type_ext } = options;\n\n const isBBO = [OrderType.ASK, OrderType.BID].includes(order_type_ext!);\n\n if (order_type) {\n return order_type === OrderType.LIMIT && isBBO;\n }\n\n return isBBO;\n}\n\nexport function getOrderTypeByBBO(value: BBOOrderType, size: OrderSide) {\n if (\n [BBOOrderType.COUNTERPARTY1, BBOOrderType.COUNTERPARTY5].includes(value)\n ) {\n return size === OrderSide.BUY ? OrderType.ASK : OrderType.BID;\n }\n\n if ([BBOOrderType.QUEUE1, BBOOrderType.QUEUE5].includes(value)) {\n return size === OrderSide.BUY ? OrderType.BID : OrderType.ASK;\n }\n}\n\nexport function getOrderLevelByBBO(value: BBOOrderType) {\n if ([BBOOrderType.COUNTERPARTY1, BBOOrderType.QUEUE1].includes(value)) {\n return OrderLevel.ONE;\n }\n\n if ([BBOOrderType.COUNTERPARTY5, BBOOrderType.QUEUE5].includes(value)) {\n return OrderLevel.FIVE;\n }\n}\n\nexport function getScaledPlaceOrderMessage(result: any) {\n const rows = result?.data?.rows || [];\n\n if (rows.length > 0) {\n const totalCount = rows.length;\n const successCount = rows.filter((row: any) => row.success).length;\n\n // fully successful\n if (successCount === totalCount) {\n return i18n.t(\"orderEntry.scaledOrder.fullySuccessful\", {\n total: totalCount,\n });\n }\n\n // all failed\n if (successCount === 0) {\n return i18n.t(\"orderEntry.scaledOrder.allFailed\");\n }\n\n // partially successful\n return i18n.t(\"orderEntry.scaledOrder.partiallySuccessful\", {\n successCount,\n total: totalCount,\n });\n }\n}\n\nexport const safeNumber = (val: number | string) => {\n return Number.isNaN(Number(val)) ? 0 : Number(val);\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { usePositionStream } from \"@orderly.network/hooks\";\nimport { i18n, useTranslation } from \"@orderly.network/i18n\";\nimport {\n BBOOrderType,\n API,\n MarginMode,\n OrderSide,\n OrderType,\n PositionType,\n} from \"@orderly.network/types\";\nimport { OrderlyOrder } from \"@orderly.network/types\";\nimport {\n Badge,\n Button,\n Checkbox,\n cn,\n Divider,\n Flex,\n Grid,\n registerSimpleDialog,\n Text,\n textVariants,\n} from \"@orderly.network/ui\";\nimport { Decimal, getBBOType } from \"@orderly.network/utils\";\nimport { isBBOOrder } from \"../../utils\";\n\ntype OrderConfirmDialogProps = {\n order: OrderlyOrder;\n symbolInfo: API.SymbolExt;\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nexport const OrderConfirmDialog = (props: OrderConfirmDialogProps) => {\n const { symbolInfo, order, onConfirm, onCancel } = props;\n const { quote, quote_dp, base_dp } = symbolInfo;\n const { side, order_type, order_type_ext, level, symbol } = order;\n const orderMarginMode = (order as { margin_mode?: MarginMode }).margin_mode;\n const { t } = useTranslation();\n const [{ rows: positions }] = usePositionStream(symbol);\n const position = useMemo(\n () =>\n orderMarginMode != null\n ? positions?.find(\n (row) =>\n row.symbol === symbol && row.margin_mode === orderMarginMode,\n )\n : positions?.[0],\n [positions, symbol, orderMarginMode],\n );\n const positionQty = position?.position_qty;\n\n const [_, setNeedConfirm] = useLocalStorage(\"orderly_order_confirm\", 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\n const renderPrice = () => {\n if (\n order_type === OrderType.MARKET ||\n order_type === OrderType.STOP_MARKET\n ) {\n return <Text intensity={80}>{t(\"common.marketPrice\")}</Text>;\n }\n\n if (isBBOOrder({ order_type, order_type_ext })) {\n const bboType = getBBOType({\n type: order_type_ext!,\n side,\n level,\n });\n const label = {\n [BBOOrderType.COUNTERPARTY1]: t(\"orderEntry.bbo.counterparty1\"),\n [BBOOrderType.COUNTERPARTY5]: t(\"orderEntry.bbo.counterparty5\"),\n [BBOOrderType.QUEUE1]: t(\"orderEntry.bbo.queue1\"),\n [BBOOrderType.QUEUE5]: t(\"orderEntry.bbo.queue5\"),\n }[bboType!];\n\n return <Text intensity={80}>{label}</Text>;\n }\n\n return (\n <Text.numeral\n unit={quote}\n rule=\"price\"\n className=\"oui-text-base-contrast\"\n unitClassName=\"oui-text-base-contrast-36 oui-ml-1\"\n dp={quote_dp}\n padding={false}\n >\n {order.order_price}\n </Text.numeral>\n );\n };\n\n const renderTPSLPrice = ({\n price,\n isOrderPrice,\n isEnable,\n colorType,\n }: {\n price: string;\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.marketPrice\")}\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={quote_dp}\n padding={false}\n >\n {price}\n </Text.numeral>\n );\n };\n\n const renderTPSLQty = () => {\n if (!positionQty || !order.order_quantity) {\n return null;\n }\n let qty = new Decimal(order.order_quantity);\n if (order.position_type === PositionType.FULL) {\n qty = qty.plus(new Decimal(positionQty ?? 0));\n }\n return (\n <Flex justify={\"between\"}>\n <Text>\n {order.position_type === PositionType.FULL\n ? t(\"common.positionQty\")\n : t(\"common.orderQty\")}\n </Text>\n <Text.numeral\n rule={\"price\"}\n dp={base_dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {qty.toNumber()}\n </Text.numeral>\n </Flex>\n );\n };\n\n const renderPriceAndTotal = () => {\n if (order_type === OrderType.TRAILING_STOP) {\n const { activated_price, callback_value, callback_rate } = order;\n\n const callbackView = callback_rate ? (\n <Flex justify={\"between\"}>\n <Text>{t(\"orderEntry.trailingRate\")}</Text>\n <Text className=\"oui-text-base-contrast\">{callback_rate}%</Text>\n </Flex>\n ) : (\n <OrderItem\n title={t(\"orderEntry.trailingValue\")}\n value={callback_value!}\n unit={quote}\n dp={quote_dp}\n />\n );\n return (\n <>\n {activated_price && (\n <OrderItem\n title={t(\"common.triggerPrice\")}\n value={activated_price!}\n unit={quote}\n dp={quote_dp}\n />\n )}\n {callbackView}\n </>\n );\n }\n\n return (\n <>\n <Flex justify={\"between\"}>\n <Text>{t(\"common.price\")}</Text>\n {renderPrice()}\n </Flex>\n <OrderItem\n title={t(\"common.estTotal\")}\n value={order.total}\n unit={quote}\n dp={quote_dp}\n />\n </>\n );\n };\n\n const header = (\n <Flex\n justify={\"between\"}\n className=\"oui-orderEntry-orderConfirmDialog-header\"\n >\n <Text.formatted\n rule={\"symbol\"}\n showIcon\n className=\"oui-orderConfirmDialog-symbol\"\n >\n {order.symbol}\n </Text.formatted>\n <Flex\n justify={\"end\"}\n gapX={1}\n className=\"oui-orderConfirmDialog-header-tags\"\n >\n <OrderTypeTag type={order_type} />\n {side === OrderSide.BUY ? (\n <Badge color={\"buy\"} size={\"sm\"}>\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge color={\"sell\"} size={\"sm\"}>\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n );\n\n const quantityItem = (\n <Flex justify={\"between\"}>\n <Text>{t(\"common.orderQty\")}</Text>\n <Text.numeral\n rule={\"price\"}\n dp={base_dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n >\n {order.order_quantity}\n </Text.numeral>\n </Flex>\n );\n\n const triggerPriceItem = (order_type === OrderType.STOP_LIMIT ||\n (order_type === OrderType.STOP_MARKET && order.trigger_price)) && (\n <OrderItem\n title={t(\"common.trigger\")}\n value={order.trigger_price}\n unit={quote}\n dp={quote_dp}\n />\n );\n\n const tpslTriggerPrice = (order.tp_trigger_price ||\n order.sl_trigger_price) && (\n <>\n <Divider className=\"oui-my-4\" />\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className: \"oui-space-y-1 oui-w-full oui-flex oui-flex-col oui-gap-3\",\n })}\n >\n <Text className=\"oui-text-base-contrast\">{renderPositionType()}</Text>\n {renderTPSLQty()}\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 );\n\n const orderConfirmCheckbox = (\n <Flex\n gapX={1}\n pt={4}\n pb={5}\n className=\"oui-orderEntry-orderConfirmDialog-disableConfirm\"\n >\n <Checkbox\n id=\"orderConfirm\"\n color={\"white\"}\n className=\"oui-orderConfirmDialog-disableConfirm-checkbox\"\n onCheckedChange={(checked) => {\n setNeedConfirm(!!!checked);\n }}\n />\n <label\n htmlFor=\"orderConfirm\"\n className={textVariants({\n size: \"xs\",\n intensity: 54,\n })}\n >\n {t(\"orderEntry.disableOrderConfirm\")}\n </label>\n </Flex>\n );\n\n const buttons = (\n <Grid\n cols={2}\n gapX={3}\n className=\"oui-orderEntry-orderConfirmDialog-actions\"\n >\n <Button\n color={\"secondary\"}\n size={\"md\"}\n className=\"oui-cancel-btn\"\n onClick={() => onCancel()}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n size={\"md\"}\n className=\"oui-confirm-btn\"\n onClick={() => onConfirm()}\n >\n {t(\"common.confirm\")}\n </Button>\n </Grid>\n );\n\n return (\n <>\n {header}\n <Divider className=\"oui-my-4\" />\n\n <div\n className={textVariants({\n size: \"sm\",\n intensity: 54,\n className: \"oui-orderEntry-orderConfirmDialog-content oui-space-y-1\",\n })}\n >\n {quantityItem}\n {triggerPriceItem}\n\n {renderPriceAndTotal()}\n </div>\n\n {tpslTriggerPrice}\n\n {orderConfirmCheckbox}\n\n {buttons}\n </>\n );\n};\n\ntype OrderItemProps = {\n title: ReactNode;\n value: string;\n unit: string;\n dp: number;\n};\n\nconst OrderItem: FC<OrderItemProps> = (props) => {\n const { title, value, unit, dp } = props;\n return (\n <Flex justify=\"between\">\n <Text>{title}</Text>\n <Text.numeral\n unit={unit}\n rule=\"price\"\n dp={dp}\n padding={false}\n className=\"oui-text-base-contrast\"\n unitClassName=\"oui-text-base-contrast-36 oui-ml-1\"\n >\n {value}\n </Text.numeral>\n </Flex>\n );\n};\n\nOrderConfirmDialog.displayName = \"OrderConfirmDialog\";\n\nconst OrderTypeTag = (props: { type: OrderType }) => {\n const { t } = useTranslation();\n const typeStr = useMemo(() => {\n switch (props.type) {\n case OrderType.LIMIT:\n return t(\"orderEntry.orderType.limit\");\n case OrderType.MARKET:\n return t(\"common.marketPrice\");\n case OrderType.STOP_LIMIT:\n return t(\"orderEntry.orderType.stopLimit\");\n case OrderType.STOP_MARKET:\n return t(\"orderEntry.orderType.stopMarket\");\n case OrderType.TRAILING_STOP:\n return t(\"orderEntry.orderType.trailingStop\");\n default:\n return \"\";\n }\n }, [props.type]);\n\n return (\n <Badge color={\"neutral\"} size={\"sm\"}>\n {typeStr}\n </Badge>\n );\n};\n\nconst Dialog = (\n props: Omit<OrderConfirmDialogProps, \"onCancel\" | \"onConfirm\"> & {\n close: () => void;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n },\n) => {\n const { close, resolve, reject, ...rest } = props;\n\n return (\n <OrderConfirmDialog\n {...rest}\n onCancel={() => {\n reject();\n close();\n }}\n onConfirm={() => {\n resolve();\n close();\n }}\n />\n );\n};\n\nexport const orderConfirmDialogId = \"orderConfirm\";\n\nregisterSimpleDialog(orderConfirmDialogId, Dialog, {\n size: \"sm\",\n title: () => i18n.t(\"orderEntry.orderConfirm\"),\n});\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { SimpleDialog } from \"@orderly.network/ui\";\n\ntype MaxQtyConfirmProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n maxQty: string;\n onConfirm: () => void;\n base: string;\n};\n\nexport const MaxQtyConfirm: FC<MaxQtyConfirmProps> = memo((props) => {\n const { t } = useTranslation();\n return (\n <SimpleDialog\n open={props.open}\n title={t(\"orderEntry.orderConfirm\")}\n closable\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n classNames={{\n footer: \"oui-maxQtyConfirm-footer\",\n body: \"oui-maxQtyConfirm-body\",\n }}\n actions={{\n primary: {\n label: t(\"orderEntry.placeOrderNow\"),\n className:\n \"oui-primary-btn oui-text-sm oui-font-semibold oui-w-[100%] oui-h-8\",\n onClick: () => {\n props.onConfirm();\n return Promise.resolve();\n },\n },\n secondary: {\n label: t(\"common.cancel\"),\n className:\n \"oui-secondary-btn oui-text-sm oui-font-semibold oui-w-[100%] oui-h-8\",\n onClick: () => {\n props.onOpenChange(false);\n return Promise.resolve();\n },\n },\n }}\n >\n <div className=\"oui-maxQtyConfirm-content oui-text-2xs lg:oui-text-sm\">\n {t(\"orderEntry.maxQty.reminder.content\", {\n maxQty: `${props.maxQty} ${props.base}`,\n })}\n </div>\n </SimpleDialog>\n );\n});\n","import { forwardRef, SVGProps, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport {\n Button,\n Flex,\n Grid,\n DataTable,\n cn,\n Badge,\n TokenIcon,\n Tooltip,\n Text,\n} from \"@orderly.network/ui\";\nimport {\n ScaledOrderConfirmScriptOptions,\n ScaledOrderConfirmScriptReturns,\n} from \"./scaledOrderConfirm.script\";\n\nexport type ScaledOrderConfirmProps = ScaledOrderConfirmScriptOptions &\n ScaledOrderConfirmScriptReturns & {\n close?: () => void;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n };\n\nexport const ScaledOrderConfirm = (props: ScaledOrderConfirmProps) => {\n const { order, symbolInfo, dataSource, national, askAndBid, totalQuantity } =\n props;\n const { base, quote, base_dp, quote_dp } = symbolInfo;\n const { t } = useTranslation();\n\n const onCancel = () => {\n props.reject();\n props.close?.();\n };\n\n const onConfirm = () => {\n props.resolve();\n props.close?.();\n };\n\n const columns = useMemo(() => {\n return [\n {\n title: t(\"common.symbol\"),\n dataIndex: \"symbol\",\n width: 125,\n render: (value: string, record: any) => {\n return (\n <Flex gap={2}>\n <div\n className={cn(\n \"oui-h-[38px] oui-w-1 oui-shrink-0 oui-rounded-[1px]\",\n record.side === OrderSide.BUY\n ? \"oui-bg-trade-profit\"\n : \"oui-bg-trade-loss\",\n )}\n />\n <Flex direction=\"column\" itemAlign=\"start\">\n <Flex gapX={1}>\n <TokenIcon symbol={value} className=\"oui-size-3\" />\n <Text.formatted\n rule=\"symbol\"\n size=\"xs\"\n formatString=\"base-type\"\n >\n {value}\n </Text.formatted>\n </Flex>\n\n <Badge color=\"neutral\" size=\"xs\">\n {t(\"orderEntry.orderType.limit\")}\n </Badge>\n </Flex>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.quantity\"),\n dataIndex: \"order_quantity\",\n width: 100,\n render: (value: string, record: any) => {\n return (\n <Text.numeral\n rule=\"price\"\n dp={base_dp}\n padding={false}\n color={record.side === OrderSide.BUY ? \"buy\" : \"sell\"}\n >\n {value}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.orderPrice\"),\n dataIndex: \"order_price\",\n width: 100,\n render: (value: string, record: any) => {\n // buy: limit_price_i >= ask0 , show warning.\n // sell: limit price <= bid0 , show warning.\n const showWarning = !!(record.side === OrderSide.BUY\n ? askAndBid?.[0] && Number(value) >= askAndBid?.[0]\n : askAndBid?.[1] && Number(value) <= askAndBid?.[1]);\n\n return (\n <Flex gapX={1}>\n <Text.numeral rule=\"price\" dp={quote_dp}>\n {value}\n </Text.numeral>\n\n {showWarning && (\n <Tooltip\n content={t(\n \"orderEntry.confirmScaledOrder.orderPrice.warning\",\n )}\n className=\"oui-w-[240px] oui-text-2xs oui-font-semibold oui-text-base-contrast-80\"\n >\n <TooltipIcon className=\"oui-text-warning-darken\" />\n </Tooltip>\n )}\n </Flex>\n );\n },\n },\n ];\n }, [t, symbolInfo, askAndBid, base_dp, quote_dp]);\n\n return (\n <div className=\"oui-orderEntry-scaledOrderConfirm oui-font-semibold\">\n <DataTable\n classNames={{\n root: cn(\n \"oui-scaledOrderConfirm-table\",\n \"oui-bg-base-7\",\n \"oui-rounded-lg\",\n // need to set overflow hidden because table header will avoid the border radius\n \"oui-overflow-hidden\",\n // \"oui-text-2xs lg:oui-text-xs\",\n // if orders is greater than 6, set the height to 320px to show scroll bar\n order.orders?.length >= 6 && \"oui-h-[320px]\",\n ),\n // set the min height of the table to show 2 rows\n scroll: \"!oui-min-h-[130px]\",\n }}\n dataSource={dataSource}\n columns={columns}\n bordered\n onRow={() => {\n return {\n className: cn(\"oui-h-[50px]\"),\n };\n }}\n />\n <div className=\"oui-scaledOrderConfirm-content oui-mb-5 oui-mt-4 oui-text-2xs\">\n <Flex justify=\"between\">\n <Text>{t(\"orderEntry.totalOrders\")}</Text>\n <Text intensity={80}>{order.orders?.length}</Text>\n </Flex>\n\n <Flex justify=\"between\" mt={2}>\n <Text>{t(\"orderEntry.totalQuantity\")}</Text>\n <Text.numeral\n rule=\"price\"\n unit={base}\n dp={base_dp}\n padding={false}\n intensity={80}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalQuantity}\n </Text.numeral>\n </Flex>\n\n <Flex justify=\"between\" mt={2}>\n <Text>{t(\"common.notional\")}</Text>\n <Text.numeral\n rule=\"price\"\n unit={quote}\n dp={quote_dp}\n padding={false}\n intensity={80}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {national}\n </Text.numeral>\n </Flex>\n </div>\n\n <Grid cols={2} gapX={3}>\n <Button\n color={\"secondary\"}\n size={\"md\"}\n className=\"oui-scaledOrderConfirm-cancel-btn\"\n onClick={onCancel}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n size={\"md\"}\n className=\"oui-scaledOrderConfirm-confirm-btn\"\n onClick={onConfirm}\n >\n {t(\"common.confirm\")}\n </Button>\n </Grid>\n </div>\n );\n};\n\nexport const TooltipIcon = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n width=\"12\"\n height=\"13\"\n viewBox=\"0 0 12 13\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...props}\n >\n <path d=\"M5.99951 1.50708C3.23811 1.50708 0.999512 3.74558 0.999512 6.50708C0.999512 9.26858 3.23811 11.5071 5.99951 11.5071C8.76091 11.5071 10.9995 9.26858 10.9995 6.50708C10.9995 3.74558 8.76091 1.50708 5.99951 1.50708ZM5.99951 4.00708C6.27566 4.00708 6.49951 4.23108 6.49951 4.50708C6.49951 4.78308 6.27566 5.00708 5.99951 5.00708C5.72336 5.00708 5.49951 4.78308 5.49951 4.50708C5.49951 4.23108 5.72336 4.00708 5.99951 4.00708ZM5.99951 5.50708C6.27566 5.50708 6.49951 5.73108 6.49951 6.00708V8.50708C6.49951 8.78308 6.27566 9.00708 5.99951 9.00708C5.72336 9.00708 5.49951 8.78308 5.49951 8.50708V6.00708C5.49951 5.73108 5.72336 5.50708 5.99951 5.50708Z\" />\n </svg>\n );\n },\n);\n","import { useEffect, useState } from \"react\";\nimport { useDebouncedCallback, useEventEmitter } from \"@orderly.network/hooks\";\n\nexport function useAskAndBid() {\n const ee = useEventEmitter();\n\n const [askAndBid, setAskAndBid] = useState<[number, number]>([0, 0]);\n\n const onOrderBookUpdate = useDebouncedCallback((data: any) => {\n const ask0 = data.asks?.[data.asks.length - 1]?.[0];\n const bid0 = data.bids?.[0]?.[0];\n setAskAndBid([ask0, bid0]);\n }, 200);\n\n useEffect(() => {\n ee.on(\"orderbook:update\", onOrderBookUpdate);\n return () => {\n ee.off(\"orderbook:update\", onOrderBookUpdate);\n onOrderBookUpdate.cancel();\n };\n }, [onOrderBookUpdate]);\n\n return askAndBid;\n}\n","import { useMemo } from \"react\";\nimport { API, OrderlyOrder } from \"@orderly.network/types\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { useAskAndBid } from \"../../../hooks/useAskAndBid\";\n\nexport type ScaledOrderConfirmScriptOptions = {\n order: OrderlyOrder & {\n orders: OrderlyOrder[];\n };\n symbolInfo: API.SymbolExt;\n};\n\nexport type ScaledOrderConfirmScriptReturns = ReturnType<\n typeof useScaledOrderConfirmScript\n>;\n\nexport function useScaledOrderConfirmScript(\n options: ScaledOrderConfirmScriptOptions,\n) {\n const { order, symbolInfo } = options;\n const orders = order.orders;\n\n const askAndBid = useAskAndBid();\n\n const national = useMemo(() => {\n const national = orders.reduce((acc, order) => {\n return acc.add(new Decimal(order.order_price).mul(order.order_quantity));\n }, zero);\n\n return national.toNumber();\n }, [orders]);\n\n const totalQuantity = useMemo(() => {\n const totalQuantity = orders.reduce((acc, order) => {\n return acc.add(new Decimal(order.order_quantity));\n }, zero);\n\n return totalQuantity.toString();\n }, [orders, symbolInfo.base_dp]);\n\n return { dataSource: orders, national, askAndBid, totalQuantity };\n}\n","import { FC } from \"react\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { registerSimpleDialog } from \"@orderly.network/ui\";\nimport { useScaledOrderConfirmScript } from \"./scaledOrderConfirm.script\";\nimport {\n ScaledOrderConfirm,\n ScaledOrderConfirmProps,\n} from \"./scaledOrderConfirm.ui\";\n\nexport type ScaledOrderConfirmWidgetProps = ScaledOrderConfirmProps;\n\nexport const ScaledOrderConfirmWidget: FC<ScaledOrderConfirmWidgetProps> = (\n props,\n) => {\n const state = useScaledOrderConfirmScript(props);\n\n return <ScaledOrderConfirm {...props} {...state} />;\n};\n\nexport const scaledOrderConfirmDialogId = \"scaledOrderConfirm\";\n\nregisterSimpleDialog(scaledOrderConfirmDialogId, ScaledOrderConfirmWidget, {\n size: \"md\",\n title: () => i18n.t(\"orderEntry.confirmScaledOrder\"),\n contentProps: {\n // className: \"oui-p-0\",\n },\n});\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide, OrderType } from \"@orderly.network/types\";\nimport { cn, Select, Text, useScreen } from \"@orderly.network/ui\";\n\nexport const OrderTypeSelect = (props: {\n type: OrderType;\n onChange: (type: OrderType) => void;\n side: OrderSide;\n canTrade: boolean;\n}) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const allOptions = useMemo(() => {\n return [\n { label: t(\"orderEntry.orderType.limitOrder\"), value: OrderType.LIMIT },\n { label: t(\"orderEntry.orderType.marketOrder\"), value: OrderType.MARKET },\n {\n label: t(\"orderEntry.orderType.stopLimit\"),\n value: OrderType.STOP_LIMIT,\n },\n {\n label: t(\"orderEntry.orderType.stopMarket\"),\n value: OrderType.STOP_MARKET,\n },\n {\n label: t(\"orderEntry.orderType.scaledOrder\"),\n value: OrderType.SCALED,\n },\n {\n label: t(\"orderEntry.orderType.trailingStop\"),\n value: OrderType.TRAILING_STOP,\n },\n ];\n }, [t]);\n\n const advancedOptions = useMemo(() => {\n return [\n {\n label: t(\"orderEntry.orderType.stopLimit\"),\n value: OrderType.STOP_LIMIT,\n },\n {\n label: t(\"orderEntry.orderType.stopMarket\"),\n value: OrderType.STOP_MARKET,\n },\n { label: t(\"orderEntry.orderType.scaledOrder\"), value: OrderType.SCALED },\n {\n label: t(\"orderEntry.orderType.trailingStop\"),\n value: OrderType.TRAILING_STOP,\n },\n ];\n }, [t]);\n\n const displayLabelMap = useMemo(() => {\n return {\n [OrderType.LIMIT]: t(\"orderEntry.orderType.limit\"),\n [OrderType.MARKET]: t(\"common.marketPrice\"),\n [OrderType.STOP_LIMIT]: t(\"orderEntry.orderType.stopLimit\"),\n [OrderType.STOP_MARKET]: t(\"orderEntry.orderType.stopMarket\"),\n [OrderType.SCALED]: t(\"orderEntry.orderType.scaledOrder\"),\n [OrderType.TRAILING_STOP]: t(\"orderEntry.orderType.trailingStop\"),\n };\n }, [t]);\n\n if (!isMobile) {\n const baseButtonClassName =\n \"oui-flex oui-flex-1 oui-items-center oui-justify-center oui-gap-x-1 oui-rounded oui-px-3 oui-py-0.5 oui-text-xs oui-font-semibold oui-h-8\";\n\n const selectedButtonClassName = cn(\n baseButtonClassName,\n \"oui-bg-base-5 oui-text-base-contrast\",\n );\n const unselectedButtonClassName = cn(\n baseButtonClassName,\n \"oui-bg-base-7 oui-text-base-contrast-36\",\n );\n\n const handleChange = (type: OrderType) => {\n props.onChange(type);\n };\n\n return (\n <div\n className=\"oui-flex oui-w-full oui-gap-1\"\n data-testid=\"oui-testid-orderEntry-orderType-desktop\"\n >\n <button\n type=\"button\"\n className={\n props.type === OrderType.LIMIT\n ? selectedButtonClassName\n : unselectedButtonClassName\n }\n aria-pressed={props.type === OrderType.LIMIT}\n onClick={() => handleChange(OrderType.LIMIT)}\n disabled={!props.canTrade}\n data-testid=\"oui-testid-orderEntry-orderType-limit\"\n >\n <Text size=\"xs\">{t(\"orderEntry.orderType.limit\")}</Text>\n </button>\n\n <button\n type=\"button\"\n className={\n props.type === OrderType.MARKET\n ? selectedButtonClassName\n : unselectedButtonClassName\n }\n aria-pressed={props.type === OrderType.MARKET}\n onClick={() => handleChange(OrderType.MARKET)}\n disabled={!props.canTrade}\n data-testid=\"oui-testid-orderEntry-orderType-market\"\n >\n <Text size=\"xs\">{t(\"orderEntry.orderType.market\")}</Text>\n </button>\n\n <div\n className=\"oui-flex-1\"\n data-testid=\"oui-testid-orderEntry-orderType-advanced\"\n >\n <Select.options\n testid=\"oui-testid-orderEntry-orderType-advanced-select\"\n currentValue={props.type}\n value={props.type}\n options={advancedOptions}\n onValueChange={props.onChange}\n placeholder={t(\"trading.layout.advanced\")}\n disabled={!props.canTrade}\n contentProps={{\n className: \"oui-bg-base-8\",\n }}\n classNames={{\n trigger: \"oui-bg-base-7 oui-border-none oui-h-8 oui-rounded-md\",\n }}\n valueFormatter={(value, option) => {\n const isAdvanced =\n value === OrderType.STOP_LIMIT ||\n value === OrderType.STOP_MARKET ||\n value === OrderType.SCALED ||\n value === OrderType.TRAILING_STOP;\n if (!isAdvanced) {\n return (\n <Text size=\"xs\" className=\"oui-text-base-contrast-80\">\n {option.placeholder}\n </Text>\n );\n }\n const label =\n displayLabelMap[value as keyof typeof displayLabelMap];\n return (\n <Text size=\"xs\" className=\"oui-text-base-contrast-80\">\n {label}\n </Text>\n );\n }}\n size=\"md\"\n />\n </div>\n </div>\n );\n }\n\n return (\n <Select.options\n testid=\"oui-testid-orderEntry-orderType-button\"\n currentValue={props.type}\n value={props.type}\n options={allOptions}\n onValueChange={props.onChange}\n contentProps={{\n className: cn(\n \"oui-orderEntry-orderTypeSelect-content\",\n \"oui-bg-base-8\",\n ),\n }}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-orderTypeSelect-btn\",\n \"oui-bg-base-7 oui-border-line-12 oui-h-8 oui-rounded-md\",\n ),\n }}\n valueFormatter={(value, option) => {\n const item = allOptions.find((o) => o.value === value);\n if (!item) {\n return <Text size={\"xs\"}>{option.placeholder}</Text>;\n }\n\n const label = displayLabelMap[value as keyof typeof displayLabelMap];\n\n return (\n <Text size={\"xs\"} className=\"oui-text-base-contrast-80\">\n {label}\n </Text>\n );\n }}\n size={\"md\"}\n />\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { MarginMode } from \"@orderly.network/types\";\nimport {\n ChevronRightIcon,\n CloseIcon,\n Divider,\n Flex,\n IconButton,\n Text,\n TokenIcon,\n cn,\n} from \"@orderly.network/ui\";\nimport type { MarginModeSwitchState } from \"./marginModeSwitch.script\";\n\nexport type MarginModeSwitchProps = Pick<\n MarginModeSwitchState,\n | \"symbol\"\n | \"isMobile\"\n | \"currentMarginMode\"\n | \"selectedMarginMode\"\n | \"onSelect\"\n> & {\n close?: () => void;\n onOpenSettings?: () => void;\n};\n\nexport const MarginModeSwitch: FC<MarginModeSwitchProps> = (props) => {\n const { t } = useTranslation();\n\n const handleSelect = (mode: MarginMode) => {\n props.onSelect(mode);\n };\n\n const titleClassName = props.isMobile\n ? \"oui-text-lg oui-leading-[26px]\"\n : \"oui-text-base oui-leading-6\";\n\n const headerPadding = props.isMobile ? \"oui-pt-3\" : \"oui-px-5 oui-pt-3\";\n const contentPadding = props.isMobile ? \"oui-py-4\" : \"oui-p-5\";\n\n return (\n <Flex\n direction=\"column\"\n className={cn(\n \"oui-w-full\",\n props.isMobile\n ? \"oui-rounded-t-xl oui-bg-base-8\"\n : \"oui-rounded-xl oui-bg-base-8\",\n )}\n data-testid=\"oui-testid-marginModeSwitch\"\n >\n <div className={cn(\"oui-w-full\", headerPadding)}>\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n className={cn(props.isMobile && \"oui-px-4\")}\n >\n {props.isMobile ? (\n <button\n type=\"button\"\n className=\"oui-size-[18px] oui-opacity-0\"\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ) : null}\n\n <Text\n className={cn(\n \"oui-font-semibold oui-tracking-[0.03em]\",\n titleClassName,\n )}\n intensity={98}\n >\n {t(\"marginMode.switchMarginMode\")}\n </Text>\n\n <IconButton\n color=\"light\"\n className=\"oui-size-[18px]\"\n onClick={props.close}\n aria-label=\"Close\"\n data-testid=\"oui-testid-marginModeSwitch-close\"\n >\n <CloseIcon size={18} color=\"white\" opacity={0.98} />\n </IconButton>\n </Flex>\n <Divider className=\"oui-mt-[9px] oui-w-full\" />\n </div>\n\n <div\n className={cn(\n \"oui-w-full\",\n contentPadding,\n props.isMobile && \"oui-px-4\",\n )}\n >\n <Flex itemAlign=\"center\" gap={2}>\n <TokenIcon symbol={props.symbol} className=\"oui-size-5\" />\n <Text.formatted\n className=\"oui-tracking-[0.03em]\"\n rule=\"symbol\"\n formatString=\"base-type\"\n size=\"base\"\n weight=\"semibold\"\n intensity={98}\n >\n {props.symbol}\n </Text.formatted>\n </Flex>\n\n <Flex direction=\"column\" gap={3} className=\"oui-mt-3 oui-w-full\">\n <OptionCard\n mode={MarginMode.CROSS}\n selected={props.selectedMarginMode === MarginMode.CROSS}\n isCurrent={props.currentMarginMode === MarginMode.CROSS}\n onClick={() => handleSelect(MarginMode.CROSS)}\n />\n <OptionCard\n mode={MarginMode.ISOLATED}\n selected={props.selectedMarginMode === MarginMode.ISOLATED}\n isCurrent={props.currentMarginMode === MarginMode.ISOLATED}\n onClick={() => handleSelect(MarginMode.ISOLATED)}\n />\n </Flex>\n\n <Flex justify=\"center\" className=\"oui-mt-3 oui-w-full\">\n <button\n type=\"button\"\n className={cn(\n \"oui-flex oui-items-center oui-gap-1\",\n \"oui-group\",\n \"oui-text-xs oui-leading-[15px] oui-font-semibold oui-text-base-contrast-54 oui-tracking-[0.03em]\",\n props.onOpenSettings\n ? \"oui-cursor-pointer hover:oui-text-base-contrast-80 oui-transition-colors\"\n : \"oui-cursor-default\",\n )}\n onClick={props.onOpenSettings}\n disabled={!props.onOpenSettings}\n data-testid=\"oui-testid-marginModeSwitch-settings\"\n >\n <span>{t(\"marginMode.marginModeSettings\")}</span>\n <ChevronRightIcon\n size={18}\n color=\"white\"\n opacity={1}\n className={cn(\n \"oui-text-base-contrast-54 oui-transition-colors\",\n props.onOpenSettings && \"group-hover:oui-text-base-contrast-80\",\n )}\n />\n </button>\n </Flex>\n\n {props.isMobile ? (\n <div className=\"oui-mt-4 oui-h-[34px] oui-w-full\" />\n ) : null}\n </div>\n </Flex>\n );\n};\n\nconst OptionCard: FC<{\n mode: MarginMode;\n selected: boolean;\n isCurrent: boolean;\n onClick: () => void;\n}> = (props) => {\n const { t } = useTranslation();\n\n const title =\n props.mode === MarginMode.CROSS\n ? t(\"marginMode.crossMargin\")\n : t(\"marginMode.isolatedMargin\");\n const desc =\n props.mode === MarginMode.CROSS\n ? t(\"marginMode.crossMarginDescription\")\n : t(\"marginMode.isolatedMarginDescription\");\n\n return (\n <button\n type=\"button\"\n className={cn(\n \"oui-relative oui-w-full oui-rounded-md oui-p-2\",\n \"oui-bg-base-6\",\n \"oui-text-left\",\n props.selected\n ? \"oui-border oui-border-[#38e2fe]\"\n : \"oui-border oui-border-transparent hover:oui-border-line-12\",\n )}\n onClick={props.onClick}\n data-testid={`oui-testid-marginModeSwitch-option-${props.mode}`}\n >\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" className=\"oui-w-full\">\n <Text\n className=\"oui-text-sm oui-font-semibold oui-leading-5 oui-tracking-[0.03em]\"\n intensity={98}\n >\n {title}\n </Text>\n <Text className=\"oui-text-2xs oui-leading-[15px] oui-text-base-contrast-36 oui-font-semibold oui-tracking-[0.03em]\">\n {desc}\n </Text>\n </Flex>\n\n {props.isCurrent ? (\n <div\n className={cn(\n \"oui-absolute -oui-right-px -oui-top-px\",\n \"oui-rounded-bl-md oui-rounded-tr-md\",\n \"oui-bg-[#38e2fe] oui-px-1 oui-py-0.5\",\n )}\n >\n <Text className=\"oui-text-2xs oui-leading-none oui-font-semibold oui-text-black\">\n {t(\"marginMode.current\")}\n </Text>\n </div>\n ) : null}\n </button>\n );\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useMarginModeBySymbol } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { MarginMode } from \"@orderly.network/types\";\nimport { toast, useScreen } from \"@orderly.network/ui\";\n\nexport type MarginModeSwitchScriptOptions = {\n symbol: string;\n close?: () => void;\n};\n\nexport const useMarginModeSwitchScript = (\n options: MarginModeSwitchScriptOptions,\n) => {\n const { symbol, close } = options;\n const { isMobile } = useScreen();\n const { t } = useTranslation();\n\n const { marginMode: currentMarginMode, update } =\n useMarginModeBySymbol(symbol);\n\n const [selectedMarginMode, setSelectedMarginMode] =\n useState<MarginMode>(currentMarginMode);\n\n useEffect(() => {\n setSelectedMarginMode(currentMarginMode);\n }, [currentMarginMode]);\n\n const applyMarginMode = useCallback(\n async (mode: MarginMode) => {\n const result = await update(mode);\n setSelectedMarginMode(mode);\n return result;\n },\n [update],\n );\n\n const onSelect = useCallback(\n (mode: MarginMode) => {\n if (mode === currentMarginMode) {\n close?.();\n return;\n }\n\n close?.();\n\n applyMarginMode(mode)\n .then(() => {\n toast.success(t(\"marginMode.updatedSuccessfully\"));\n })\n .catch((error) => {\n toast.error(\n error instanceof Error\n ? error.message\n : \"Failed to update margin mode\",\n );\n });\n },\n [applyMarginMode, close, currentMarginMode, t],\n );\n\n return {\n symbol,\n isMobile,\n currentMarginMode,\n selectedMarginMode,\n setSelectedMarginMode,\n applyMarginMode,\n close,\n onSelect,\n };\n};\n\nexport type MarginModeSwitchState = ReturnType<\n typeof useMarginModeSwitchScript\n>;\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n useMarkets,\n MarketsType,\n useMarginModes,\n} from \"@orderly.network/hooks\";\nimport { MarginMode } from \"@orderly.network/types\";\nimport { toast, useScreen } from \"@orderly.network/ui\";\nimport { formatSymbol } from \"@orderly.network/utils\";\n\nexport type MarginModeSettingsScriptOptions = {\n close?: () => void;\n};\n\nexport type MarginModeSettingsItem = {\n key: string;\n symbol: string;\n};\n\nexport const useMarginModeSettingsScript = (\n options: MarginModeSettingsScriptOptions,\n) => {\n const { isMobile } = useScreen();\n\n // Fetch markets data using the same API as markets list\n const [markets] = useMarkets(MarketsType.ALL);\n\n // Convert MarketsItem[] to MarginModeSettingsItem[]\n const items = useMemo(() => {\n if (!markets || markets.length === 0) {\n return [];\n }\n\n return markets.map((market) => ({\n key: market.symbol, // Original symbol: \"PERP_BTC_USDC\"\n symbol: formatSymbol(market.symbol, \"base-type\"), // Formatted: \"BTC-PERP\"\n }));\n }, [markets]);\n\n const [searchKeyword, setSearchKeyword] = useState(\"\");\n const [selectedKeys, setSelectedKeys] = useState<Set<string>>(\n () => new Set(),\n );\n const [isOperationLoading, setIsOperationLoading] = useState(false);\n\n // Fetch margin modes from API\n const {\n marginModes,\n isLoading: isMarginModesLoading,\n updateMarginMode,\n isMutating: isSettingMarginMode,\n } = useMarginModes();\n\n const [isDataLoading, setIsDataLoading] = useState(true);\n\n useEffect(() => {\n if (markets.length > 0) {\n setIsDataLoading(false);\n }\n }, [markets]);\n\n // Get margin modes from API\n const itemMarginModes = useMemo(() => {\n const result: Record<string, MarginMode> = {};\n for (const item of items) {\n const marginMode = marginModes[item.key];\n // Default to CROSS if not found in API response\n result[item.key] = marginMode ?? MarginMode.CROSS;\n }\n return result;\n }, [items, marginModes]);\n\n const filteredItems = useMemo(() => {\n const keyword = searchKeyword.trim().toLowerCase();\n if (!keyword) return items;\n return items.filter((item) => item.symbol.toLowerCase().includes(keyword));\n }, [items, searchKeyword]);\n\n const visibleSelectedCount = useMemo(() => {\n return filteredItems.filter((item) => selectedKeys.has(item.key)).length;\n }, [filteredItems, selectedKeys]);\n\n const isSelectAll = useMemo(() => {\n return (\n filteredItems.length > 0 && visibleSelectedCount === filteredItems.length\n );\n }, [filteredItems.length, visibleSelectedCount]);\n\n const isIndeterminate = useMemo(() => {\n return (\n visibleSelectedCount > 0 && visibleSelectedCount < filteredItems.length\n );\n }, [filteredItems.length, visibleSelectedCount]);\n\n // Calculate margin mode statistics for selected items\n const selectedMarginModeStats = useMemo(() => {\n let crossCount = 0;\n let isolatedCount = 0;\n\n selectedKeys.forEach((key) => {\n const mode = itemMarginModes[key] ?? MarginMode.CROSS;\n if (mode === MarginMode.CROSS) {\n crossCount++;\n } else {\n isolatedCount++;\n }\n });\n\n return {\n crossCount,\n isolatedCount,\n isCrossButtonDisabled: crossCount > 0 && isolatedCount === 0,\n isIsolatedButtonDisabled: isolatedCount > 0 && crossCount === 0,\n };\n }, [selectedKeys, itemMarginModes]);\n\n const onSearchChange = useCallback((keyword: string) => {\n setSearchKeyword(keyword);\n }, []);\n\n const onToggleItem = useCallback((key: string) => {\n setSelectedKeys((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }, []);\n\n const onToggleSelectAll = useCallback(() => {\n setSelectedKeys((prev) => {\n const next = new Set(prev);\n if (isSelectAll) {\n for (const item of filteredItems) {\n next.delete(item.key);\n }\n return next;\n }\n\n for (const item of filteredItems) {\n next.add(item.key);\n }\n return next;\n });\n }, [filteredItems, isSelectAll]);\n\n const onSetMarginMode = useCallback(\n async (mode: MarginMode) => {\n if (selectedKeys.size === 0) return;\n\n setIsOperationLoading(true);\n try {\n // Build request payload\n const payload = {\n symbol_list: Array.from(selectedKeys),\n default_margin_mode: mode,\n };\n\n // Call API to update margin modes and refresh data\n await updateMarginMode(payload);\n toast.success(\"Updated successfully\");\n } catch (error) {\n toast.error(\n error instanceof Error\n ? error.message\n : \"Failed to update margin mode\",\n );\n } finally {\n setIsOperationLoading(false);\n }\n },\n [selectedKeys, updateMarginMode],\n );\n\n const isLoading =\n isDataLoading ||\n isMarginModesLoading ||\n isOperationLoading ||\n isSettingMarginMode;\n\n return {\n isMobile,\n close: options.close,\n\n items,\n filteredItems,\n searchKeyword,\n selectedKeys,\n itemMarginModes,\n isSelectAll,\n isIndeterminate,\n isLoading,\n isCrossButtonDisabled: selectedMarginModeStats.isCrossButtonDisabled,\n isIsolatedButtonDisabled: selectedMarginModeStats.isIsolatedButtonDisabled,\n\n onSearchChange,\n onToggleItem,\n onToggleSelectAll,\n onSetMarginMode,\n };\n};\n\nexport type MarginModeSettingsState = ReturnType<\n typeof useMarginModeSettingsScript\n>;\n","import React, { FC, useCallback } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { MarginMode } from \"@orderly.network/types\";\nimport {\n Button,\n Checkbox,\n CloseCircleFillIcon,\n CloseIcon,\n Divider,\n Flex,\n IconButton,\n Input,\n Text,\n cn,\n} from \"@orderly.network/ui\";\nimport type {\n MarginModeSettingsItem,\n MarginModeSettingsState,\n} from \"./marginModeSettings.script\";\n\nexport type MarginModeSettingsProps = Pick<\n MarginModeSettingsState,\n | \"isMobile\"\n | \"close\"\n | \"filteredItems\"\n | \"searchKeyword\"\n | \"selectedKeys\"\n | \"itemMarginModes\"\n | \"isSelectAll\"\n | \"isIndeterminate\"\n | \"isLoading\"\n | \"isCrossButtonDisabled\"\n | \"isIsolatedButtonDisabled\"\n | \"onSearchChange\"\n | \"onToggleItem\"\n | \"onToggleSelectAll\"\n> & {\n onSetMarginMode: (mode: MarginMode) => Promise<void> | void;\n};\n\nexport const MarginModeSettings: FC<MarginModeSettingsProps> = (props) => {\n const { t } = useTranslation();\n const headerPadding = props.isMobile\n ? \"oui-px-4 oui-pt-3\"\n : \"oui-px-5 oui-pt-3\";\n const contentPadding = props.isMobile ? \"oui-px-4\" : \"oui-px-5\";\n\n const selectedCount = props.selectedKeys.size;\n const totalCountTextClassName =\n selectedCount > 0 ? \"oui-text-primary-light\" : \"oui-text-base-contrast-36\";\n\n const handleClearSearch = useCallback(() => {\n props.onSearchChange(\"\");\n }, [props.onSearchChange]);\n\n const handleSetCross = useCallback(() => {\n props.onSetMarginMode(MarginMode.CROSS);\n }, [props.onSetMarginMode]);\n\n const handleSetIsolated = useCallback(() => {\n props.onSetMarginMode(MarginMode.ISOLATED);\n }, [props.onSetMarginMode]);\n\n return (\n <Flex\n direction=\"column\"\n className={cn(\n \"oui-size-full\",\n \"oui-rounded-xl oui-bg-base-8\",\n \"oui-overflow-hidden\",\n )}\n data-testid=\"oui-testid-marginModeSettings\"\n >\n <div className={cn(\"oui-w-full\", headerPadding)}>\n <Flex itemAlign=\"center\" justify=\"between\">\n {props.isMobile ? (\n <button\n type=\"button\"\n className=\"oui-size-[18px] oui-opacity-0\"\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ) : null}\n\n <Text\n className={cn(\n \"oui-font-semibold oui-tracking-[0.48px]\",\n props.isMobile\n ? \"oui-text-center oui-text-lg oui-leading-[26px]\"\n : \"oui-text-base oui-leading-6\",\n )}\n intensity={98}\n >\n {t(\"marginMode.perpetualFutures\")}\n </Text>\n\n <IconButton\n color=\"light\"\n className=\"oui-size-[18px]\"\n onClick={props.close}\n aria-label={t(\"common.close\")}\n data-testid=\"oui-testid-marginModeSettings-close\"\n >\n <CloseIcon size={18} color=\"white\" opacity={0.98} />\n </IconButton>\n </Flex>\n <Divider className=\"oui-mt-[9px] oui-w-full\" />\n </div>\n\n <div\n className={cn(\n \"oui-relative oui-z-10 oui-w-full oui-bg-base-8\",\n contentPadding,\n \"oui-py-3\",\n )}\n >\n <Input\n value={props.searchKeyword}\n onValueChange={props.onSearchChange}\n placeholder={t(\"marginMode.searchPlaceholder\")}\n size=\"md\"\n fullWidth\n classNames={{\n root: cn(\n \"oui-outline-line\",\n props.searchKeyword.trim() ? \"oui-outline-primary-light\" : \"\",\n ),\n }}\n prefix={\n <div className=\"oui-pl-3 oui-pr-1\" aria-hidden=\"true\">\n <SearchGlyph className=\"oui-text-base-contrast-54\" />\n </div>\n }\n suffix={\n props.searchKeyword ? (\n <div className=\"oui-pr-2\">\n <CloseCircleFillIcon\n size={14}\n className=\"oui-cursor-pointer oui-text-base-contrast-36\"\n onClick={handleClearSearch}\n />\n </div>\n ) : null\n }\n autoComplete=\"off\"\n />\n </div>\n\n <Flex\n direction=\"column\"\n className={cn(\n \"oui-w-full\",\n props.isMobile ? \"oui-flex-1 oui-min-h-0\" : \"\",\n )}\n >\n <Flex\n direction=\"column\"\n gap={3}\n className={cn(\n \"oui-w-full oui-overflow-y-auto oui-custom-scrollbar\",\n props.isMobile\n ? \"oui-flex-1 oui-min-h-0 oui-px-4 oui-pt-0 oui-pb-3\"\n : \"oui-h-[308px] oui-px-5 oui-pt-0 oui-pb-3\",\n )}\n style={\n {\n scrollbarWidth: \"thin\",\n scrollbarColor: \"rgba(255, 255, 255, 0.2) transparent\",\n } as React.CSSProperties\n }\n >\n {props.filteredItems.map((item) => (\n <SymbolRow\n key={item.key}\n item={item}\n checked={props.selectedKeys.has(item.key)}\n marginMode={props.itemMarginModes[item.key] ?? MarginMode.CROSS}\n onToggle={props.onToggleItem}\n />\n ))}\n </Flex>\n\n <Divider className=\"oui-w-full\" />\n\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n className={cn(\n \"oui-w-full\",\n props.isMobile ? \"oui-px-4 oui-py-3\" : \"oui-px-5 oui-py-3\",\n )}\n >\n <Flex itemAlign=\"center\" gap={2}>\n <label\n className={cn(\n \"oui-flex oui-items-center oui-gap-2 oui-cursor-pointer oui-select-none\",\n )}\n >\n <Checkbox\n color=\"white\"\n checked={props.isSelectAll}\n onCheckedChange={() => {\n props.onToggleSelectAll();\n }}\n aria-label={t(\"marginMode.selectAll\")}\n />\n <Text className=\"oui-text-sm oui-font-semibold oui-text-base-contrast-80\">\n {t(\"marginMode.selectAll\")}\n </Text>\n </label>\n </Flex>\n\n <Text className=\"oui-text-sm oui-text-base-contrast-54\">\n {t(\"common.total\")}:{\" \"}\n <span className={cn(\"oui-font-semibold\", totalCountTextClassName)}>\n {selectedCount}\n </span>\n </Text>\n </Flex>\n\n <Flex\n itemAlign=\"center\"\n justify=\"end\"\n gap={3}\n className={cn(\n \"oui-w-full\",\n props.isMobile\n ? \"oui-px-4 oui-pt-3 oui-pb-[calc(20px+env(safe-area-inset-bottom))]\"\n : \"oui-px-5 oui-pt-3 oui-pb-5\",\n )}\n >\n <Text className=\"oui-text-sm oui-leading-8 oui-text-base-contrast-80\">\n {t(\"marginMode.setAs\")}\n </Text>\n\n <Button\n size=\"md\"\n className={cn(\n \"oui-bg-base-3 hover:oui-bg-base-3/80 active:oui-bg-base-3/70\",\n selectedCount > 0 && !props.isLoading\n ? \"oui-text-base-contrast-80\"\n : \"oui-text-base-contrast-98\",\n )}\n disabled={\n selectedCount === 0 ||\n props.isLoading ||\n (props.isCrossButtonDisabled ?? false)\n }\n onClick={handleSetCross}\n aria-label={t(\"marginMode.cross\")}\n data-testid=\"oui-testid-marginModeSettings-set-cross\"\n >\n {t(\"marginMode.cross\")}\n </Button>\n <Button\n size=\"md\"\n className={cn(\n \"oui-bg-base-3 hover:oui-bg-base-3/80 active:oui-bg-base-3/70\",\n selectedCount > 0 && !props.isLoading\n ? \"oui-text-base-contrast-80\"\n : \"oui-text-base-contrast-98\",\n )}\n disabled={\n selectedCount === 0 ||\n props.isLoading ||\n (props.isIsolatedButtonDisabled ?? false)\n }\n onClick={handleSetIsolated}\n aria-label={t(\"marginMode.isolated\")}\n data-testid=\"oui-testid-marginModeSettings-set-isolated\"\n >\n {t(\"marginMode.isolated\")}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst SymbolRow: FC<{\n item: MarginModeSettingsItem;\n checked: boolean;\n marginMode: MarginMode;\n onToggle: (key: string) => void;\n}> = (props) => {\n const { t } = useTranslation();\n const handleCheckedChange = useCallback(() => {\n props.onToggle(props.item.key);\n }, [props]);\n\n return (\n <Flex itemAlign=\"center\" className=\"oui-w-full\">\n <label\n className={cn(\n \"oui-flex oui-items-center oui-gap-2 oui-flex-1 oui-cursor-pointer oui-select-none oui-w-full\",\n )}\n data-testid={`oui-testid-marginModeSettings-item-${props.item.key}`}\n >\n <Checkbox\n color=\"white\"\n checked={props.checked}\n onCheckedChange={handleCheckedChange}\n aria-label={props.item.symbol}\n />\n <Text className=\"oui-text-sm oui-font-semibold oui-text-base-contrast-80\">\n {props.item.symbol}\n </Text>\n <span\n className={cn(\n \"oui-inline-flex oui-items-center\",\n \"oui-rounded oui-bg-base-6 oui-px-2 oui-py-0\",\n \"oui-h-[18px] oui-text-xs oui-leading-[18px]\",\n \"oui-text-base-contrast-36\",\n )}\n >\n {props.marginMode === MarginMode.ISOLATED\n ? t(\"marginMode.isolated\")\n : t(\"marginMode.cross\")}\n </span>\n </label>\n </Flex>\n );\n};\n\nconst SearchGlyph: FC<{ className?: string }> = (props) => {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <path\n d=\"M6.417 1.167a5.25 5.25 0 1 0 3.138 9.46l2.139 2.14a.583.583 0 1 0 .825-.826l-2.14-2.139a5.25 5.25 0 0 0-3.962-8.635Zm0 1.167a4.083 4.083 0 1 1 0 8.166 4.083 4.083 0 0 1 0-8.166Z\"\n fill=\"currentColor\"\n fillOpacity=\"0.8\"\n />\n </svg>\n );\n};\n","import React from \"react\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport {\n useMarginModeSettingsScript,\n type MarginModeSettingsScriptOptions,\n} from \"./marginModeSettings.script\";\nimport { MarginModeSettings } from \"./marginModeSettings.ui\";\n\nexport type MarginModeSettingsWidgetProps = MarginModeSettingsScriptOptions;\n\nexport const MarginModeSettingsWidget: React.FC<\n MarginModeSettingsWidgetProps\n> = (props) => {\n const state = useMarginModeSettingsScript(props);\n\n return (\n <MarginModeSettings {...state} onSetMarginMode={state.onSetMarginMode} />\n );\n};\n\nexport const MarginModeSettingsSheetId = \"MarginModeSettingsSheetId\";\nexport const MarginModeSettingsDialogId = \"MarginModeSettingsDialogId\";\n\nregisterSimpleSheet(MarginModeSettingsSheetId, MarginModeSettingsWidget, {\n title: undefined,\n closable: false,\n classNames: {\n content:\n \"oui-bg-transparent !oui-px-0 !oui-py-0 oui-top-[100px] oui-bottom-0\",\n // SheetBody must be full height, otherwise child `h-full`/flex layout can't allocate space\n // and footer may be pushed out of viewport.\n body: \"oui-p-0 oui-h-full\",\n overlay: \"!oui-bg-black/10\",\n },\n});\n\nregisterSimpleDialog(MarginModeSettingsDialogId, MarginModeSettingsWidget, {\n title: undefined,\n closable: false,\n classNames: {\n content: \"oui-w-[360px] oui-bg-transparent !oui-px-0\",\n body: \"oui-p-0\",\n overlay: \"!oui-bg-black/10\",\n },\n});\n","import React from \"react\";\nimport {\n modal,\n registerSimpleDialog,\n registerSimpleSheet,\n useModal,\n} from \"@orderly.network/ui\";\nimport {\n MarginModeSettingsDialogId,\n MarginModeSettingsSheetId,\n} from \"../marginModeSettings\";\nimport {\n useMarginModeSwitchScript,\n type MarginModeSwitchScriptOptions,\n} from \"./marginModeSwitch.script\";\nimport {\n MarginModeSwitch,\n type MarginModeSwitchProps,\n} from \"./marginModeSwitch.ui\";\n\nexport type MarginModeSwitchWidgetProps = Pick<\n MarginModeSwitchProps,\n \"onOpenSettings\"\n> &\n MarginModeSwitchScriptOptions;\n\nexport const MarginModeSwitchWidget: React.FC<MarginModeSwitchWidgetProps> = (\n props,\n) => {\n const state = useMarginModeSwitchScript(props);\n const { id: currentModalId } = useModal();\n\n const onOpenSettings = () => {\n const modalId =\n currentModalId === MarginModeSwitchSheetId\n ? MarginModeSettingsSheetId\n : MarginModeSettingsDialogId;\n modal.show(modalId, {});\n };\n\n return (\n <MarginModeSwitch\n {...state}\n onOpenSettings={props.onOpenSettings ?? onOpenSettings}\n />\n );\n};\n\nexport const MarginModeSwitchSheetId = \"MarginModeSwitchSheetId\";\nexport const MarginModeSwitchDialogId = \"MarginModeSwitchDialogId\";\n\nregisterSimpleSheet(MarginModeSwitchSheetId, MarginModeSwitchWidget, {\n // Use custom header in widget UI for both web and mweb.\n title: undefined,\n closable: false,\n classNames: {\n content: \"oui-bg-transparent !oui-px-0\",\n body: \"oui-p-0\",\n },\n});\n\nregisterSimpleDialog(MarginModeSwitchDialogId, MarginModeSwitchWidget, {\n // Use custom header in widget UI for both web and mweb.\n title: undefined,\n closable: false,\n classNames: {\n content: \"oui-w-[360px] oui-bg-transparent !oui-px-0\",\n body: \"oui-p-0\",\n },\n});\n","import { FlagKeys, useFeatureFlag } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { MarginMode } from \"@orderly.network/types\";\nimport { cn, modal, Text, useScreen } from \"@orderly.network/ui\";\nimport {\n SymbolLeverageDialogId,\n SymbolLeverageSheetId,\n} from \"@orderly.network/ui-leverage\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport {\n MarginModeSwitchDialogId,\n MarginModeSwitchSheetId,\n} from \"../marginModeSwitch\";\n\ntype LeverageBadgeProps = {\n symbol: string;\n side: OrderSide;\n symbolLeverage?: number;\n marginMode?: MarginMode;\n disabled?: boolean;\n};\n\nexport const LeverageBadge = (props: LeverageBadgeProps) => {\n const { symbol, side, symbolLeverage, disabled } = props;\n const { isMobile } = useScreen();\n const { t } = useTranslation();\n const { enabled } = useFeatureFlag(FlagKeys.IsolatedMargin);\n\n const marginMode = props.marginMode;\n\n const isDisabled = !!disabled;\n const curLeverage = symbolLeverage ?? 1;\n\n const showLeverageModal = () => {\n if (isDisabled) return;\n\n const modalId = isMobile ? SymbolLeverageSheetId : SymbolLeverageDialogId;\n modal.show(modalId, {\n symbol,\n side,\n curLeverage,\n marginMode,\n });\n };\n\n const showMarginModeModal = () => {\n if (isDisabled || !enabled) {\n return;\n }\n\n const modalId = isMobile\n ? MarginModeSwitchSheetId\n : MarginModeSwitchDialogId;\n modal.show(modalId, {\n symbol,\n });\n };\n\n return (\n <div\n className={cn(\n \"oui-flex oui-w-full oui-items-center oui-rounded-md oui-border oui-border-line-12 oui-bg-base-6\",\n \"oui-orderEntry-leverage-btn\",\n \"oui-h-8\",\n \"oui-select-none\",\n )}\n data-testid=\"oui-testid-orderEntry-margin-leverage\"\n >\n <button\n type=\"button\"\n className={cn(\n \"oui-flex oui-flex-1 oui-items-center oui-justify-center oui-gap-x-1\",\n \"oui-px-3 oui-py-1.5\",\n \"oui-text-xs oui-font-semibold oui-text-base-contrast-54\",\n isDisabled ? \"oui-cursor-not-allowed\" : \"oui-cursor-pointer\",\n )}\n data-testid=\"oui-testid-orderEntry-margin-mode\"\n aria-label={t(\"marginMode.switchMarginMode\")}\n disabled={isDisabled}\n onClick={showMarginModeModal}\n >\n <Text>\n {marginMode === undefined\n ? \"--\"\n : marginMode === MarginMode.ISOLATED\n ? t(\"marginMode.isolated\")\n : t(\"marginMode.cross\")}\n </Text>\n </button>\n <div className=\"oui-h-5 oui-w-px oui-bg-line\" aria-hidden=\"true\" />\n <button\n type=\"button\"\n className={cn(\n \"oui-flex oui-flex-1 oui-items-center oui-justify-center oui-gap-x-1\",\n \"oui-px-3 oui-py-1.5\",\n \"oui-text-xs oui-font-semibold oui-text-base-contrast-54\",\n isDisabled ? \"oui-cursor-not-allowed\" : \"oui-cursor-pointer\",\n )}\n aria-label=\"Adjust leverage\"\n disabled={isDisabled}\n onClick={showLeverageModal}\n data-testid=\"oui-testid-orderEntry-leverage\"\n >\n <Text.numeral\n dp={0}\n rm={Decimal.ROUND_DOWN}\n unit=\"x\"\n unitClassName=\"oui-ml-0\"\n >\n {curLeverage}\n </Text.numeral>\n </button>\n </div>\n );\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport {\n MarginMode,\n OrderlyOrder,\n OrderSide,\n OrderType,\n} from \"@orderly.network/types\";\nimport { Button, cn } from \"@orderly.network/ui\";\nimport { OrderTypeSelect } from \"../orderTypeSelect\";\nimport { LeverageBadge } from \"./LeverageBadge\";\n\ntype OrderEntryHeaderProps = {\n symbol: string;\n side: OrderSide;\n canTrade: boolean;\n order_type: OrderType;\n setOrderValue: (key: keyof OrderlyOrder, value: unknown) => void;\n symbolLeverage?: number;\n marginMode?: MarginMode;\n};\n\nexport function OrderEntryHeader(props: OrderEntryHeaderProps) {\n const { canTrade, side, order_type, setOrderValue } = props;\n const { t } = useTranslation();\n\n return (\n <>\n <div className=\"oui-w-full\">\n <LeverageBadge\n symbol={props.symbol}\n side={props.side}\n symbolLeverage={props.symbolLeverage}\n marginMode={props.marginMode}\n disabled={!props.canTrade}\n />\n </div>\n <div className=\"oui-w-full\">\n <OrderTypeSelect\n type={order_type!}\n side={side}\n canTrade={canTrade}\n onChange={(type) => {\n setOrderValue(\"order_type\", type);\n }}\n />\n </div>\n <div\n className={cn(\n \"oui-orderEntry-side\",\n \"oui-grid oui-w-full oui-flex-1 oui-gap-x-2 lg:oui-flex lg:oui-gap-x-[6px]\",\n \"oui-grid-cols-2\",\n )}\n >\n <Button\n onClick={() => {\n props.setOrderValue(\"side\", OrderSide.BUY);\n }}\n size={\"md\"}\n fullWidth\n data-type={OrderSide.BUY}\n className={cn(\n \"oui-orderEntry-side-buy-btn\",\n side === OrderSide.BUY && canTrade\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 props.setOrderValue(\"side\", OrderSide.SELL);\n }}\n data-type={OrderSide.SELL}\n fullWidth\n size={\"md\"}\n className={cn(\n \"oui-orderEntry-side-sell-btn\",\n side === OrderSide.SELL && props.canTrade\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 </div>\n </>\n );\n}\n","import {\n createContext,\n FocusEventHandler,\n useContext,\n RefObject,\n MutableRefObject,\n} from \"react\";\nimport { OrderValidationResult } from \"@orderly.network/hooks\";\nimport { API, OrderlyOrder } from \"@orderly.network/types\";\nimport { InputType, QuantityInputType } from \"../types\";\n\nexport type OrderEntryContextState = {\n errors: OrderValidationResult | null;\n errorMsgVisible: boolean;\n symbolInfo: API.SymbolExt;\n onFocus: (type: InputType) => FocusEventHandler;\n onBlur: (type: InputType) => FocusEventHandler;\n getErrorMsg: (\n key: keyof OrderValidationResult,\n customValue?: string,\n ) => string;\n setOrderValue: (key: keyof OrderlyOrder, value: any) => void;\n setOrderValues: (values: Partial<OrderlyOrder>) => void;\n currentFocusInput: InputType;\n // refs\n priceInputRef: RefObject<HTMLInputElement>;\n priceInputContainerRef: RefObject<HTMLDivElement>;\n triggerPriceInputRef: RefObject<HTMLInputElement>;\n activatedPriceInputRef: RefObject<HTMLInputElement>;\n lastQuantityInputType: MutableRefObject<InputType>;\n leverage?: number;\n};\n\nexport const OrderEntryContext = createContext<OrderEntryContextState>(\n {} as OrderEntryContextState,\n);\n\nexport const useOrderEntryContext = () => {\n return useContext(OrderEntryContext);\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { OrderEntryContext, OrderEntryContextState } from \"./orderEntryContext\";\n\nexport const OrderEntryProvider: FC<\n PropsWithChildren<OrderEntryContextState>\n> = (props) => {\n const {\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n } = props;\n\n const memoizedValue = useMemo<OrderEntryContextState>(() => {\n return {\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n // refs\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n };\n }, [\n errorMsgVisible,\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n currentFocusInput,\n errors,\n\n priceInputRef,\n priceInputContainerRef,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n leverage,\n ]);\n\n return (\n <OrderEntryContext.Provider value={memoizedValue}>\n {props.children}\n </OrderEntryContext.Provider>\n );\n};\n","import { forwardRef, PropsWithChildren, ReactNode } from \"react\";\nimport { EMPTY_LIST } from \"@orderly.network/types\";\nimport { cn, inputFormatter, Input, InputProps } from \"@orderly.network/ui\";\nimport { useOrderEntryContext } from \"../orderEntryContext\";\n\nexport type CustomInputProps = {\n label: string;\n suffix?: ReactNode;\n placeholder?: string;\n id: string;\n className?: string;\n name?: string;\n onChange?: (value: string) => void;\n value?: InputProps[\"value\"];\n autoFocus?: InputProps[\"autoFocus\"];\n error?: string;\n onFocus?: InputProps[\"onFocus\"];\n onBlur?: InputProps[\"onBlur\"];\n formatters?: InputProps[\"formatters\"];\n overrideFormatters?: InputProps[\"formatters\"];\n classNames?: InputProps[\"classNames\"];\n readonly?: boolean;\n prefix?: ReactNode;\n};\n\nexport const CustomInput = forwardRef<HTMLInputElement, CustomInputProps>(\n (props, ref) => {\n const { placeholder = \"0\" } = props;\n const { errorMsgVisible } = useOrderEntryContext();\n\n return (\n <Input.tooltip\n ref={ref}\n tooltip={errorMsgVisible ? props.error : undefined}\n autoComplete={\"off\"}\n autoFocus={props.autoFocus}\n size={\"lg\"}\n placeholder={props.readonly ? \"\" : placeholder}\n id={props.id}\n name={props.name}\n color={props.error ? \"danger\" : undefined}\n prefix={\n props.prefix || (\n <InputLabel id={props.id} className={props.classNames?.prefix}>\n {props.label}\n </InputLabel>\n )\n }\n suffix={props.suffix}\n value={props.readonly ? \"\" : props.value || \"\"}\n // onChange={props.onChange}\n onValueChange={props.onChange}\n onFocus={(event) => {\n props.onFocus?.(event);\n }}\n onBlur={(event) => {\n props.onBlur?.(event);\n }}\n formatters={\n props.overrideFormatters || [\n ...(props.formatters ?? EMPTY_LIST),\n inputFormatter.numberFormatter,\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ]\n }\n classNames={{\n root: cn(\n \"oui-orderEntry-customInput orderly-order-entry oui-relative oui-h-[54px] oui-rounded oui-border oui-border-solid oui-border-line oui-px-2 oui-py-1 group-first:oui-rounded-t-xl group-last:oui-rounded-b-xl\",\n props.error\n ? \"oui-border-transparent\"\n : \"focus-within:oui-border-transparent\",\n props.className,\n props.classNames?.root,\n ),\n input: cn(\"oui-mb-1 oui-mt-5 oui-h-5\", props?.classNames?.input),\n // prefix: cn(props.classNames?.prefix),\n suffix: cn(\n \"oui-absolute oui-right-0 oui-top-0 oui-justify-start oui-py-2 oui-text-2xs oui-text-base-contrast-36\",\n props.classNames?.suffix,\n ),\n }}\n readOnly={props.readonly}\n />\n );\n },\n);\n\nCustomInput.displayName = \"CustomInput\";\n\nconst InputLabel = (\n props: PropsWithChildren<{ id: string; className?: string }>,\n) => {\n return (\n <label\n htmlFor={props.id}\n className={cn(\n \"oui-input-label oui-absolute oui-left-2 oui-top-[7px] oui-text-2xs oui-text-base-contrast-36\",\n props.className,\n )}\n >\n {props.children}\n </label>\n );\n};\n","import { CSSProperties, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { BBOOrderType } from \"@orderly.network/types\";\nimport { Box, cn, Select, Text } from \"@orderly.network/ui\";\n\nexport const BBOOrderTypeSelect = (props: {\n value?: BBOOrderType;\n onChange: (value: BBOOrderType) => void;\n contentStyle?: CSSProperties;\n}) => {\n const { t } = useTranslation();\n\n const options = useMemo(\n () => [\n {\n label: t(\"orderEntry.bbo.counterparty1\"),\n value: BBOOrderType.COUNTERPARTY1,\n },\n {\n label: t(\"orderEntry.bbo.counterparty5\"),\n value: BBOOrderType.COUNTERPARTY5,\n },\n {\n label: t(\"orderEntry.bbo.queue1\"),\n value: BBOOrderType.QUEUE1,\n },\n {\n label: t(\"orderEntry.bbo.queue5\"),\n value: BBOOrderType.QUEUE5,\n },\n ],\n [],\n );\n\n return (\n <Select.options\n testid=\"oui-testid-orderEntry-bbo-orderType-button\"\n currentValue={props.value}\n value={props.value}\n options={options}\n onValueChange={props.onChange}\n contentProps={{\n className: cn(\n \"oui-orderEntry-bboOrderTypeSelect-content\",\n \"oui-bg-base-8 oui-w-full\",\n ),\n style: props.contentStyle,\n }}\n size={\"sm\"}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-bboOrderTypeSelect-btn\",\n \"oui-border-none oui-bg-transparent\",\n ),\n }}\n valueFormatter={(value, option) => {\n const item = options.find((item) => item.value === value);\n\n return (\n <Box>\n <Text size=\"sm\">{item?.label}</Text>\n </Box>\n );\n }}\n />\n );\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, cn, modal, Text } from \"@orderly.network/ui\";\nimport { OrderEntryScriptReturn } from \"../../../orderEntry.script\";\nimport { BBOStatus } from \"../../../utils\";\n\ntype LimitPriceSuffixProps = {\n quote: string;\n bbo: Pick<\n OrderEntryScriptReturn,\n \"bboStatus\" | \"bboType\" | \"onBBOChange\" | \"toggleBBO\"\n >;\n fillMiddleValue: OrderEntryScriptReturn[\"fillMiddleValue\"];\n};\n\nexport const LimitPriceSuffix = (props: LimitPriceSuffixProps) => {\n const { quote, bbo, fillMiddleValue } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"end\"\n className={cn(\"oui-orderEntry-limitPrice-suffix\", \"oui-text-2xs\")}\n >\n {quote}\n <Flex justify={\"end\"} itemAlign=\"center\" gap={2}>\n <Flex\n px={3}\n height={20}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"base\"\n className={cn(\n \"oui-orderEntry-bboToggle\",\n \"oui-mt-[2px] oui-cursor-pointer oui-select-none oui-border\",\n bbo.bboStatus === BBOStatus.ON\n ? \"oui-border-primary\"\n : \"oui-border-line-12\",\n bbo.bboStatus === BBOStatus.DISABLED && \"oui-cursor-not-allowed\",\n )}\n onClick={() => {\n if (bbo.bboStatus === BBOStatus.DISABLED) {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"xs\",\n content: (\n <Text intensity={54}>\n {t(\"orderEntry.bbo.disabled.tips\")}\n </Text>\n ),\n });\n } else {\n bbo.toggleBBO();\n }\n }}\n >\n <Text\n className={cn(\n \"oui-orderEntry-bboToggle-label\",\n bbo.bboStatus === BBOStatus.ON && \"oui-text-primary\",\n bbo.bboStatus === BBOStatus.OFF && \"oui-text-base-contrast-54\",\n bbo.bboStatus === BBOStatus.DISABLED &&\n \"oui-text-base-contrast-20\",\n )}\n >\n {t(\"orderEntry.bbo\")}\n </Text>\n </Flex>\n <Text\n className={cn(\n \"oui-orderEntry-midPrice-btn\",\n \"oui-select-none\",\n \"oui-cursor-pointer oui-text-primary\",\n )}\n onClick={fillMiddleValue}\n >\n Mid\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { cn, inputFormatter } from \"@orderly.network/ui\";\nimport { OrderEntryScriptReturn } from \"../../../orderEntry.script\";\nimport { InputType } from \"../../../types\";\nimport { BBOStatus } from \"../../../utils\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { BBOOrderTypeSelect } from \"./bboOrderTypeSelect\";\nimport { LimitPriceSuffix } from \"./limitPriceSuffix\";\n\nexport type PriceInputProps = {\n order_type: OrderType;\n order_price?: string;\n bbo: Pick<\n OrderEntryScriptReturn,\n \"bboStatus\" | \"bboType\" | \"onBBOChange\" | \"toggleBBO\"\n >;\n priceInputContainerWidth?: number;\n fillMiddleValue: OrderEntryScriptReturn[\"fillMiddleValue\"];\n};\n\n// TODO: memo component\nexport const PriceInput: FC<PriceInputProps> = (props) => {\n const { bbo } = props;\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n priceInputRef,\n priceInputContainerRef,\n } = useOrderEntryContext();\n\n const { quote, quote_dp } = symbolInfo;\n\n const readOnly = bbo.bboStatus === BBOStatus.ON;\n\n const suffix =\n props.order_type === OrderType.LIMIT ? (\n <LimitPriceSuffix\n quote={quote}\n bbo={bbo}\n fillMiddleValue={props.fillMiddleValue}\n />\n ) : (\n quote\n );\n\n return (\n <div\n ref={priceInputContainerRef}\n className=\"oui-orderEntry-priceInput-container oui-group oui-relative oui-w-full\"\n >\n <CustomInput\n id=\"order_price_input\"\n name=\"order_price_input\"\n label={t(\"common.price\")}\n suffix={suffix}\n value={props.order_price}\n className=\"oui-orderEntry-priceInput\"\n onChange={(e) => {\n setOrderValue(\"order_price\", e);\n }}\n error={getErrorMsg(\"order_price\")}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.PRICE)}\n onBlur={onBlur(InputType.PRICE)}\n readonly={readOnly}\n ref={priceInputRef}\n classNames={{\n root: cn(readOnly && \"focus-within:oui-outline-transparent \"),\n input: cn(readOnly && \"oui-cursor-auto\"),\n }}\n />\n {bbo.bboStatus === BBOStatus.ON && (\n <div\n className={cn(\n \"oui-orderEntry-bboSelect\",\n \"oui-absolute oui-bottom-1 oui-left-0\",\n )}\n >\n <BBOOrderTypeSelect\n value={bbo.bboType}\n onChange={bbo.onBBOChange}\n contentStyle={{\n width: props.priceInputContainerWidth,\n }}\n />\n </div>\n )}\n </div>\n );\n};\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype QuantityInputProps = {\n order_quantity?: string;\n};\n\nexport const QuantityInput: FC<QuantityInputProps> = memo((props) => {\n const { t } = useTranslation();\n\n const { symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const { base, base_dp } = symbolInfo;\n\n return (\n <CustomInput\n id=\"order_quantity_input\"\n name=\"order_quantity_input\"\n label={t(\"common.qty\")}\n suffix={base}\n error={getErrorMsg(\"order_quantity\")}\n value={props.order_quantity}\n onChange={(e) => {\n setOrderValue(\"order_quantity\", e);\n }}\n formatters={[inputFormatter.dpFormatter(base_dp)]}\n onFocus={onFocus(InputType.QUANTITY)}\n onBlur={onBlur(InputType.QUANTITY)}\n className=\"oui-orderEntry-quantityInput !oui-rounded-r\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n />\n );\n});\n\nQuantityInput.displayName = \"QuantityInput\";\n","import { FC, memo, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Select } from \"@orderly.network/ui\";\n\nexport enum OrderTotalType {\n OrderSize = \"orderSize\",\n InitialMargin = \"initialMargin\",\n}\n\ntype TotalTypeSelectProps = {\n value: OrderTotalType;\n onChange: (value: OrderTotalType) => void;\n};\n\nexport const TotalTypeSelect: FC<TotalTypeSelectProps> = memo((props) => {\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n {\n label: t(\"orderEntry.orderSize\"),\n value: OrderTotalType.OrderSize,\n },\n {\n label: t(\"orderEntry.initialMargin\"),\n value: OrderTotalType.InitialMargin,\n },\n ];\n }, [t]);\n\n return (\n <Select.options\n size={\"xs\"}\n value={props.value}\n valueFormatter={(value, option) => {\n const item = options.find((o) => o.value === value);\n return item?.label + \"≈\";\n }}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-totalTypeSelect-btn\",\n \"oui-w-auto oui-border-none oui-bg-transparent oui-shadow-none\",\n \"oui-absolute oui-left-0 oui-top-[5px] oui-text-2xs oui-text-base-contrast-36\",\n ),\n }}\n onValueChange={props.onChange}\n options={options}\n />\n );\n});\n\nTotalTypeSelect.displayName = \"TotalTypeSelect\";\n","import { FC, memo, useEffect, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { OrderTotalType, TotalTypeSelect } from \"./totalTypeSelect\";\n\ntype TotalInputProps = {\n total?: string;\n};\n\n/**\n * order size = order size (notional) = quantity * price\n * Initial margin = order size / leverage = quantity * price / leverage\n * Order size = Initial margin * leverage = quantity * price\n */\nexport const TotalInput: FC<TotalInputProps> = memo((props) => {\n const { t } = useTranslation();\n const { total } = props;\n\n const [margin, setMargin] = useState(\"\");\n\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n leverage = 1,\n currentFocusInput,\n } = useOrderEntryContext();\n\n const { quote } = symbolInfo;\n\n const [totalType, setTotalType] = useLocalStorage<OrderTotalType>(\n \"orderly_order_total_type\",\n OrderTotalType.OrderSize,\n );\n\n useEffect(() => {\n if (total) {\n if (currentFocusInput !== InputType.MARGIN) {\n const margin = new Decimal(total).div(leverage).todp(2).toString();\n setMargin(margin);\n }\n } else {\n setMargin(\"\");\n }\n }, [total, leverage, currentFocusInput]);\n\n const onMarginChange = (val: string) => {\n const total = val ? new Decimal(val).mul(leverage).toString() : \"\";\n setOrderValue(\"total\", total);\n setMargin(val);\n };\n\n const prefix = <TotalTypeSelect value={totalType} onChange={setTotalType} />;\n\n if (totalType === OrderTotalType.InitialMargin) {\n return (\n <CustomInput\n id=\"order_margin_input\"\n name=\"order_margin_input\"\n label={`${t(\"orderEntry.initialMargin\")}≈`}\n prefix={prefix}\n suffix={quote}\n error={getErrorMsg(\"total\") ? \"initial margin error\" : \"\"}\n value={margin}\n onChange={onMarginChange}\n // national precision is 2\n formatters={[inputFormatter.dpFormatter(2)]}\n onFocus={onFocus(InputType.MARGIN)}\n onBlur={onBlur(InputType.MARGIN)}\n className=\"oui-orderEntry-marginInput !oui-rounded-l\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n />\n );\n }\n\n return (\n <CustomInput\n id=\"order_total_input\"\n name=\"order_total_input\"\n label={`${t(\"orderEntry.orderSize\")}≈`}\n prefix={prefix}\n suffix={quote}\n error={getErrorMsg(\"total\")}\n value={props.total}\n onChange={(val) => {\n setOrderValue(\"total\", val);\n }}\n className=\"oui-orderEntry-totalInput !oui-rounded-l\"\n classNames={{\n suffix: \"oui-justify-end\",\n }}\n // national precision is 2\n formatters={[inputFormatter.dpFormatter(2)]}\n onFocus={onFocus(InputType.TOTAL)}\n onBlur={onBlur(InputType.TOTAL)}\n />\n );\n});\n\nTotalInput.displayName = \"TotalInput\";\n","import { FC, memo } from \"react\";\nimport { Grid } from \"@orderly.network/ui\";\nimport { QuantityInput } from \"./quantityInput\";\nimport { TotalInput } from \"./totalInput\";\n\ntype QtyAndTotalInputProps = {\n order_quantity?: string;\n total?: string;\n};\n\nexport const QtyAndTotalInput: FC<QtyAndTotalInputProps> = memo((props) => {\n return (\n <Grid\n cols={2}\n className=\"oui-orderEntry-qtyAndTotal oui-group oui-space-x-1\"\n >\n <QuantityInput order_quantity={props.order_quantity} />\n <TotalInput total={props.total} />\n </Grid>\n );\n});\n\nQtyAndTotalInput.displayName = \"QtyAndTotalInput\";\n","import { FC, memo, useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { DistributionType } from \"@orderly.network/types\";\nimport { Box, Checkbox, cn, Flex, modal, Text } from \"@orderly.network/ui\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\nexport type QuantityDistributionInputProps = {\n distribution_type?: DistributionType;\n className?: string;\n};\n\nexport const QuantityDistributionInput: FC<QuantityDistributionInputProps> =\n memo((props) => {\n const { t } = useTranslation();\n const { setOrderValue } = useOrderEntryContext();\n\n const showHint = () => {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"sm\",\n content: <QuantityDistributionHint value={props.distribution_type} />,\n // classNames: {\n // content: \"oui-bg-base-6\",\n // },\n });\n };\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n justify=\"center\"\n p={2}\n r=\"base\"\n // gapY={1}\n width=\"100%\"\n intensity={600}\n className={cn(\n \"oui-orderEntry-quantityDistribution\",\n \"oui-t-rounded oui-text-base-contrast-36\",\n \"oui-border oui-border-solid oui-border-line\",\n props.className,\n )}\n >\n <Text\n size=\"2xs\"\n className=\"oui-quantityDistribution-hint oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n onClick={showHint}\n >\n {t(\"orderEntry.quantityDistribution\")}\n </Text>\n <QuantityDistribution\n value={props.distribution_type}\n onValueChange={(value) => {\n setOrderValue(\"distribution_type\", value);\n }}\n />\n </Flex>\n );\n });\n\ntype QuantityDistributionHintProps = {\n value?: DistributionType;\n};\n\nconst QuantityDistributionHint: FC<QuantityDistributionHintProps> = (props) => {\n const { t } = useTranslation();\n const [type, setType] = useState(DistributionType.FLAT);\n\n useEffect(() => {\n setType(\n [\n DistributionType.FLAT,\n DistributionType.ASCENDING,\n DistributionType.DESCENDING,\n ].includes(props.value!)\n ? props.value!\n : DistributionType.FLAT,\n );\n }, [props.value]);\n\n const content = useMemo(() => {\n return [\n {\n type: DistributionType.FLAT,\n title: t(\"orderEntry.distributionType.flat\"),\n description: t(\"orderEntry.distributionType.flat.description\"),\n formula: `${t(\"orderEntry.skew\")} = 1`,\n quantity: <FlatQuantity />,\n },\n {\n type: DistributionType.ASCENDING,\n title: t(\"orderEntry.distributionType.ascending\"),\n description: t(\"orderEntry.distributionType.ascending.description\"),\n formula: `${t(\"orderEntry.skew\")} > 1`,\n quantity: <AscendingQuantity />,\n },\n {\n type: DistributionType.DESCENDING,\n title: t(\"orderEntry.distributionType.descending\"),\n description: t(\"orderEntry.distributionType.descending.description\"),\n formula: `0 < ${t(\"orderEntry.skew\")} < 1`,\n quantity: <DescendingQuantity />,\n },\n ];\n }, []);\n\n const currentContent = useMemo(() => {\n return content.find((item) => item.type === type);\n }, [content, type]);\n\n return (\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-54\">\n <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n <Text intensity={80}>\n {t(\"orderEntry.quantityDistribution.description\")}\n </Text>\n <Text>{t(\"orderEntry.quantityDistribution.formula\")}</Text>\n </Flex>\n <Flex intensity={600} p={1} r=\"base\" mt={3} itemAlign=\"start\">\n <Flex direction=\"column\" itemAlign=\"start\">\n {content.map((item) => (\n <Box\n key={item.title}\n intensity={type === item.type ? 500 : 600}\n width={78}\n p={2}\n className=\"oui-cursor-pointer oui-rounded-l\"\n onClick={() => {\n setType(item.type);\n }}\n >\n <Text>{item.title}</Text>\n </Box>\n ))}\n </Flex>\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n gapY={1}\n p={2}\n intensity={500}\n width=\"100%\"\n className={cn(\n \"oui-rounded-r\",\n type === DistributionType.FLAT && \"oui-rounded-bl\",\n type === DistributionType.ASCENDING && \"oui-rounded-l\",\n type === DistributionType.DESCENDING && \"oui-rounded-tl\",\n )}\n >\n <div>{currentContent?.formula}</div>\n <Text>{currentContent?.description}</Text>\n <Flex width=\"100%\" justify=\"center\">\n {currentContent?.quantity}\n </Flex>\n <Flex width=\"100%\" gapX={1} justify=\"center\">\n <Text className=\"oui-text-base-1\">{t(\"common.price\")}</Text>\n <PriceChart />\n </Flex>\n </Flex>\n </Flex>\n </div>\n );\n};\n\ntype QuantityDistributionProps = {\n value?: DistributionType;\n onValueChange: (value: DistributionType) => void;\n};\n\nconst QuantityDistribution: FC<QuantityDistributionProps> = (props) => {\n const { value, onValueChange } = props;\n const { t } = useTranslation();\n\n const onChange = (value: DistributionType) => (checked: boolean) => {\n onValueChange(value);\n };\n\n const distributionTypeMap = useMemo(() => {\n return {\n [DistributionType.FLAT]: t(\"orderEntry.distributionType.flat\"),\n [DistributionType.ASCENDING]: t(\n \"orderEntry.distributionType.ascending.abbr\",\n ),\n [DistributionType.DESCENDING]: t(\n \"orderEntry.distributionType.descending.abbr\",\n ),\n [DistributionType.CUSTOM]: t(\"orderEntry.distributionType.custom\"),\n };\n }, [t]);\n\n return (\n <Flex\n className={cn(\n \"oui-orderEntry-quantityDistribution-options\",\n \"oui-gap-x-[6px] lg:oui-gap-x-2\",\n )}\n wrap=\"wrap\"\n >\n {Object.values(DistributionType).map((type) => {\n return (\n <Flex itemAlign={\"center\"} key={type}>\n <Checkbox\n id={`distribution-type-${type}`}\n color={\"white\"}\n variant={\"radio\"}\n className=\"oui-quantityDistribution-option-radio\"\n checked={value === type}\n onCheckedChange={onChange(type)}\n />\n <label\n htmlFor={`distribution-type-${type}`}\n className={cn(\n \"oui-quantityDistribution-option-label\",\n \"oui-text-2xs\",\n \"oui-ml-1\",\n \"oui-whitespace-nowrap oui-break-normal\",\n )}\n >\n {distributionTypeMap[type]}\n </label>\n </Flex>\n );\n })}\n </Flex>\n );\n};\n\nconst FlatQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"18\"\n y=\"18\"\n width=\"181\"\n height=\"4\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"15\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"62\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"109\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"156\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"203\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n </svg>\n );\n};\n\nconst AscendingQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"18\"\n y=\"18\"\n width=\"181\"\n height=\"4\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"15\"\n cy=\"20\"\n r=\"4.28571\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.42857\"\n />\n <circle\n cx=\"62\"\n cy=\"20\"\n r=\"5.14286\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.71429\"\n />\n <circle\n cx=\"109\"\n cy=\"20\"\n r=\"6\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"156\"\n cy=\"20\"\n r=\"6.85714\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.28571\"\n />\n <circle\n cx=\"203\"\n cy=\"20\"\n r=\"7.71429\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.57143\"\n />\n </svg>\n );\n};\n\nconst DescendingQuantity = () => {\n return (\n <svg\n width=\"218\"\n height=\"40\"\n viewBox=\"0 0 218 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n width=\"181\"\n height=\"4\"\n transform=\"matrix(-1 0 0 1 200 18)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n />\n <circle\n cx=\"5\"\n cy=\"5\"\n r=\"4.28571\"\n transform=\"matrix(-1 0 0 1 208 15)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.42857\"\n />\n <circle\n cx=\"6\"\n cy=\"6\"\n r=\"5.14286\"\n transform=\"matrix(-1 0 0 1 162 14)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"1.71429\"\n />\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n transform=\"matrix(-1 0 0 1 116 13)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2\"\n />\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.85714\"\n transform=\"matrix(-1 0 0 1 70 12)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.28571\"\n />\n <circle\n cx=\"9\"\n cy=\"9\"\n r=\"7.71429\"\n transform=\"matrix(-1 0 0 1 24 11)\"\n fill=\"rgb(var(--oui-color-base-2))\"\n stroke=\"rgb(var(--oui-color-base-5))\"\n strokeWidth=\"2.57143\"\n />\n </svg>\n );\n};\n\nconst PriceChart = () => {\n return (\n <svg\n width=\"176\"\n height=\"8\"\n viewBox=\"0 0 176 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M175.354 4.35355C175.549 4.15829 175.549 3.84171 175.354 3.64645L172.172 0.464466C171.976 0.269204 171.66 0.269204 171.464 0.464466C171.269 0.659728 171.269 0.976311 171.464 1.17157L174.293 4L171.464 6.82843C171.269 7.02369 171.269 7.34027 171.464 7.53553C171.66 7.7308 171.976 7.7308 172.172 7.53553L175.354 4.35355ZM0 4V4.5H175V4V3.5H0V4Z\"\n fill=\"rgb(var(--oui-color-base-1))\"\n />\n </svg>\n );\n};\n","import { memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype ScaledPriceInputProps = {\n start_price?: string;\n end_price?: string;\n};\n\nexport const ScaledPriceInput = memo((props: ScaledPriceInputProps) => {\n const { t } = useTranslation();\n\n const { symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const { quote, quote_dp } = symbolInfo;\n\n return (\n <>\n <CustomInput\n label={t(\"orderEntry.startPrice\")}\n suffix={quote}\n id=\"order_start_price_input\"\n className=\"oui-orderEntry-scaledOrder-startPriceInput\"\n value={props.start_price}\n error={getErrorMsg(\"start_price\")}\n onChange={(e) => {\n setOrderValue(\"start_price\", e);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.START_PRICE)}\n onBlur={onBlur(InputType.START_PRICE)}\n classNames={{\n root: \"oui-rounded-t-xl\",\n }}\n />\n <CustomInput\n label={t(\"orderEntry.endPrice\")}\n suffix={quote}\n id=\"order_end_price_input\"\n className=\"oui-orderEntry-scaledOrder-endPriceInput\"\n value={props.end_price}\n error={getErrorMsg(\"end_price\")}\n onChange={(val) => {\n setOrderValue(\"end_price\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.END_PRICE)}\n onBlur={onBlur(InputType.END_PRICE)}\n />\n </>\n );\n});\n\nScaledPriceInput.displayName = \"ScaledPriceInput\";\n","import { FC, useMemo } from \"react\";\nimport { Select, Text, cn } from \"@orderly.network/ui\";\n\nexport type QuantityUnitProps = {\n base: string;\n quote: string;\n value: string;\n onValueChange: (value: string) => void;\n};\n\nconst valueRenderer = (value: string) => {\n return (\n <Text size=\"2xs\" intensity={36}>\n {value}\n </Text>\n );\n};\n\nexport const ScaledQuantityUnit: FC<QuantityUnitProps> = (props) => {\n const { base, quote } = props;\n\n const options = useMemo(() => {\n return [{ name: quote }, { name: base }];\n }, [base, quote]);\n\n return (\n <Select.tokens\n variant=\"text\"\n size=\"xs\"\n iconSize=\"2xs\"\n tokens={options}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-scaledQuantityUnit-btn\",\n \"oui-absolute oui-right-0 oui-top-1\",\n \"oui-w-full oui-justify-end\",\n \"oui-shadow-none\",\n ),\n }}\n value={props.value}\n onValueChange={props.onValueChange}\n valueFormatter={valueRenderer}\n contentProps={{\n align: \"end\",\n alignOffset: -1,\n sideOffset: -4,\n className: \"oui-border oui-border-line-6\",\n }}\n />\n );\n};\n","import { memo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { ScaledQuantityUnit } from \"./scaledQuantityUnit\";\n\ntype ScaledQuantityInputProps = {\n order_quantity?: string;\n total?: string;\n};\n\nexport const ScaledQuantityInput = memo((props: ScaledQuantityInputProps) => {\n const { t } = useTranslation();\n const { errors, symbolInfo, onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n const [quantityUnit, setQuantityUnit] = useLocalStorage<\"quote\" | \"base\">(\n \"orderly_order_quantity_unit\",\n \"quote\",\n );\n\n const { base, quote, base_dp, quote_dp } = symbolInfo;\n\n const isBase = quantityUnit === \"base\";\n const unit = isBase ? base : quote;\n\n const suffix = (\n <ScaledQuantityUnit\n base={base}\n quote={quote}\n value={unit}\n onValueChange={(value) => {\n setQuantityUnit(value === base ? \"base\" : \"quote\");\n }}\n />\n );\n\n if (isBase) {\n return (\n <CustomInput\n label={t(\"common.qty\")}\n suffix={suffix}\n id=\"order_quantity_input\"\n name=\"order_quantity_input\"\n className=\"oui-orderEntry-scaledOrder-quantityInput !oui-rounded-r\"\n value={props.order_quantity}\n error={getErrorMsg(\n \"order_quantity\",\n `${errors?.order_quantity?.value} ${base}`,\n )}\n onChange={(val) => {\n setOrderValue(\"order_quantity\", val);\n }}\n formatters={[inputFormatter.dpFormatter(base_dp)]}\n onFocus={onFocus(InputType.QUANTITY)}\n onBlur={onBlur(InputType.QUANTITY)}\n />\n );\n }\n\n return (\n <CustomInput\n label={t(\"common.qty\")}\n suffix={suffix}\n id=\"order_total_input\"\n name=\"order_total_input\"\n className=\"oui-orderEntry-scaledOrder-totalInput !oui-rounded-r\"\n value={props.total}\n error={getErrorMsg(\"order_quantity\", `${errors?.total?.value} ${quote}`)}\n onChange={(val) => {\n setOrderValue(\"total\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.TOTAL)}\n onBlur={onBlur(InputType.TOTAL)}\n />\n );\n});\n","import { memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype SkewInputProps = {\n skew?: string;\n};\n\nexport const SkewInput = memo((props: SkewInputProps) => {\n const { t } = useTranslation();\n\n const { onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n return (\n <CustomInput\n id=\"order_skew_input\"\n label={t(\"orderEntry.skew\")}\n className=\"oui-orderEntry-scaledOrder-skewInput\"\n value={props.skew}\n error={getErrorMsg(\"skew\")}\n onChange={(val) => {\n setOrderValue(\"skew\", val);\n }}\n onFocus={onFocus(InputType.SKEW)}\n onBlur={onBlur(InputType.SKEW)}\n overrideFormatters={[\n inputFormatter.rangeFormatter({ min: 0, max: 100, dp: 2 }),\n inputFormatter.dpFormatter(2),\n ]}\n classNames={{\n root: \"oui-rounded-b-xl\",\n }}\n />\n );\n});\n","import { memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype TotalOrdersInputProps = {\n total_orders?: string;\n};\n\nexport const TotalOrdersInput = memo((props: TotalOrdersInputProps) => {\n const { t } = useTranslation();\n const { onFocus, onBlur, getErrorMsg, setOrderValue } =\n useOrderEntryContext();\n\n return (\n <CustomInput\n label={t(\"orderEntry.totalOrders\")}\n placeholder=\"2-20\"\n id=\"order_total_orders_input\"\n className={\"oui-orderEntry-scaledOrder-totalOrdersInput !oui-rounded-l\"}\n value={props.total_orders}\n error={getErrorMsg(\"total_orders\")}\n onChange={(val) => {\n setOrderValue(\"total_orders\", val);\n }}\n overrideFormatters={[\n // inputFormatter.rangeFormatter({ min: 2, max: 20 }),\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(0),\n ]}\n onFocus={onFocus(InputType.TOTAL_ORDERS)}\n onBlur={onBlur(InputType.TOTAL_ORDERS)}\n />\n );\n});\n","import { DistributionType, OrderlyOrder } from \"@orderly.network/types\";\nimport { cn, Grid } from \"@orderly.network/ui\";\nimport { QuantityDistributionInput } from \"./quantityDistributionInput\";\nimport { ScaledPriceInput } from \"./scaledPriceInput\";\nimport { ScaledQuantityInput } from \"./scaledQuantityInput\";\nimport { SkewInput } from \"./skewInput\";\nimport { TotalOrdersInput } from \"./totalOrdersInput\";\n\ntype ScaledOrderInputProps = {\n values: Partial<OrderlyOrder>;\n};\n\nexport const ScaledOrderInput = (props: ScaledOrderInputProps) => {\n const { values } = props;\n\n const showSkewInput = values.distribution_type === DistributionType.CUSTOM;\n\n return (\n <div className=\"oui-orderEntry-scaledOrderInput oui-space-y-1\">\n <ScaledPriceInput\n start_price={values.start_price}\n end_price={values.end_price}\n />\n\n <Grid\n cols={2}\n className=\"oui-scaledOrderInput-qtyAndOrders oui-group oui-space-x-1\"\n >\n <ScaledQuantityInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n <TotalOrdersInput total_orders={values.total_orders} />\n </Grid>\n\n <QuantityDistributionInput\n distribution_type={values.distribution_type}\n className={cn(!showSkewInput && \"oui-rounded-b-xl\")}\n />\n\n {showSkewInput && <SkewInput skew={values.skew} />}\n </div>\n );\n};\n","import { FC, memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype TriggerPriceInputProps = {\n trigger_price?: string;\n};\n\nexport const TriggerPriceInput: FC<TriggerPriceInputProps> = memo((props) => {\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n triggerPriceInputRef,\n } = useOrderEntryContext();\n\n return (\n <div className=\"oui-orderEntry-triggerPriceInput-container oui-group\">\n <CustomInput\n ref={triggerPriceInputRef}\n id=\"order_trigger_price_input\"\n name=\"order_trigger_price_input\"\n label={t(\"common.trigger\")}\n suffix={symbolInfo.quote}\n value={props.trigger_price}\n className=\"oui-orderEntry-triggerPriceInput\"\n onChange={(e) => {\n setOrderValue(\"trigger_price\", e);\n }}\n error={getErrorMsg(\"trigger_price\")}\n formatters={[inputFormatter.dpFormatter(symbolInfo.quote_dp)]}\n onFocus={onFocus(InputType.TRIGGER_PRICE)}\n onBlur={onBlur(InputType.TRIGGER_PRICE)}\n />\n </div>\n );\n});\n\nTriggerPriceInput.displayName = \"TriggerPriceInput\";\n","import { memo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\ntype ActivePriceInputProps = {\n activated_price?: string;\n};\n\nexport const ActivePriceInput = memo<ActivePriceInputProps>((props) => {\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n activatedPriceInputRef,\n } = useOrderEntryContext();\n\n return (\n <div className=\"oui-orderEntry-activatedPriceInput-container oui-group\">\n <CustomInput\n ref={activatedPriceInputRef}\n id=\"order_activated_price_input\"\n name=\"order_activated_price_input\"\n label={t(\"common.triggerPrice\")}\n placeholder={`0 (${t(\"common.optional\")})`}\n suffix={symbolInfo.quote}\n error={getErrorMsg(\"activated_price\")}\n value={props.activated_price}\n className=\"oui-orderEntry-activatedPriceInput\"\n onChange={(val: string) => {\n setOrderValue(\"activated_price\", val);\n }}\n formatters={[inputFormatter.dpFormatter(symbolInfo.quote_dp)]}\n onFocus={onFocus(InputType.ACTIVATED_PRICE)}\n onBlur={onBlur(InputType.ACTIVATED_PRICE)}\n />\n </div>\n );\n});\n\nActivePriceInput.displayName = \"ActivePriceInput\";\n","import { FC, memo } from \"react\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\n\nconst percentages = [1, 2, 3, 5];\n\ntype CallbackRatePercentagesProps = {\n className?: string;\n callback_rate?: string;\n onClick?: (value: string) => void;\n};\n\nexport const CallbackRatePercentages: FC<CallbackRatePercentagesProps> = memo(\n (props) => {\n const { setOrderValue } = useOrderEntryContext();\n\n return (\n <Flex gapX={2} className={props.className}>\n {percentages.map((item) => {\n const value = item.toString();\n const isActive = props.callback_rate === value;\n\n return (\n <Flex\n key={item}\n justify=\"center\"\n itemAlign=\"center\"\n width={46}\n height={18}\n className={cn(\n \"oui-cursor-pointer oui-select-none\",\n \"oui-rounded oui-border\",\n isActive ? \"oui-border-base-contrast-36\" : \"oui-border-line-12\",\n )}\n onClick={() => {\n setOrderValue(\"callback_rate\", value);\n props.onClick?.(value);\n }}\n >\n <Text size=\"2xs\" intensity={isActive ? 80 : 36} weight=\"semibold\">\n {item}%\n </Text>\n </Flex>\n );\n })}\n </Flex>\n );\n },\n);\n\nCallbackRatePercentages.displayName = \"CallbackRatePercentages\";\n","import { FC, memo, useMemo } from \"react\";\nimport { TrailingCallbackType } from \"@orderly.network/types\";\nimport { Select, cn } from \"@orderly.network/ui\";\n\ntype TrailingCallbackSelectProps = {\n quote: string;\n value: string;\n onValueChange: (value: TrailingCallbackType) => void;\n};\n\nexport const TrailingCallbackSelect: FC<TrailingCallbackSelectProps> = memo(\n (props) => {\n const { quote } = props;\n\n const options = useMemo(() => {\n return [\n { label: quote, value: TrailingCallbackType.VALUE },\n { label: \"%\", value: TrailingCallbackType.RATE },\n ];\n }, [quote]);\n\n return (\n <Select.options\n variant=\"text\"\n size=\"xs\"\n options={options}\n classNames={{\n trigger: cn(\n \"oui-orderEntry-trailingCallbackSelect-btn\",\n \"oui-absolute oui-right-0 oui-top-1\",\n \"oui-w-[124px] oui-justify-end\",\n \"oui-text-base-contrast-36\",\n ),\n }}\n value={props.value}\n onValueChange={props.onValueChange}\n contentProps={{\n align: \"end\",\n alignOffset: -1,\n sideOffset: -4,\n className:\n \"oui-orderEntry-trailingCallbackSelect-content oui-border oui-border-line-6\",\n }}\n />\n );\n },\n);\n\nTrailingCallbackSelect.displayName = \"trailingCallbackSelect\";\n","import { FC, memo, useCallback, useRef } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { TrailingCallbackType } from \"@orderly.network/types\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { InputType } from \"../../../types\";\nimport { CustomInput } from \"../../customInput\";\nimport { useOrderEntryContext } from \"../../orderEntryContext\";\nimport { CallbackRatePercentages } from \"./callbackRatePercentages\";\nimport { TrailingCallbackSelect } from \"./trailingCallbackSelect\";\n\ntype TrailingCallbackInputProps = {\n callback_value?: string;\n callback_rate?: string;\n};\n\nexport const TrailingCallbackInput: FC<TrailingCallbackInputProps> = memo(\n (props) => {\n const { callback_value, callback_rate } = props;\n const { t } = useTranslation();\n const {\n symbolInfo,\n onFocus,\n onBlur,\n getErrorMsg,\n setOrderValue,\n setOrderValues,\n } = useOrderEntryContext();\n const { quote, quote_dp } = symbolInfo;\n // const [open, setOpen] = useState(false);\n\n const lastCallbackValueRef = useRef<string>();\n const lastCallbackRateRef = useRef<string>();\n\n const [callbackType, setCallbackType] = useLocalStorage(\n \"orderly_order_trailing_callback_type\",\n TrailingCallbackType.VALUE,\n );\n\n const onCallbackTypeChange = useCallback(\n (type: TrailingCallbackType) => {\n setCallbackType(type);\n // when switch to callback rate, save the last callback value\n if (type === TrailingCallbackType.RATE) {\n lastCallbackValueRef.current = callback_value;\n setOrderValues({\n callback_value: \"\",\n callback_rate: lastCallbackRateRef.current,\n });\n // when switch to callback value, save the last callback rate\n } else {\n lastCallbackRateRef.current = callback_rate;\n setOrderValues({\n callback_value: lastCallbackValueRef.current,\n callback_rate: \"\",\n });\n }\n },\n [callback_value, callback_rate],\n );\n\n const suffix = (\n <TrailingCallbackSelect\n quote={quote}\n value={callbackType}\n onValueChange={onCallbackTypeChange}\n />\n );\n\n // don't need to convert trailing rate to estimated value\n // const estimatedValue = useMemo(() => {\n // if (callbackType === TrailingCallbackType.RATE) {\n // return callback_rate\n // }\n // }, [callback_rate, callbackType]);\n\n // const tooltipContent = estimatedValue\n // ? `≈ ${estimatedValue} ${quote}`\n // : undefined;\n\n // const openTooltip = useCallback(() => {\n // setOpen(true);\n // }, []);\n\n // const closeTooltip = useCallback(() => {\n // setOpen(false);\n // }, []);\n\n if (callbackType === TrailingCallbackType.RATE) {\n return (\n // <Tooltip\n // content={tooltipContent}\n // open={open && !!tooltipContent}\n // sideOffset={-25}\n // className=\"!oui-p-3\"\n // >\n <div className=\"oui-orderEntry-trailingCallback oui-relative\">\n <CustomInput\n id=\"order_callback_rate_input\"\n name=\"order_callback_rate_input\"\n label={t(\"orderEntry.trailingRate\")}\n suffix={suffix}\n error={getErrorMsg(\"callback_rate\")}\n value={callback_rate}\n className=\"oui-trailingCallback-rateInput\"\n onChange={(val: string) => {\n setOrderValue(\"callback_rate\", val);\n }}\n formatters={[inputFormatter.dpFormatter(1)]}\n onFocus={(e) => {\n onFocus(InputType.CALLBACK_RATE)(e);\n // openTooltip();\n }}\n onBlur={(e) => {\n onBlur(InputType.CALLBACK_RATE)(e);\n // closeTooltip();\n }}\n classNames={{\n root: \"oui-h-[68px]\",\n input: \"oui-mb-5\",\n prefix: \"!oui-top-1\",\n }}\n />\n <CallbackRatePercentages\n className=\"oui-trailingCallback-percentages oui-absolute oui-bottom-1 oui-left-2\"\n callback_rate={callback_rate}\n // onClick={openTooltip}\n />\n </div>\n // </Tooltip>\n );\n }\n\n return (\n <CustomInput\n id=\"order_callback_value_input\"\n name=\"order_callback_value_input\"\n label={t(\"orderEntry.trailingValue\")}\n suffix={suffix}\n error={getErrorMsg(\"callback_value\")}\n value={callback_value}\n className=\"oui-trailingCallback-valueInput\"\n onChange={(val: string) => {\n setOrderValue(\"callback_value\", val);\n }}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\n onFocus={onFocus(InputType.CALLBACK_VALUE)}\n onBlur={onBlur(InputType.CALLBACK_VALUE)}\n classNames={{\n input: \"!oui-mb-[6px]\",\n prefix: \"!oui-top-1\",\n }}\n />\n );\n },\n);\n\nTrailingCallbackInput.displayName = \"TrailingCallbackInput\";\n","import { OrderlyOrder } from \"@orderly.network/types\";\nimport { QtyAndTotalInput } from \"../qtyAndTotal/qtyAndTotalInput\";\nimport { ActivePriceInput } from \"./activePriceInput\";\nimport { TrailingCallbackInput } from \"./trailingCallbackInput\";\n\ntype TrailingStopInputProps = {\n values: Partial<OrderlyOrder>;\n};\n\nexport const TrailingStopInput = (props: TrailingStopInputProps) => {\n const { values } = props;\n\n return (\n <div className=\"oui-orderEntry-trailingStopInput oui-space-y-1\">\n <ActivePriceInput activated_price={values.activated_price} />\n <TrailingCallbackInput\n callback_value={values.callback_value}\n callback_rate={values.callback_rate}\n />\n <QtyAndTotalInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n </div>\n );\n};\n","import { OrderlyOrder, OrderType } from \"@orderly.network/types\";\nimport { PriceInput, PriceInputProps } from \"./limit/priceInput\";\nimport { QtyAndTotalInput } from \"./qtyAndTotal/qtyAndTotalInput\";\nimport { ScaledOrderInput } from \"./scaledOrder\";\nimport { TriggerPriceInput } from \"./stop/triggerPriceInput\";\nimport { TrailingStopInput } from \"./trailingStop\";\n\nexport type OrderInputProps = {\n values: Partial<OrderlyOrder>;\n} & Omit<PriceInputProps, \"order_price\" | \"order_type\">;\n\nexport function OrderInput(props: OrderInputProps) {\n const { values } = props;\n\n const type = values.order_type;\n\n if (type === OrderType.SCALED) {\n return <ScaledOrderInput values={values} />;\n }\n\n if (type === OrderType.TRAILING_STOP) {\n return <TrailingStopInput values={values} />;\n }\n\n const showTriggerPrice =\n type === OrderType.STOP_LIMIT || type === OrderType.STOP_MARKET;\n\n const showPrice = type === OrderType.LIMIT || type === OrderType.STOP_LIMIT;\n\n const triggerPriceInput = showTriggerPrice && (\n <TriggerPriceInput trigger_price={values.trigger_price} />\n );\n\n const priceInput = showPrice && (\n <PriceInput\n order_type={values.order_type!}\n order_price={values.order_price}\n bbo={props.bbo}\n fillMiddleValue={props.fillMiddleValue}\n priceInputContainerWidth={props.priceInputContainerWidth}\n />\n );\n\n return (\n <div className={\"oui-orderEntry-orderInput-container oui-space-y-1\"}>\n {triggerPriceInput}\n {priceInput}\n <QtyAndTotalInput\n order_quantity={values.order_quantity}\n total={values.total}\n />\n </div>\n );\n}\n","import { memo, useEffect, useMemo, useState } from \"react\";\nimport { utils } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { Flex, Slider, textVariants, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputType } from \"../../types\";\nimport { useOrderEntryContext } from \"../orderEntryContext\";\n\ntype QuantitySliderProps = {\n canTrade: boolean;\n side: OrderSide;\n order_quantity?: string;\n maxQty: number;\n};\nconst SLIDER_MIN = 0;\nconst SLIDER_MAX = 100;\n\nexport const QuantitySlider = memo((props: QuantitySliderProps) => {\n const { canTrade, side, order_quantity, maxQty } = props;\n\n const [sliderValue, setSliderValue] = useState<number>(0);\n\n const { setOrderValue, symbolInfo, lastQuantityInputType } =\n useOrderEntryContext();\n\n const { base_dp, base_tick } = symbolInfo;\n\n const { t } = useTranslation();\n\n const color = useMemo(\n () => (canTrade ? (side === OrderSide.BUY ? \"buy\" : \"sell\") : undefined),\n [side, canTrade],\n );\n\n const maxLabel = useMemo(() => {\n return side === OrderSide.BUY\n ? t(\"orderEntry.maxBuy\")\n : t(\"orderEntry.maxSell\");\n }, [side, t]);\n\n const onSliderValueChange = (value: number) => {\n lastQuantityInputType.current = InputType.QUANTITY_SLIDER;\n setSliderValue(value);\n };\n\n const sliderToQuantity = (value: number) => {\n const newQty = new Decimal(value)\n .div(SLIDER_MAX)\n .mul(maxQty)\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n setOrderValue(\"order_quantity\", utils.formatNumber(newQty, base_tick));\n };\n\n const onMax = () => {\n onSliderValueChange(SLIDER_MAX);\n // when previous slider value is max, quantity will not update by useEffect, so must set quantity manually to maxQty\n if (sliderValue === SLIDER_MAX) {\n sliderToQuantity(SLIDER_MAX);\n }\n };\n\n // update quantity when slider value and maxQty changes\n useEffect(() => {\n if (lastQuantityInputType.current === InputType.QUANTITY_SLIDER) {\n sliderToQuantity(sliderValue);\n }\n }, [sliderValue, maxQty]);\n\n useEffect(() => {\n const quantityToSlider = () => {\n if (order_quantity && Number(order_quantity) !== 0 && maxQty !== 0) {\n return new Decimal(Math.min(Number(order_quantity), maxQty))\n .div(maxQty)\n .mul(SLIDER_MAX)\n .todp(2, Decimal.ROUND_DOWN)\n .toNumber();\n }\n return 0;\n };\n\n // update slider value when last quantity input type is not quantity slider\n if (lastQuantityInputType.current !== InputType.QUANTITY_SLIDER) {\n setSliderValue(quantityToSlider());\n }\n }, [order_quantity, maxQty]);\n\n return (\n <div className=\"oui-orderEntry-quantitySlider\">\n <Slider\n disabled={maxQty === 0 || !canTrade}\n value={[sliderValue]}\n color={color}\n markCount={4}\n showTip\n onValueChange={(e) => {\n onSliderValueChange(e[0]);\n }}\n min={SLIDER_MIN}\n max={SLIDER_MAX}\n />\n <Flex\n justify={\"between\"}\n className=\"oui-quantitySlider-footer oui-pt-1 xl:oui-pt-2\"\n >\n <Text.numeral\n size={\"2xs\"}\n color={color}\n dp={2}\n padding={false}\n suffix=\"%\"\n >\n {canTrade ? sliderValue : 0}\n </Text.numeral>\n <Flex>\n <button\n className={textVariants({\n size: \"2xs\",\n className: \"oui-quantitySlider-maxQty-btn oui-mr-1\",\n })}\n onClick={onMax}\n data-testid=\"oui-testid-orderEntry-maxQty-value-button\"\n >\n {maxLabel}\n </button>\n <Text.numeral\n size={\"2xs\"}\n color={color}\n dp={base_dp}\n padding={false}\n className=\"oui-quantitySlider-maxQty-value\"\n data-testid=\"oui-testid-orderEntry-maxQty-value\"\n >\n {canTrade ? maxQty : 0}\n </Text.numeral>\n </Flex>\n </Flex>\n </div>\n );\n});\n\nQuantitySlider.displayName = \"QuantitySlider\";\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Switch } from \"@orderly.network/ui\";\n\nexport interface ReduceOnlySwitchProps {\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n className?: string;\n}\n\nexport const ReduceOnlySwitch: React.FC<ReduceOnlySwitchProps> = ({\n checked,\n onCheckedChange,\n className,\n}) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n itemAlign={\"center\"}\n gapX={1}\n className={cn(\"oui-orderEntry-reduceOnly\", className)}\n >\n <Switch\n data-testid=\"oui-testid-orderEntry-reduceOnly-switch\"\n className={cn(\"oui-reduceOnly-switch\", \"oui-h-[14px]\")}\n id={\"reduceOnly\"}\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n <label\n htmlFor={\"reduceOnly\"}\n className={\"oui-reduceOnly-label oui-text-xs\"}\n >\n {t(\"orderEntry.reduceOnly\")}\n </label>\n </Flex>\n );\n};\n","import { createContext, ReactNode, useContext } from \"react\";\nimport { PnLMode } from \"./useBuilder.script\";\n\nexport type PnlInputContextState = {\n mode: PnLMode;\n setMode: (mode: PnLMode) => void;\n tipsEle: ReactNode | null;\n};\n\nexport const PnlInputContext = createContext<PnlInputContextState>(\n {} as PnlInputContextState,\n);\n\nexport const usePnlInputContext = () => {\n return useContext(PnlInputContext);\n};\n","import { useEffect, useMemo, useRef, useState } from \"react\";\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\";\nimport { usePnlInputContext } from \"./pnlInputContext\";\n\nexport enum PnLMode {\n PnL = \"PnL\",\n OFFSET = \"Offset\",\n PERCENTAGE = \"Offset%\",\n}\n\nexport type PNL_Values = {\n PnL: string;\n Offset: string;\n \"Offset%\": string;\n ROI: string;\n};\n\ntype PNL_Keys =\n | \"tp_offset\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"sl_offset\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\";\n\nexport type BuilderProps = {\n type: \"TP\" | \"SL\";\n\n quote_dp?: number;\n onChange: (key: PNL_Keys, value: number | string) => void;\n\n values: PNL_Values;\n};\n\nexport const usePNLInputBuilder = (props: BuilderProps) => {\n const { type, values, quote_dp } = props;\n const { t } = useTranslation();\n const [focus, setFocus] = useState(true);\n // const [mode, setMode] = useLocalStorage<PnLMode>(\n // \"TP/SL_Mode\",\n // PnLMode.PERCENTAGE\n // );\n const { mode, setMode, tipsEle } = usePnlInputContext();\n\n const [tipVisible, setTipVisible] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const key = useMemo<PNL_Keys>(() => {\n switch (mode) {\n case PnLMode.OFFSET:\n return `${type.toLowerCase()}_offset` as PNL_Keys;\n case PnLMode.PERCENTAGE:\n return `${type.toLowerCase()}_offset_percentage` as PNL_Keys;\n default:\n return `${type.toLowerCase()}_pnl` as PNL_Keys;\n }\n }, [mode]);\n\n const [innerValue, setInnerValue] = useState<string>(\n values[mode as keyof PNL_Values],\n );\n\n // const value = useMemo(() => {\n // // console.log(\"mode\", mode, values);\n // const value = values[mode as keyof PNL_Values];\n // // if (isFocused) {\n // // return value;\n // // }\n // return value;\n // }, [values, mode, isFocused]);\n\n useEffect(() => {\n if (isFocused) {\n return;\n }\n setInnerValue(values[mode as keyof PNL_Values]);\n }, [values, mode, isFocused]);\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 modeLabelMap = useMemo(() => {\n return {\n [PnLMode.PnL]: t(\"tpsl.pnl\"),\n [PnLMode.OFFSET]: t(\"tpsl.offset\"),\n [PnLMode.PERCENTAGE]: `${t(\"tpsl.offset\")}%`,\n };\n }, [t]);\n\n const percentageSuffix = useRef<string>(\"\");\n\n const onValueChange = (value: string) => {\n // console.log(\"onValueChange\", value);\n // if (!isFocused) {\n // props.onChange(key, value);\n // } else {\n // setInnerValue(value);\n // }\n setInnerValue(value);\n props.onChange(key, value);\n };\n\n const onFocus = () => {\n // updateTips();\n setTipVisible(true);\n setIsFocused(true);\n };\n\n /**\n * hide tips when input is blurred\n */\n const onBlur = () => {\n // setTips(undefined);\n setTipVisible(false);\n setIsFocused(false);\n props.onChange(key, innerValue);\n };\n\n const formatter = (options: {\n dp?: number;\n mode: PnLMode;\n type: \"TP\" | \"SL\";\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 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 // value = new Decimal(\n // value.replace(\n // new RegExp(percentageSuffix.current.replace(\".\", \"\\\\.\") + \"$\"),\n // \"\"\n // )\n // )\n // .mul(100)\n // .toString();\n\n // return `${todpIfNeed(value, 2)}${percentageSuffix.current}`;\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 // return (Number(value) * 100).toFixed(2);\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 // console.log(\"onSendBefore\", value);\n\n if (mode === PnLMode.PERCENTAGE) {\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 value = new Decimal(value).div(100).toString();\n value = `${value}${percentageSuffix.current}`;\n }\n } else if (mode === PnLMode.PnL && type === \"SL\" && focus) {\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 };\n\n return {\n mode,\n modes,\n modeLabelMap,\n formatter,\n onModeChange: (mode: PnLMode) => {\n setMode(mode);\n },\n onFocus,\n onBlur,\n value: innerValue,\n onValueChange,\n quote_dp,\n tips: tipVisible ? tipsEle : undefined,\n setFocus,\n };\n};\n\nexport type PNLInputState = ReturnType<typeof usePNLInputBuilder>;\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n CaretDownIcon,\n cn,\n Input,\n MenuItem,\n Text,\n SimpleDropdownMenu,\n} from \"@orderly.network/ui\";\nimport { inputFormatter } from \"@orderly.network/ui\";\nimport { PNLInputState, PnLMode } from \"./useBuilder.script\";\n\nexport type PNLInputProps = PNLInputState & {\n testIds?: {\n input?: string;\n dropDown?: string;\n };\n quote: string;\n type: \"TP\" | \"SL\";\n};\n\nexport const PNLInput = (props: PNLInputProps) => {\n const {\n mode,\n modes,\n modeLabelMap,\n onModeChange,\n onValueChange,\n quote,\n quote_dp,\n value,\n type,\n tips,\n onFocus,\n onBlur,\n setFocus,\n } = props;\n\n const [prefix, setPrefix] = useState<string>(mode);\n\n const [placeholder, setPlaceholder] = useState<string>(\n mode === PnLMode.PERCENTAGE ? \"%\" : quote,\n );\n\n useEffect(() => {\n setPrefix(mode);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n }, [mode]);\n\n useEffect(() => {\n setPrefix(!!value ? \"\" : mode);\n }, [value]);\n\n const id = useMemo(() => `${type.toLowerCase()}_${mode.toLowerCase()}`, []);\n\n return (\n <Input.tooltip\n prefix={modeLabelMap[prefix as keyof typeof modeLabelMap] || prefix}\n size={\"md\"}\n placeholder={placeholder}\n id={id}\n align={\"right\"}\n value={value}\n tooltip={tips}\n tooltipProps={{\n content: {\n side: props.type === \"TP\" ? \"top\" : \"bottom\",\n },\n }}\n data-testid={props.testIds?.input}\n autoComplete={\"off\"}\n onValueChange={onValueChange}\n formatters={[\n inputFormatter.numberFormatter,\n props.formatter({ dp: quote_dp, mode, type }),\n inputFormatter.currencyFormatter,\n // inputFormatter.identifierFormatter(),\n ]}\n classNames={{\n root: cn(\n \"oui-orderEntry-pnlInput-container\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n ),\n additional: \"oui-text-base-contrast-54\",\n input: \"oui-orderEntry-pnlInput oui-text-inherit\",\n }}\n onFocus={() => {\n setPrefix(\"\");\n setPlaceholder(\"\");\n setFocus(true);\n onFocus();\n }}\n onBlur={() => {\n setPrefix(!!value ? \"\" : mode);\n setPlaceholder(mode === PnLMode.PERCENTAGE ? \"%\" : quote);\n onBlur();\n }}\n suffix={\n <>\n {mode === PnLMode.PERCENTAGE && !!value && (\n <Text size={\"2xs\"} color=\"inherit\" className=\"oui-ml-[2px]\">\n %\n </Text>\n )}\n <PNLMenus\n mode={mode}\n modes={modes}\n onModeChange={(item) => onModeChange(item.value as PnLMode)}\n testId={props.testIds?.dropDown}\n />\n </>\n }\n />\n );\n};\n\nconst PNLMenus = (props: {\n mode?: string;\n modes: MenuItem[];\n onModeChange: (value: MenuItem) => void;\n testId?: string;\n}) => {\n return (\n <SimpleDropdownMenu\n currentValue={props.mode}\n menu={props.modes}\n align={\"end\"}\n size={\"xs\"}\n className={\"oui-pnlInput-menu oui-min-w-[80px]\"}\n onCloseAutoFocus={(event) => event.preventDefault()}\n onSelect={(item) => props.onModeChange(item as MenuItem)}\n >\n <button\n className={\"oui-pnlInput-menuTrigger-btn oui-p-2\"}\n data-testid={props.testId}\n >\n <CaretDownIcon size={12} color={\"white\"} />\n </button>\n </SimpleDropdownMenu>\n );\n};\n","import { PNLInput } from \"./pnlInput.ui\";\nimport { BuilderProps, PnLMode, usePNLInputBuilder } from \"./useBuilder.script\";\n\nexport const PnlInputWidget = (\n props: BuilderProps & {\n testIds?: {\n input?: string;\n dropDown?: string;\n };\n quote: string;\n }\n) => {\n const { testIds, quote, ...rest } = props;\n const state = usePNLInputBuilder(rest);\n return (\n <PNLInput {...state} testIds={testIds} quote={quote} type={props.type} />\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { PnlInputContext, PnlInputContextState } from \"./pnlInputContext\";\nimport { PNL_Values, PnLMode } from \"./useBuilder.script\";\n\nexport const PnlInputProvider: React.FC<\n React.PropsWithChildren<{\n values: PNL_Values & { trigger_price?: string };\n type: \"TP\" | \"SL\";\n }>\n> = (props) => {\n const { type, values, children } = props;\n const [mode, setMode] = useLocalStorage<PnLMode>(\n \"TP/SL_Mode\",\n PnLMode.PERCENTAGE,\n );\n const { t } = useTranslation();\n\n const tipsEle = useMemo(() => {\n if (!values.PnL || !values.trigger_price) {\n return null;\n }\n return (\n <Flex>\n <span className={\"oui-text-xs oui-text-base-contrast-54\"}>\n {mode === PnLMode.PnL\n ? t(\"orderEntry.estRoi\")\n : t(\"orderEntry.estPnL\")}\n </span>\n {mode === PnLMode.PnL ? (\n <Text.numeral\n rule={\"percentages\"}\n className={cn(\n \"oui-ml-1 oui-text-xs\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n >\n {values.ROI}\n </Text.numeral>\n ) : (\n <Text.numeral\n rule={\"price\"}\n className={cn(\n \"oui-ml-1 oui-text-xs\",\n type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\",\n )}\n >\n {values.PnL}\n </Text.numeral>\n )}\n </Flex>\n );\n }, [mode, values.ROI, values.PnL, values.trigger_price]);\n\n const memoizedValue = useMemo<PnlInputContextState>(() => {\n return { mode, setMode, tipsEle };\n }, [mode, setMode, tipsEle]);\n\n return (\n <PnlInputContext.Provider value={memoizedValue}>\n {children}\n </PnlInputContext.Provider>\n );\n};\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { ERROR_MSG_CODES, OrderValidationResult } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\nimport { OrderlyOrder, OrderType, PositionType } from \"@orderly.network/types\";\nimport {\n cn,\n Flex,\n Text,\n Input,\n inputFormatter,\n Switch,\n SettingFillIcon,\n useScreen,\n DotStatus,\n} from \"@orderly.network/ui\";\nimport { Grid } from \"@orderly.network/ui\";\nimport { TPSLPositionTypeWidget } from \"@orderly.network/ui-tpsl\";\nimport { useOrderEntryContext } from \"./orderEntryContext\";\nimport { PnlInputWidget } from \"./pnlInput/pnlInput.widget\";\nimport { usePnlInputContext } from \"./pnlInput/pnlInputContext\";\nimport { PnlInputProvider } from \"./pnlInput/pnlInputProvider\";\nimport { PNL_Values } from \"./pnlInput/useBuilder.script\";\nimport { ReduceOnlySwitch } from \"./reduceOnlySwitch\";\n\ntype OrderValueKeys = keyof OrderlyOrder;\n\ntype Est_Values = PNL_Values & {\n trigger_price?: string;\n};\n\ntype TPSL_Values = {\n tp: Est_Values;\n sl: Est_Values;\n position_type: PositionType;\n};\n\nexport const OrderTPSL = (props: {\n // onCancelTPSL: () => void;\n // onEnableTP_SL: () => void;\n switchState: boolean;\n onSwitchChanged: (state: boolean) => void;\n onChange: (key: OrderValueKeys, value: any) => void;\n values: TPSL_Values;\n orderType: OrderType;\n errors: OrderValidationResult | null;\n quote_dp: number | undefined;\n showTPSLAdvanced: () => void;\n setOrderValue: (key: string, value: any) => void;\n reduceOnlyChecked?: boolean;\n onReduceOnlyChange?: (checked: boolean) => void;\n}) => {\n const tpslFormRef = React.useRef<HTMLDivElement>(null);\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n useEffect(() => {\n if (\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n ) {\n props.onSwitchChanged(false);\n }\n }, [props.orderType]);\n\n if (\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n ) {\n return null;\n }\n\n const isSlPriceWarning =\n props.errors?.[\"sl_trigger_price\"]?.[\"type\"] ===\n ERROR_MSG_CODES.SL_PRICE_WARNING;\n\n return (\n <div className=\"oui-orderEntry-tpsl\">\n <Flex\n itemAlign={\"center\"}\n justify={\"between\"}\n className=\"oui-orderEntry-tpsl-header\"\n >\n <Flex itemAlign={\"center\"} gapX={1}>\n <Switch\n id={\"order_entry_tpsl\"}\n className=\"oui-h-[14px]\"\n checked={props.switchState}\n disabled={\n props.orderType !== OrderType.LIMIT &&\n props.orderType !== OrderType.MARKET\n }\n onCheckedChange={(checked) => {\n props.onSwitchChanged(checked);\n }}\n />\n <label htmlFor={\"order_entry_tpsl\"} className={\"oui-text-xs\"}>\n {t(\"common.tpsl\")}\n </label>\n {/* <ExclamationFillIcon\n color=\"white\"\n // opacity={0.36}\n size={14}\n opacity={1}\n className=\"oui-cursor-pointer oui-text-base-contrast-36 hover:oui-text-base-contrast-80\"\n onClick={() => {\n modal.dialog({\n title: t(\"common.tips\"),\n size: \"xs\",\n content: (\n <Text intensity={54}>{t(\"orderEntry.tpsl.tips\")}</Text>\n ),\n });\n }}\n /> */}\n </Flex>\n <Flex itemAlign={\"center\"} gapX={2}>\n {isMobile && props.onReduceOnlyChange && (\n <ReduceOnlySwitch\n checked={props.reduceOnlyChecked ?? false}\n onCheckedChange={props.onReduceOnlyChange}\n />\n )}\n {!isMobile && (\n <TPSLAdvancedButton\n className={cn(\n \"oui-group oui-invisible\",\n props.switchState && \"oui-visible\",\n )}\n showTPSLAdvanced={props.showTPSLAdvanced}\n />\n )}\n </Flex>\n </Flex>\n <div\n className={cn(\n \"oui-orderEntry-tpsl-body\",\n \"oui-max-h-0 oui-overflow-hidden oui-transition-all\",\n props.switchState && \"oui-max-h-[120px]\",\n )}\n onTransitionEnd={() => {\n console.log(\"transition end\");\n tpslFormRef.current?.style.setProperty(\n \"opacity\",\n props.switchState ? \"1\" : \"0\",\n );\n }}\n >\n <TPSLInputForm\n ref={tpslFormRef}\n setOrderValue={props.setOrderValue}\n onChange={props.onChange}\n values={props.values}\n errors={props.errors}\n quote_dp={props.quote_dp}\n showTPSLAdvanced={props.showTPSLAdvanced}\n isMobile={isMobile}\n isSlPriceWarning={isSlPriceWarning}\n />\n </div>\n\n {isSlPriceWarning && <TPSLPriceWarning errors={props.errors} />}\n </div>\n );\n};\n\nconst TPSLPriceWarning = (props: { errors: OrderValidationResult | null }) => {\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n\n return (\n <DotStatus\n color=\"warning\"\n size=\"xs\"\n label={getErrorMsg(\"sl_trigger_price\")}\n />\n );\n};\n\nconst TPSLInputForm = React.forwardRef<\n HTMLDivElement,\n {\n setOrderValue: (key: string, value: any) => void;\n onChange: (key: OrderValueKeys, value: any) => void;\n values: TPSL_Values;\n errors: OrderValidationResult | null;\n quote_dp: number | undefined;\n showTPSLAdvanced: () => void;\n isMobile: boolean;\n isSlPriceWarning?: boolean;\n }\n>((props, ref) => {\n const { getErrorMsg } = useOrderEntryFormErrorMsg(props.errors);\n const { t } = useTranslation();\n\n return (\n <div\n ref={ref}\n className={\n \"oui-orderEntry-tpsl-form oui-space-y-1 oui-px-px oui-py-2 oui-transition-all\"\n }\n >\n <Flex itemAlign={\"center\"} justify={\"between\"} gapX={2}>\n <TPSLPositionTypeWidget\n value={props.values.position_type}\n onChange={props.onChange}\n />\n {props.isMobile && (\n <TPSLAdvancedButton\n showTPSLAdvanced={props.showTPSLAdvanced}\n isMobile={props.isMobile}\n />\n )}\n </Flex>\n <PnlInputProvider values={props.values.tp} type={\"TP\"}>\n <TPSLInputRow\n type={\"TP\"}\n error={getErrorMsg(\"tp_trigger_price\")}\n onChange={props.onChange}\n values={props.values.tp}\n quote_dp={props.quote_dp}\n testIds={{\n first: \"oui-testid-orderEntry-tpsl-tpPrice-input\",\n second: \"oui-testid-orderEntry-tpsl-tpPnl-input\",\n dropDown: \"oui-testid-orderEntry-tpsl-tp-dropDown-trigger-button\",\n }}\n />\n </PnlInputProvider>\n <PnlInputProvider values={props.values.sl} type={\"SL\"}>\n <TPSLInputRow\n type={\"SL\"}\n error={\n props.isSlPriceWarning ? undefined : getErrorMsg(\"sl_trigger_price\")\n }\n displayErrorMessage={getErrorMsg(\"sl_trigger_price\") !== undefined}\n onChange={props.onChange}\n values={props.values.sl}\n quote_dp={props.quote_dp}\n testIds={{\n first: \"oui-testid-orderEntry-tpsl-slPrice-input\",\n second: \"oui-testid-orderEntry-tpsl-slPnl-input\",\n dropDown: \"oui-testid-orderEntry-tpsl-sl-dropDown-trigger-button\",\n }}\n classNames={{\n root: props.isSlPriceWarning\n ? \"oui-outline-warning-darken focus-within:oui-outline-warning-darken\"\n : undefined,\n }}\n />\n </PnlInputProvider>\n </div>\n );\n});\n\nTPSLInputForm.displayName = \"TPSLInputForm\";\n\nconst TPSLAdvancedButton = (props: {\n showTPSLAdvanced: () => void;\n className?: string;\n isMobile?: boolean;\n}) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n itemAlign={\"center\"}\n gapX={1}\n onClick={props.showTPSLAdvanced}\n className={cn(\n \"oui-orderEntry-tpsl-advanced-btn\",\n \"oui-group oui-cursor-pointer\",\n props.className,\n )}\n >\n <Text\n className={cn(\n \"oui-cursor-pointer group-hover:oui-text-base-contrast\",\n props.isMobile ? \"oui-text-2xs\" : \"oui-text-sm\",\n )}\n >\n {t(\"tpsl.advanced\")}\n </Text>\n <SettingFillIcon\n size={12}\n className=\"oui-advanced-icon oui-text-base-contrast-54 group-hover:oui-text-base-contrast oui-cursor-pointer\"\n opacity={1}\n onClick={props.showTPSLAdvanced}\n />\n </Flex>\n );\n};\n\n//------- TPSLTriggerPriceInput start -------\nconst TPSLTriggerPriceInput = (props: {\n type: \"TP\" | \"SL\";\n error: string | undefined;\n displayErrorMessage?: boolean;\n values: Est_Values;\n onChange: (value: string) => void;\n quote_dp: number | undefined;\n testId?: string;\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}) => {\n const { t } = useTranslation();\n const { errorMsgVisible } = useOrderEntryContext();\n const { tipsEle } = usePnlInputContext();\n const [prefix, setPrefix] = useState<string>(`${props.type} Price`);\n const [placeholder, setPlaceholder] = useState<string>(\"USDC\");\n\n const [tipVisible, setTipVisible] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const [innerValue, setInnerValue] = useState<string>(\n props.values.trigger_price ?? \"\",\n );\n\n useEffect(() => {\n if (isFocused) {\n return;\n }\n setInnerValue(props.values.trigger_price ?? \"\");\n }, [props.values.trigger_price, isFocused]);\n\n const triggerPriceToolTipEle = useMemo(() => {\n if (props.error && (errorMsgVisible || props.displayErrorMessage))\n return props.error;\n if (tipVisible) return tipsEle;\n\n return null;\n }, [\n props.error,\n errorMsgVisible,\n tipVisible,\n tipsEle,\n props.displayErrorMessage,\n ]);\n\n const getPrefixLabel = (trigger_price?: string) => {\n let _prefix = props.type === \"TP\" ? t(\"tpsl.tpPrice\") : t(\"tpsl.slPrice\");\n\n if (trigger_price) {\n _prefix = props.type === \"TP\" ? t(\"tpsl.tp\") : t(\"tpsl.sl\");\n }\n return _prefix;\n };\n\n const onValueChange = (value: string) => {\n setInnerValue(value);\n props.onChange(value);\n };\n\n // console.log(\"props.values.trigger_price\", props.values.trigger_price);\n\n useEffect(() => {\n setPrefix(getPrefixLabel(props.values.trigger_price));\n\n if (!isFocused) {\n setInnerValue(props.values.trigger_price ?? \"\");\n }\n }, [props.type, props.values.trigger_price]);\n\n const onFocus = () => {\n setPrefix(props.type === \"TP\" ? t(\"tpsl.tp\") : t(\"tpsl.sl\"));\n setPlaceholder(\"\");\n setTipVisible(true);\n setIsFocused(true);\n };\n\n const onBlur = () => {\n setPrefix(getPrefixLabel(props.values.trigger_price));\n setPlaceholder(\"USDC\");\n setTipVisible(false);\n setIsFocused(false);\n props.onChange(innerValue);\n };\n\n return (\n <Input.tooltip\n data-testid={props.testId}\n prefix={prefix}\n size={\"md\"}\n placeholder={placeholder}\n align=\"right\"\n onFocus={onFocus}\n onBlur={onBlur}\n tooltip={triggerPriceToolTipEle}\n tooltipProps={{\n content: {\n side: props.type === \"TP\" ? \"top\" : \"bottom\",\n },\n }}\n color={props.error ? \"danger\" : undefined}\n autoComplete={\"off\"}\n value={innerValue}\n classNames={{\n additional: \"oui-text-base-contrast-54\",\n root: cn(\n \"oui-orderEntry-tpsl-triggerPrice\",\n \"oui-pr-2 md:oui-pr-3\",\n props.classNames?.root,\n ),\n prefix: cn(\"oui-pr-1 md:oui-pr-2\", props.classNames?.prefix),\n input: cn(\n \"oui-text-2xs placeholder:oui-text-2xs\",\n props.classNames?.input,\n ),\n }}\n // onChange={props.onChange}\n onValueChange={onValueChange}\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(props.quote_dp ?? 2),\n inputFormatter.currencyFormatter,\n ]}\n />\n );\n};\n\n//------- TPSLTriggerPriceInput end -------\n\nconst TPSLInputRow: React.FC<{\n type: \"TP\" | \"SL\";\n values: Est_Values;\n error?: string;\n displayErrorMessage?: boolean;\n onChange: (key: OrderValueKeys, value: any) => void;\n quote_dp: number | undefined;\n testIds?: {\n first?: string;\n second?: string;\n dropDown?: string;\n };\n classNames?: {\n root?: string;\n input?: string;\n prefix?: string;\n };\n}> = (props) => {\n return (\n <Grid cols={2} gapX={1}>\n <TPSLTriggerPriceInput\n testId={props.testIds?.first}\n type={props.type}\n error={props.error}\n displayErrorMessage={props.displayErrorMessage}\n values={props.values ?? \"\"}\n classNames={props.classNames}\n onChange={(event) => {\n props.onChange(\n props.type === \"SL\" ? \"sl_trigger_price\" : \"tp_trigger_price\",\n event,\n );\n }}\n quote_dp={props.quote_dp}\n />\n\n <PnlInputWidget\n testIds={{\n input: props.testIds?.second,\n dropDown: props.testIds?.dropDown,\n }}\n onChange={props.onChange}\n quote={\"USDC\"}\n quote_dp={2}\n type={props.type}\n values={{\n PnL: props.values.PnL,\n Offset: props.values.Offset,\n \"Offset%\": props.values[\"Offset%\"],\n ROI: props.values.ROI,\n }}\n />\n </Grid>\n );\n};\n","import React, { useCallback, useEffect, useId, useMemo, useState } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationResult,\n useLocalStorage,\n useMemoizedFn,\n useOrderlyContext,\n} 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 cn,\n Divider,\n Flex,\n modal,\n SimpleSheet,\n Switch,\n ThrottledButton,\n toast,\n useScreen,\n injectable,\n} from \"@orderly.network/ui\";\nimport { TPSLAdvancedWidget } from \"@orderly.network/ui-tpsl\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { AdditionalConfigButton } from \"./components/additional/additionalConfigButton\";\nimport {\n AdditionalInfo,\n AdditionalInfoProps,\n} from \"./components/additional/additionalInfo\";\nimport { PinButton } from \"./components/additional/pinButton\";\nimport { AdvancedTPSLResult } from \"./components/advancedTPSLResult\";\nimport { AssetInfo } from \"./components/assetInfo\";\nimport { Available } from \"./components/available\";\nimport { orderConfirmDialogId } from \"./components/dialog/confirm.ui\";\nimport { MaxQtyConfirm } from \"./components/dialog/maxQtyConfirm\";\nimport { scaledOrderConfirmDialogId } from \"./components/dialog/scaledOrderConfirm\";\nimport { OrderEntryHeader } from \"./components/header\";\nimport { OrderEntryProvider } from \"./components/orderEntryProvider\";\nimport { OrderInput } from \"./components/orderInput\";\nimport { QuantitySlider } from \"./components/quantitySlider\";\nimport { ReduceOnlySwitch } from \"./components/reduceOnlySwitch\";\nimport { OrderTPSL } from \"./components/tpsl\";\nimport { type OrderEntryScriptReturn } from \"./orderEntry.script\";\nimport { getScaledPlaceOrderMessage } from \"./utils\";\n\nexport type OrderEntryProps = OrderEntryScriptReturn & {\n containerRef?: React.RefObject<HTMLDivElement>;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n};\n\nexport const OrderEntry: React.FC<OrderEntryProps> = (props) => {\n const {\n side,\n formattedOrder,\n setOrderValue,\n setOrderValues,\n symbolInfo,\n maxQty,\n freeCollateral,\n helper,\n submit,\n metaState,\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n disableFeatures,\n currentLtv,\n fillMiddleValue,\n soundAlert,\n setSoundAlert,\n currentFocusInput,\n } = props;\n const [maxQtyConfirmOpen, setMaxQtyConfirmOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const { isMobile } = useScreen();\n const [hasAdvancedTPSLResult, setHasAdvancedTPSLResult] =\n useState<boolean>(false);\n\n const { errors, validated } = metaState;\n\n const [errorMsgVisible, setErrorMsgVisible] = useState(false);\n\n const [needConfirm, setNeedConfirm] = useLocalStorage(\n \"orderly_order_confirm\",\n true,\n );\n const [pinned, setPinned] = useLocalStorage(\n \"orderly-order-additional-pinned\",\n true,\n );\n const [showTPSLAdvanced, setShowTPSLAdvanced] = useState(false);\n const [hidden, setHidden] = useLocalStorage(\"orderly-order-hidden\", false);\n\n const [slippage, setSlippage] = useLocalStorage(\"orderly-slippage\", \"1\", {\n parseJSON: ((value: string | null) => {\n return !value || value === '\"\"' ? \"1\" : JSON.parse(value);\n }) as any,\n });\n\n const { notification } = useOrderlyContext();\n\n const soundAlertId = useId();\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(validated ? errors : null);\n\n const buttonLabel = useMemo(() => {\n // TODO: remove this for bug handling\n // if (isMobile && freeCollateral <= 0) {\n // return t(\"common.deposit\");\n // }\n return side === OrderSide.BUY\n ? t(\"orderEntry.buyLong\")\n : t(\"orderEntry.sellShort\");\n }, [side, t, isMobile]);\n\n useEffect(() => {\n if (validated) {\n setErrorMsgVisible(true);\n }\n }, [validated]);\n\n // set slippage\n useEffect(() => {\n if (disableFeatures?.includes(\"slippageSetting\")) {\n return;\n }\n if (slippage) {\n setOrderValue(\"slippage\", Number(slippage));\n } else {\n setOrderValue(\"slippage\", undefined);\n }\n }, [slippage, disableFeatures]);\n\n useEffect(() => {\n const clickHandler = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (\n target.closest(\"#order-entry-submit-button\")\n // || target.closest(\".orderly-order-entry\")\n ) {\n return;\n }\n setErrorMsgVisible((visible) => {\n if (visible) {\n return false;\n }\n return visible;\n });\n };\n\n if (errorMsgVisible) {\n document.addEventListener(\"click\", clickHandler);\n } else {\n document.removeEventListener(\"click\", clickHandler);\n }\n\n return () => {\n document.removeEventListener(\"click\", clickHandler);\n };\n }, [errorMsgVisible]);\n\n const onSubmit = useMemoizedFn(async () => {\n const isScaledOrder = formattedOrder.order_type === OrderType.SCALED;\n\n // TODO: in the future, we will be add `level` to `OrderValidationItem`, use `level` manager ui state\n const isSlPriceError =\n props.slPriceError?.sl_trigger_price?.type ===\n ERROR_MSG_CODES.SL_PRICE_ERROR;\n helper\n .validate(isSlPriceError ? props.slPriceError : undefined)\n .then(\n // validate success, it return the order\n // TODO: get order from other function\n (order: any) => {\n // scaled order is always need confirm\n if (isScaledOrder) {\n return modal.show(scaledOrderConfirmDialogId, {\n order,\n symbolInfo,\n size: isMobile ? \"sm\" : \"md\",\n });\n }\n\n if (needConfirm) {\n return modal.show(orderConfirmDialogId, {\n order: formattedOrder,\n symbolInfo,\n });\n }\n\n return true;\n },\n // should catch validate error first, then submit\n (errors: OrderValidationResult) => {\n // slippage error message is not show input tooltip, so we need to manually show it by toast\n if (errors.slippage) {\n toast.error(t(\"orderEntry.slippage.error.max\"));\n }\n\n // when switch order type, validated not changed, so we need to set it to true\n setErrorMsgVisible(true);\n\n return Promise.reject();\n },\n )\n .then(() => {\n // validate success, submit order\n return submit({ resetOnSuccess: false }).then((result: any) => {\n if (!result.success && result.message) {\n toast.error(result.message);\n } else if (result.success && isScaledOrder) {\n const message = getScaledPlaceOrderMessage(result);\n if (message) {\n toast.success(message);\n }\n }\n });\n })\n .catch((error) => {\n // submit order error\n if (error?.message) {\n toast.error(error.message);\n // toast.error(`Error:${error.message}`);\n\n // if (error instanceof ApiError) {\n // toast.error(error.message);\n }\n });\n });\n\n const formattedMaxQty = useMemo(() => {\n return new Decimal(maxQty)\n .todp(symbolInfo.base_dp, Decimal.ROUND_DOWN)\n .toString();\n }, [maxQty, symbolInfo.base_dp]);\n\n const onMaxQtyConfirm = useCallback(() => {\n setOrderValue(\"order_quantity\", formattedMaxQty);\n // submit order when order_quantity updated\n requestAnimationFrame(() => {\n onSubmit();\n });\n setMaxQtyConfirmOpen(false);\n }, [setOrderValue, formattedMaxQty]);\n\n const validateSubmit = async () => {\n // show a prompt reminding the user. If the user confirms, automatically disable Reduce Only and proceed with the action.\n if (formattedOrder.reduce_only && maxQty === 0) {\n return modal.confirm({\n title: t(\"orderEntry.reduceOnly.reminder\"),\n content: t(\"orderEntry.reduceOnly.reminder.content\"),\n okLabel: t(\"orderEntry.placeOrderNow\"),\n onOk: async () => {\n setOrderValue(\"reduce_only\", false);\n // submit order when reduce only updated\n requestAnimationFrame(() => {\n props.resetMetaState();\n onSubmit();\n });\n return Promise.resolve(true);\n },\n onCancel: async () => {\n return Promise.resolve(false);\n },\n });\n } else if (maxQty > 0 && Number(formattedOrder.order_quantity) > maxQty) {\n setMaxQtyConfirmOpen(true);\n } else {\n onSubmit();\n }\n };\n\n const onShowTPSLAdvanced = () => {\n helper.validate().then(\n () => {\n setShowTPSLAdvanced(true);\n },\n (errors) => {\n const tpslKey = new Set([\"tp_trigger_price\", \"sl_trigger_price\"]);\n if (Object.keys(errors).every((key: string) => tpslKey.has(key))) {\n setShowTPSLAdvanced(true);\n }\n },\n );\n // modal.show(TPSLAdvancedDialogId, {\n // order: formattedOrder,\n // setOrderValue: setOrderValue,\n // });\n // setShowTPSLAdvanced(true);\n };\n\n const onSubmitAdvancedTPSL = (order: OrderlyOrder) => {\n if (order.side !== formattedOrder.side) {\n setOrderValue(\"side\", order.side);\n }\n setOrderValues({\n position_type: order.position_type,\n tp_order_type: order.tp_order_type,\n tp_pnl: order.tp_pnl,\n tp_offset: order.tp_offset,\n tp_offset_percentage: order.tp_offset_percentage,\n tp_ROI: order.tp_ROI,\n tp_trigger_price: order.tp_trigger_price,\n tp_order_price: order.tp_order_price,\n sl_order_type: order.sl_order_type,\n sl_trigger_price: order.sl_trigger_price,\n sl_order_price: order.sl_order_price,\n sl_pnl: order.sl_pnl,\n sl_offset: order.sl_offset,\n sl_offset_percentage: order.sl_offset_percentage,\n sl_ROI: order.sl_ROI,\n });\n setShowTPSLAdvanced(false);\n setHasAdvancedTPSLResult(true);\n };\n\n const onDeleteAdvancedTPSL = () => {\n setHasAdvancedTPSLResult(false);\n setOrderValues({\n tp_trigger_price: undefined,\n tp_order_price: undefined,\n tp_order_type: OrderType.MARKET,\n sl_trigger_price: undefined,\n sl_order_price: undefined,\n sl_order_type: OrderType.MARKET,\n tp_pnl: undefined,\n sl_pnl: undefined,\n position_type: PositionType.FULL,\n });\n };\n\n useEffect(() => {\n setHasAdvancedTPSLResult(false);\n }, [props.symbol]);\n\n const showReduceOnlySection =\n (isMobile &&\n formattedOrder.order_type !== OrderType.LIMIT &&\n formattedOrder.order_type !== OrderType.MARKET) ||\n !isMobile;\n\n const showSoundSection =\n (Boolean(notification?.orderFilled?.media) ||\n Boolean(notification?.orderFilled?.soundOptions?.length)) &&\n (notification?.orderFilled?.displayInOrderEntry ?? true);\n\n const additionalInfoProps: AdditionalInfoProps = {\n pinned,\n setPinned,\n needConfirm,\n setNeedConfirm,\n hidden,\n setHidden,\n onValueChange: setOrderValue,\n orderTypeExtra: formattedOrder[\"order_type_ext\"],\n showExtra:\n formattedOrder[\"order_type\"] === OrderType.LIMIT && !props.tpslSwitch,\n };\n // Additional info (fok,ioc、post only, order confirm hidden)\n const extraButton = !pinned && (\n <AdditionalConfigButton {...additionalInfoProps} />\n );\n\n return (\n <OrderEntryProvider\n errors={errors}\n errorMsgVisible={errorMsgVisible}\n symbolInfo={symbolInfo}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n getErrorMsg={getErrorMsg}\n setOrderValue={setOrderValue}\n setOrderValues={setOrderValues}\n currentFocusInput={currentFocusInput.current}\n priceInputRef={props.priceInputRef}\n priceInputContainerRef={props.priceInputContainerRef}\n triggerPriceInputRef={props.triggerPriceInputRef}\n activatedPriceInputRef={props.activatedPriceInputRef}\n lastQuantityInputType={props.lastQuantityInputType}\n leverage={props.symbolLeverage}\n >\n <MaxQtyConfirm\n open={maxQtyConfirmOpen}\n onOpenChange={setMaxQtyConfirmOpen}\n maxQty={formattedMaxQty}\n onConfirm={onMaxQtyConfirm}\n base={symbolInfo.base}\n />\n <div\n className={cn(\n \"oui-orderEntry\",\n \"oui-space-y-2 oui-text-base-contrast-54 xl:oui-space-y-3\",\n )}\n ref={props.containerRef}\n >\n <OrderEntryHeader\n symbol={props.symbol}\n canTrade={props.canTrade}\n side={side}\n order_type={formattedOrder.order_type!}\n setOrderValue={setOrderValue}\n symbolLeverage={props.symbolLeverage}\n marginMode={props.marginMode}\n />\n\n <Available\n currentLtv={currentLtv}\n canTrade={props.canTrade}\n quote={symbolInfo?.quote}\n freeCollateral={freeCollateral}\n marginMode={props.marginMode}\n />\n\n <OrderInput\n values={formattedOrder}\n priceInputContainerWidth={props.priceInputContainerWidth}\n fillMiddleValue={fillMiddleValue}\n bbo={{\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n }}\n />\n\n <QuantitySlider\n canTrade={props.canTrade}\n side={props.side}\n order_quantity={formattedOrder.order_quantity}\n maxQty={maxQty}\n />\n\n {/* Submit button */}\n <ThrottledButton\n fullWidth\n id={\"order-entry-submit-button\"}\n // color={side === OrderSide.BUY ? \"buy\" : \"sell\"}\n data-type={OrderSide.BUY}\n className={cn(\n \"oui-orderEntry-submit-btn\",\n side === OrderSide.BUY\n ? \"orderly-order-entry-submit-button-buy oui-bg-success-darken hover:oui-bg-success-darken/80 active:oui-bg-success-darken/80\"\n : \"orderly-order-entry-submit-button-sell oui-bg-danger-darken hover:oui-bg-danger-darken/80 active:oui-bg-danger-darken/80\",\n )}\n onClick={validateSubmit}\n loading={props.isMutating}\n disabled={!props.canTrade}\n >\n {buttonLabel}\n </ThrottledButton>\n\n {/* Asset info */}\n <AssetInfo\n canTrade={props.canTrade}\n quote={symbolInfo.quote}\n estLiqPrice={props.estLiqPrice}\n estLiqPriceDistance={props.estLiqPriceDistance}\n estLeverage={props.estLeverage}\n currentLeverage={props.currentLeverage}\n slippage={slippage}\n dp={symbolInfo.quote_dp}\n setSlippage={setSlippage}\n estSlippage={props.estSlippage}\n orderType={formattedOrder.order_type!}\n disableFeatures={disableFeatures}\n symbol={props.symbol}\n side={side}\n />\n\n <Divider className=\"oui-w-full\" />\n\n {/* TP SL switch and content */}\n {hasAdvancedTPSLResult ? (\n <AdvancedTPSLResult\n order={formattedOrder}\n symbolInfo={props.symbolInfo}\n errors={validated ? errors : null}\n onEdit={() => {\n setShowTPSLAdvanced(true);\n }}\n onDelete={() => {\n onDeleteAdvancedTPSL();\n }}\n />\n ) : (\n <OrderTPSL\n // onCancelTPSL={props.cancelTP_SL}\n // onEnableTP_SL={props.enableTP_SL}\n quote_dp={props.symbolInfo.quote_dp}\n switchState={props.tpslSwitch}\n onSwitchChanged={props.setTpslSwitch}\n orderType={formattedOrder.order_type!}\n errors={\n validated || props.slPriceError !== undefined\n ? { ...errors, ...props.slPriceError }\n : null\n }\n setOrderValue={setOrderValue}\n reduceOnlyChecked={formattedOrder.reduce_only ?? false}\n onReduceOnlyChange={(checked) => {\n setOrderValue(\"reduce_only\", checked);\n }}\n values={{\n position_type:\n formattedOrder.position_type ?? PositionType.PARTIAL,\n tp: {\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 sl: {\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 showTPSLAdvanced={onShowTPSLAdvanced}\n onChange={(key, value) => {\n setOrderValue(key, value);\n }}\n />\n )}\n\n {showReduceOnlySection && (\n <Flex\n justify={\"between\"}\n itemAlign={\"center\"}\n className={cn(\"oui-reduceOnly-container\", \"oui-mt-2\")}\n >\n <ReduceOnlySwitch\n checked={formattedOrder.reduce_only ?? false}\n onCheckedChange={(checked) => {\n setOrderValue(\"reduce_only\", checked);\n }}\n />\n {!showSoundSection && extraButton}\n </Flex>\n )}\n {showSoundSection && (\n <Flex\n justify={\"between\"}\n itemAlign={\"center\"}\n className=\"oui-soundAlert-container\"\n >\n <Flex itemAlign={\"center\"} gapX={1}>\n <Switch\n className={cn(\"oui-soundAlert-switch\", \"oui-h-[14px]\")}\n id={soundAlertId}\n checked={soundAlert}\n onCheckedChange={(checked) => setSoundAlert(checked)}\n />\n <label\n htmlFor={soundAlertId}\n className={cn(\"oui-soundAlert-label\", \"oui-text-xs\")}\n >\n {t(\"portfolio.setting.soundAlerts\")}\n </label>\n </Flex>\n {extraButton}\n </Flex>\n )}\n {!showSoundSection &&\n isMobile &&\n (formattedOrder.order_type == OrderType.LIMIT ||\n formattedOrder.order_type == OrderType.MARKET) &&\n !formattedOrder.reduce_only &&\n !pinned && (\n <Flex className=\"oui-w-full\" justify={\"end\"}>\n {extraButton}\n </Flex>\n )}\n {/* Additional info (fok,ioc、post only, order confirm hidden) */}\n {pinned && (\n <Box\n p={2}\n r={\"md\"}\n intensity={700}\n position={\"relative\"}\n className=\"oui-additional-container\"\n >\n <AdditionalInfo {...additionalInfoProps} />\n <PinButton\n onClick={() => {\n setPinned(false);\n }}\n className={cn(\n \"oui-additional-pin-btn\",\n \"oui-group oui-absolute oui-right-2 oui-top-2\",\n )}\n data-testid=\"oui-testid-orderEntry-pinned-button\"\n />\n </Box>\n )}\n </div>\n\n <SimpleSheet\n open={showTPSLAdvanced}\n onOpenChange={setShowTPSLAdvanced}\n classNames={{\n body: cn(\n \"oui-tpslAdvanced-body\",\n \"oui-h-full oui-pb-0 oui-border-none\",\n ),\n overlay: cn(\"oui-tpslAdvanced-overlay\", \"!oui-bg-base-10/60\"),\n content: cn(\n \"oui-tpslAdvanced-sheet\",\n \"oui-rounded-[16px] oui-border-none !oui-p-0\",\n isMobile\n ? \"oui-inset-y-0 oui-right-0 oui-w-[280px]\"\n : \"!oui-bottom-[40px] oui-right-3 oui-top-[44px] !oui-h-auto oui-w-[360px]\",\n ),\n }}\n contentProps={{ side: \"right\", closeable: false }}\n >\n {showTPSLAdvanced && (\n <TPSLAdvancedWidget\n setOrderValue={setOrderValue}\n order={formattedOrder as OrderlyOrder}\n onSubmit={onSubmitAdvancedTPSL}\n onClose={() => {\n setShowTPSLAdvanced(false);\n }}\n symbolLeverage={props.symbolLeverage}\n />\n )}\n </SimpleSheet>\n </OrderEntryProvider>\n );\n};\n","import { useEffect, useMemo, useRef } from \"react\";\nimport { useLocalStorage, useTrack } from \"@orderly.network/hooks\";\nimport {\n BBOOrderType,\n OrderlyOrder,\n OrderSide,\n OrderType,\n TrackerEventName,\n} from \"@orderly.network/types\";\nimport {\n BBOStatus,\n getOrderLevelByBBO,\n getOrderTypeByBBO,\n isBBOOrder,\n} from \"../utils\";\n\nexport function useBBOState({\n tpslSwitch,\n order_type,\n order_type_ext,\n side,\n setOrderValues,\n}: {\n tpslSwitch: boolean;\n order_type?: OrderType;\n order_type_ext?: OrderType;\n side?: OrderSide;\n setOrderValues: (values: Partial<OrderlyOrder>) => void;\n}) {\n const [localBBOType, setLocalBBOType] = useLocalStorage<\n BBOOrderType | undefined\n >(\"orderly_order_bbo_type\", undefined);\n\n const lastBBOType = useRef<BBOOrderType>(localBBOType);\n\n const { track } = useTrack();\n\n const bboStatus = useMemo(() => {\n if (\n tpslSwitch ||\n [OrderType.POST_ONLY, OrderType.IOC, OrderType.FOK].includes(\n order_type_ext!,\n )\n ) {\n return BBOStatus.DISABLED;\n }\n\n return localBBOType && order_type === OrderType.LIMIT\n ? BBOStatus.ON\n : BBOStatus.OFF;\n }, [tpslSwitch, order_type_ext, order_type, localBBOType]);\n\n const toggleBBO = () => {\n track(TrackerEventName.clickBBOButton);\n if (localBBOType) {\n // unselect bbo\n setLocalBBOType(undefined);\n // update formattedOrder values immediately instead of via useEffect\n setOrderValues({\n order_type_ext: undefined,\n level: undefined,\n });\n } else {\n setLocalBBOType(lastBBOType.current || BBOOrderType.COUNTERPARTY1);\n }\n };\n\n const onBBOChange = (value: BBOOrderType) => {\n setLocalBBOType(value);\n lastBBOType.current = value;\n };\n\n useEffect(() => {\n if (bboStatus === BBOStatus.DISABLED) {\n setOrderValues({\n // if order_type_ext is not bbo(ask, bid), keep previous value\n order_type_ext: isBBOOrder({ order_type_ext })\n ? undefined\n : order_type_ext,\n level: undefined,\n });\n }\n }, [bboStatus, order_type_ext]);\n\n useEffect(() => {\n if (bboStatus === BBOStatus.ON) {\n const orderType = getOrderTypeByBBO(localBBOType, side!);\n const orderLevel = getOrderLevelByBBO(localBBOType)!;\n setOrderValues({\n order_type_ext: orderType,\n level: orderLevel,\n });\n }\n }, [localBBOType, bboStatus, side]);\n\n return {\n bboStatus,\n bboType: localBBOType,\n setBBOType: setLocalBBOType,\n onBBOChange,\n toggleBBO,\n };\n}\n","import { useRef, FocusEvent } from \"react\";\nimport { OrderEntryReturn, useMemoizedFn, utils } from \"@orderly.network/hooks\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputType } from \"../types\";\n\ntype FocusAndBlurProps = {\n base_tick: number;\n order_type?: OrderType;\n order_quantity?: string;\n setValue: OrderEntryReturn[\"setValue\"];\n};\n\nexport function useFocusAndBlur(props: FocusAndBlurProps) {\n const { base_tick, order_type, order_quantity, setValue } = props;\n const currentFocusInput = useRef<InputType>(InputType.NONE);\n const lastScaledOrderPriceInput = useRef<InputType>(InputType.END_PRICE);\n const lastQuantityInputType = useRef<InputType>(InputType.NONE);\n\n const formatQty = () => {\n if (\n base_tick < 1 ||\n // scaled order should not format quantity, because it is total quantity\n order_type === OrderType.SCALED ||\n !order_quantity\n ) {\n return;\n }\n\n // TODO: use this to format quantity instead of utils.formatNumber, need time to test\n // const formatQty = new Decimal(formattedOrder.order_quantity)\n // .todp(0, Decimal.ROUND_DOWN)\n // .div(symbolInfo.base_tick)\n // .toString();\n\n const quantity = utils.formatNumber(\n order_quantity,\n new Decimal(base_tick || \"0\").toNumber(),\n );\n\n setValue(\"order_quantity\", quantity, {\n shouldUpdateLastChangedField: false,\n });\n };\n\n const onFocus = (type: InputType) => (_: FocusEvent) => {\n currentFocusInput.current = type;\n\n // set last scaled order price input\n if (\n [InputType.START_PRICE, InputType.END_PRICE].includes(\n currentFocusInput.current!,\n )\n ) {\n lastScaledOrderPriceInput.current = type;\n }\n\n if (\n [InputType.QUANTITY, InputType.TOTAL, InputType.MARGIN].includes(type)\n ) {\n lastQuantityInputType.current = type;\n }\n };\n\n const onBlur = (type: InputType) => (_: FocusEvent) => {\n setTimeout(() => {\n if (currentFocusInput.current !== type) {\n return;\n }\n currentFocusInput.current = InputType.NONE;\n }, 300);\n\n if (type === InputType.QUANTITY) {\n formatQty();\n }\n };\n\n return {\n currentFocusInput,\n lastScaledOrderPriceInput,\n lastQuantityInputType,\n onFocus: useMemoizedFn(onFocus),\n onBlur: useMemoizedFn(onBlur),\n };\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { OrderType } from \"@orderly.network/types\";\n\nexport function usePriceInputContainer({\n order_type_ext,\n}: {\n order_type_ext?: OrderType;\n}) {\n const [priceInputContainerWidth, setPriceInputContainerWidth] = useState(0);\n const priceInputContainerRef = useRef<HTMLDivElement | null>(null);\n\n // useEffect(() => {\n // if (\n // priceInputContainerRef.current &&\n // // update BBO select width when is BBO order\n // isBBOOrder({ order_type_ext: formattedOrder.order_type_ext })\n // ) {\n // const width =\n // priceInputContainerRef.current.getBoundingClientRect()?.width;\n // if (width) {\n // setPriceInputContainerWidth(width);\n // }\n // }\n // }, [priceInputContainerRef, formattedOrder.order_type_ext]);\n\n useEffect(() => {\n const element = priceInputContainerRef.current;\n\n if (!element) {\n return;\n }\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n if (width) {\n // update BBO order select dropdown width when priceInputContainerRef width changed\n setPriceInputContainerWidth(width);\n }\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.unobserve(element);\n };\n }, [priceInputContainerRef, order_type_ext]);\n\n return { priceInputContainerRef, priceInputContainerWidth };\n}\n","import { useEffect, useRef } from \"react\";\nimport {\n useComputedLTV,\n useEventEmitter,\n useLocalStorage,\n useMarginModeBySymbol,\n useMarginRatio,\n useMemoizedFn,\n useOrderEntry,\n useOrderlyContext,\n useTpslPriceChecker,\n} from \"@orderly.network/hooks\";\nimport { useCanTrade } from \"@orderly.network/react-app\";\nimport {\n DistributionType,\n OrderLevel,\n OrderSide,\n OrderType,\n PositionType,\n ORDER_ENTRY_EST_LIQ_PRICE_CHANGE,\n} from \"@orderly.network/types\";\nimport { Decimal, removeTrailingZeros } from \"@orderly.network/utils\";\nimport { useAskAndBid } from \"./hooks/useAskAndBid\";\nimport { useBBOState } from \"./hooks/useBBOState\";\nimport { useFocusAndBlur } from \"./hooks/useFocusAndBlur\";\nimport { usePriceInputContainer } from \"./hooks/usePriceInputContainer\";\nimport { InputType } from \"./types\";\nimport { BBOStatus, isBBOOrder, safeNumber } from \"./utils\";\n\nexport type OrderEntryScriptInputs = {\n symbol: string;\n};\n\nexport const ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\nexport const ORDERLY_ORDER_SOUND_OPTION_KEY = \"orderly_order_sound_option\";\n\nexport type OrderEntryScriptReturn = ReturnType<typeof useOrderEntryScript>;\n\nconst ORDER_ENTRY_EST_LIQ_ACTIVE_WINDOW_MS = 3 * 1000;\n\nexport const useOrderEntryScript = (inputs: OrderEntryScriptInputs) => {\n /** Active user window for treating estLiqPrice as coming from an actively edited order. */\n const { symbol } = inputs;\n const [localOrderType, setLocalOrderType] = useLocalStorage(\n \"orderly-order-entry-order-type\",\n OrderType.LIMIT,\n );\n const [localOrderSide, setLocalOrderSide] = useLocalStorage(\n \"orderly-order-entry-order-side\",\n OrderSide.BUY,\n );\n\n const { notification } = useOrderlyContext();\n\n const orderFilledConfig = notification?.orderFilled;\n const defaultSoundValue =\n orderFilledConfig?.defaultSoundValue ??\n orderFilledConfig?.soundOptions?.[0]?.value;\n\n const [soundAlert, setSoundAlert] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n orderFilledConfig?.defaultOpen ?? false,\n );\n\n const [initialSoundValue] = useLocalStorage<string | null>(\n ORDERLY_ORDER_SOUND_OPTION_KEY,\n defaultSoundValue ?? null,\n );\n void initialSoundValue;\n\n const canTrade = useCanTrade();\n const { marginMode } = useMarginModeBySymbol(symbol);\n\n const {\n formattedOrder,\n setValue,\n setValues: setOrderValues,\n symbolInfo,\n symbolLeverage,\n ...state\n } = useOrderEntry(symbol, {\n initialOrder: {\n symbol,\n order_type: localOrderType,\n position_type: PositionType.PARTIAL,\n side: localOrderSide,\n margin_mode: marginMode,\n },\n });\n\n const [tpslSwitch, setTpslSwitch] = useLocalStorage(\n \"orderly-order-entry-tp_sl-switch\",\n false,\n );\n\n const { currentLeverage } = useMarginRatio();\n const ee = useEventEmitter();\n const triggerPriceInputRef = useRef<HTMLInputElement | null>(null);\n const priceInputRef = useRef<HTMLInputElement | null>(null);\n const activatedPriceInputRef = useRef<HTMLInputElement | null>(null);\n /** Tracks last time the user interacted with core order inputs (used to gate estLiqPrice emission). */\n const lastUserActiveTimeRef = useRef<number>(Date.now());\n\n const { bboStatus, bboType, setBBOType, onBBOChange, toggleBBO } =\n useBBOState({\n tpslSwitch,\n order_type: formattedOrder.order_type,\n order_type_ext: formattedOrder.order_type_ext,\n side: formattedOrder.side,\n setOrderValues,\n });\n\n const {\n currentFocusInput,\n lastScaledOrderPriceInput,\n lastQuantityInputType,\n onFocus,\n onBlur,\n } = useFocusAndBlur({\n base_tick: symbolInfo?.base_tick,\n order_type: formattedOrder.order_type,\n order_quantity: formattedOrder.order_quantity,\n setValue,\n });\n\n // cancel TP/SL\n const cancelTP_SL = () => {\n // if(formattedOrder.)\n setOrderValues({\n tp_trigger_price: \"\",\n sl_trigger_price: \"\",\n position_type: PositionType.PARTIAL,\n });\n };\n\n const enableTP_SL = () => {\n setOrderValues({\n order_type_ext: undefined,\n position_type: PositionType.PARTIAL,\n });\n };\n\n const setOrderValue = useMemoizedFn(\n (\n key: keyof typeof formattedOrder | string,\n value: unknown,\n options?: {\n shouldUpdateLastChangedField?: boolean;\n },\n ) => {\n if (key === \"order_type\") {\n setLocalOrderType(value as OrderType);\n }\n if (key === \"side\") {\n setLocalOrderSide(value as OrderSide);\n }\n\n if (\n (key === \"reduce_only\" && value) ||\n (key === \"order_type\" &&\n (value === OrderType.STOP_LIMIT || value === OrderType.STOP_MARKET))\n ) {\n // cancelTP_SL();\n\n const data: Record<string, unknown> = {\n tp_trigger_price: \"\",\n sl_trigger_price: \"\",\n [key]: value,\n };\n\n if (key === \"order_type\") {\n (data as Record<string, unknown>)[\"order_type_ext\"] = \"\";\n }\n\n setOrderValues(data as Partial<typeof formattedOrder>);\n\n return;\n }\n\n if (key === \"order_type\" && value !== OrderType.LIMIT) {\n const data: Record<string, unknown> = {\n level: undefined,\n order_type_ext: undefined,\n [key]: value,\n };\n\n setOrderValues(data as Partial<typeof formattedOrder>);\n\n return;\n }\n\n if (key === \"order_type\" && value === OrderType.SCALED) {\n const data: Record<string, unknown> = {\n distribution_type: DistributionType.FLAT,\n [key]: value,\n };\n setOrderValues(data as Partial<typeof formattedOrder>);\n return;\n }\n\n setValue(\n key as keyof typeof formattedOrder,\n value as (typeof formattedOrder)[keyof typeof formattedOrder],\n options,\n );\n },\n );\n\n const onTPSLSwitchChanged = (state: boolean) => {\n setTpslSwitch(state);\n if (state) {\n enableTP_SL();\n } else {\n cancelTP_SL();\n }\n };\n\n useEffect(() => {\n const updateOrderPrice = (price: string) => {\n setValue(\"order_price\", price);\n };\n ee.on(\"update:orderPrice\", updateOrderPrice);\n\n return () => {\n ee.off(\"update:orderPrice\", updateOrderPrice);\n };\n }, []);\n\n useEffect(() => {\n const focusInputElement = (target: HTMLInputElement | null) => {\n requestAnimationFrame(() => {\n target?.focus();\n });\n };\n\n // handle orderbook item click event\n const orderBookItemClickHandler = (item: number[]) => {\n const price = removeTrailingZeros(item[0]);\n const { order_type, order_type_ext } = formattedOrder;\n\n // handle trigger price input, focus on trigger price input\n if (\n currentFocusInput.current === InputType.TRIGGER_PRICE &&\n (order_type === OrderType.STOP_LIMIT ||\n order_type === OrderType.STOP_MARKET)\n ) {\n setValue(\"trigger_price\", price);\n focusInputElement(triggerPriceInputRef.current);\n return;\n }\n\n // handle bbo order, unselect bbo and set order price, focus on order price input\n if (isBBOOrder({ order_type, order_type_ext })) {\n setBBOType(undefined);\n\n setOrderValues({\n order_type_ext: undefined,\n level: undefined,\n });\n\n requestAnimationFrame(() => {\n // Since BBO will update the price when unselected, we should set order price in requestAnimationFrame\n // We can't call setValue directly here because it's inside a requestAnimationFrame, and the formattedOrder accessed inside setValue would be the old value\n // setValue(\"order_price\", price);\n ee.emit(\"update:orderPrice\", price);\n });\n\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle limit order and stop limit order, set order price and focus on order price input\n if (\n order_type === OrderType.STOP_LIMIT ||\n order_type === OrderType.LIMIT\n ) {\n setValue(\"order_price\", price);\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle stop market order, set trigger price and focus on trigger price input\n if (order_type === OrderType.STOP_MARKET) {\n setValue(\"trigger_price\", price);\n focusInputElement(triggerPriceInputRef.current);\n return;\n }\n\n // handle market order, set order type to limit\n if (order_type === OrderType.MARKET) {\n // unselect bbo\n setBBOType(undefined);\n\n // You can't call setValue twice here , the second value will override the first, so you need to combine them into a single setValues call\n setOrderValues({\n order_type: OrderType.LIMIT,\n order_price: price,\n });\n\n focusInputElement(priceInputRef.current);\n return;\n }\n\n if (\n order_type === OrderType.SCALED &&\n lastScaledOrderPriceInput.current\n ) {\n const field =\n lastScaledOrderPriceInput.current === InputType.START_PRICE\n ? \"start_price\"\n : \"end_price\";\n setValue(field, price);\n focusInputElement(priceInputRef.current);\n return;\n }\n\n // handle trailing stop order, set activated price and focus on activated price input\n if (order_type === OrderType.TRAILING_STOP) {\n setValue(\"activated_price\", price);\n focusInputElement(activatedPriceInputRef.current);\n return;\n }\n\n // default, set order price and focus on order price input\n setValue(\"order_price\", price);\n focusInputElement(priceInputRef.current);\n };\n\n ee.on(\"orderbook:item:click\", orderBookItemClickHandler);\n\n return () => {\n ee.off(\"orderbook:item:click\", orderBookItemClickHandler);\n };\n // Please do not modify this deps lightly, because `setValue` also relies on these state internally\n }, [formattedOrder, symbolInfo]);\n\n useEffect(() => {\n // after switching symbol, all the input number should be cleared (price, qty, TP/SL, etc)\n state.reset();\n state.resetMetaState();\n // reset last quantity input type\n lastQuantityInputType.current = InputType.NONE;\n }, [symbol]);\n\n // if scaled order, and distribution_type is not set, set it to flat\n useEffect(() => {\n if (\n formattedOrder.order_type === OrderType.SCALED &&\n !formattedOrder.distribution_type\n ) {\n setValue(\"distribution_type\", DistributionType.FLAT);\n }\n }, [formattedOrder.order_type, formattedOrder.distribution_type]);\n\n const currentLtv = useComputedLTV();\n const askAndBid = useAskAndBid();\n\n const fillMiddleValue = () => {\n if (bboStatus === BBOStatus.ON) {\n toggleBBO();\n }\n if (formattedOrder.order_type === OrderType.LIMIT) {\n const [bestAsk = 0, bestBid = 0] = askAndBid;\n const midPrice = new Decimal(safeNumber(bestAsk))\n .add(safeNumber(bestBid))\n .div(2)\n .toNumber();\n // 1. Since BBO will update the price when unselected, we should set order price in raf\n // 2. raf is mainly used to solve the timing problem caused by React state update, ensuring that the orderPrice is triggered after the state is fully updated to avoid accessing expired state values.\n requestAnimationFrame(() => {\n ee.emit(\"update:orderPrice\", midPrice);\n });\n }\n };\n\n const { priceInputContainerRef, priceInputContainerWidth } =\n usePriceInputContainer({\n order_type_ext: formattedOrder.order_type_ext,\n });\n\n const slPriceError = useTpslPriceChecker({\n slPrice: formattedOrder.sl_trigger_price,\n liqPrice: state.estLiqPrice,\n side: formattedOrder.side,\n currentPosition: state.currentPosition,\n orderQuantity: Number(formattedOrder.order_quantity),\n });\n\n useEffect(() => {\n if (formattedOrder.reduce_only) {\n setTpslSwitch(false);\n }\n }, [formattedOrder.reduce_only]);\n\n useEffect(() => {\n if (tpslSwitch) {\n setOrderValue(\"reduce_only\", false);\n }\n }, [tpslSwitch]);\n\n /** Track user activity via core order fields (price, quantity, side) to drive estLiqPrice active window. */\n useEffect(() => {\n lastUserActiveTimeRef.current = Date.now();\n }, [\n formattedOrder.order_price,\n formattedOrder.order_quantity,\n formattedOrder.side,\n ]);\n\n /**\n * Broadcast estimated liquidation price for TradingView chart liquidation line (avoids parent state / callback loops).\n * Includes a user-activity flag so downstream consumers can decide whether to treat this estLiqPrice as active.\n */\n useEffect(() => {\n const lastActive = lastUserActiveTimeRef.current;\n const now = Date.now();\n const isUserActive =\n now - lastActive <= ORDER_ENTRY_EST_LIQ_ACTIVE_WINDOW_MS;\n\n ee.emit(ORDER_ENTRY_EST_LIQ_PRICE_CHANGE, {\n symbol,\n estLiqPrice: state.estLiqPrice ?? null,\n isUserActive,\n });\n }, [ee, symbol, state.estLiqPrice]);\n useEffect(() => {\n setOrderValue(\"margin_mode\", marginMode);\n }, [marginMode]);\n\n return {\n ...state,\n slPriceError: slPriceError ?? undefined,\n side: formattedOrder.side as OrderSide,\n type: formattedOrder.order_type as OrderType,\n level: formattedOrder.level as OrderLevel,\n formattedOrder,\n setOrderValue,\n setOrderValues,\n // account-level leverage (for other consumers)\n currentLeverage,\n // symbol-level leverage & margin mode for this order entry\n symbolLeverage,\n marginMode,\n\n // cancelTP_SL,\n // enableTP_SL,\n tpslSwitch,\n setTpslSwitch: onTPSLSwitchChanged,\n symbolInfo,\n onFocus,\n onBlur,\n\n priceInputRef,\n priceInputContainerRef,\n priceInputContainerWidth,\n triggerPriceInputRef,\n activatedPriceInputRef,\n lastQuantityInputType,\n\n canTrade,\n bboStatus,\n bboType,\n onBBOChange,\n toggleBBO,\n currentLtv,\n fillMiddleValue,\n symbol,\n soundAlert,\n setSoundAlert,\n currentFocusInput,\n };\n};\n","import { injectable } from \"@orderly.network/ui\";\nimport { OrderEntry } from \"./orderEntry.ui\";\nimport type { OrderEntryProps } from \"./orderEntry.ui\";\n\n/**\n * OrderEntry component that can be intercepted by plugins.\n */\nexport const InjectableOrderEntry = injectable<OrderEntryProps>(\n OrderEntry,\n \"OrderEntry\",\n);\n","import React from \"react\";\n// import { OrderEntry } from \"./orderEntry.ui\";\nimport { InjectableOrderEntry } from \"./orderEntry.injectable\";\nimport {\n OrderEntryScriptInputs,\n useOrderEntryScript,\n} from \"./orderEntry.script\";\n\nexport const OrderEntryWidget: React.FC<\n OrderEntryScriptInputs & {\n containerRef?: React.RefObject<HTMLDivElement>;\n disableFeatures?: (\"slippageSetting\" | \"feesInfo\")[];\n }\n> = (props) => {\n const state = useOrderEntryScript(props);\n return (\n <InjectableOrderEntry\n {...state}\n containerRef={props.containerRef}\n disableFeatures={props.disableFeatures}\n />\n );\n};\n"]}
|