{"version":3,"sources":["../src/components/orders.widget.tsx","../src/components/orders.script.ts","../src/components/orders.ui.tsx","../src/components/orderList/orderList.ui.tsx","../src/utils/util.ts","../src/components/orderList/symbolProvider.tsx","../src/components/orderList/orderListContext.tsx","../src/components/orderList/tpslOrderRowContext.tsx","../src/components/orderList/desktop/useColumn.tsx","../src/components/orderList/desktop/quantity.tsx","../src/components/orderList/desktop/editOrder/confirmContent.tsx","../src/components/orderList/desktop/editOrder/innerInput.tsx","../src/components/orderList/desktop/price.tsx","../src/components/orderList/desktop/triggerPrice.tsx","../src/components/orderList/desktop/cancelBtn.tsx","../src/components/orderList/desktop/renew.tsx","../src/components/orderList/desktop/tpslTriggerPrice.tsx","../src/components/orderList/desktop/bracketOrderPrice.tsx","../src/components/orderList/desktop/tpslEdit.tsx","../src/components/orderList/desktop/tpslPrice.tsx","../src/components/shareButton/shareButton.ui.tsx","../src/components/shareButton/shareButton.script.tsx","../src/components/shareButton/shareButton.widget.tsx","../src/components/orderList/mobile/orderCell.ui.tsx","../src/components/orderList/mobile/items.tsx","../src/components/orderList/mobile/editBtn/editBtn.ui.tsx","../src/components/orderList/mobile/editBtn/editBtn.script.tsx","../src/components/orderList/mobile/editSheet/editSheet.ui.tsx","../src/components/orderList/mobile/editSheet/editDialogContent.tsx","../src/components/orderList/mobile/editSheet/editSheet.script.tsx","../src/components/orderList/mobile/editSheet/editSheet.widget.tsx","../src/components/orderList/mobile/editBtn/editBtn.widget.tsx","../src/components/orderList/mobile/cancelBtn/cancelBtn.ui.tsx","../src/components/orderList/mobile/cancelBtn/cancelBtn.script.tsx","../src/components/orderList/mobile/cancelBtn/cancelBtn.widget.tsx","../src/components/orderList/mobile/bracketOrderPrice/bracketOrderPrice.ui.tsx","../src/components/orderList/mobile/bracketOrderPrice/bracketOrderPrice.script.tsx","../src/components/orderList/mobile/bracketOrderPrice/bracketOrderPrice.widget.tsx","../src/components/orderList/mobile/orderCell.script.tsx","../src/components/orderList/mobile/orderCell.widget.tsx","../src/components/orderList/orderList.widget.tsx","../src/components/orderList/orderList.script.tsx","../src/components/orderList/useFormatOrderHistory.ts"],"names":["forwardRef","useImperativeHandle","useRef","useOrdersScript","props","current","pnlNotionalDecimalPrecision","sharePnLConfig","orderListRef","TabPanel","Tabs","OrderStatus","Flex","ListView","Button","Grid","Picker","DataFilter","cn","TableFeatures","AuthGuardDataTable","utils","OrderSide","AlgoOrderRootType","AlgoOrderType","OrderType","i18n","upperCaseFirstLetter","str","parseBadgesFor","record","orderType","algoType","list","types","type","tpOrder","order","slOrder","grayCell","findBracketTPSLOrder","innerOrder","item","calcBracketRoiAndPnL","defaultCallback","quantity","tpPnL","slPnL","tpRoi","slRoi","createContext","useContext","useSymbolsInfo","jsx","SymbolContext","useSymbolContext","SymbolProvider","symbolInfo","useCallback","modal","getMinNotional","useTranslation","Fragment","OrderListContext","useOrderListContext","OrderListProvider","cancelOrder","editOrder","cancelAlgoOrder","editAlgoOrder","t","onCancelOrder","onEditOrder","position","isHidden","orderEntry","checkMinNotional","symbol","price","qty","min_notional","minNotional","useEffect","useMemo","useState","unstable_serialize","useAccount","useMutation","useSWRConfig","TPSLOrderRowContext","useTPSLOrderRowContext","TPSLOrderRowProvider","quote_dp","setPosition","doDeleteOrder","doUpdateOrder","config","state","positionKey","onUpdateOrder","params","getRelatedPosition","p","sl_trigger_price","tp_trigger_price","calcTPSLPnL","avgOpenPrice","Text","commifyOptional","Decimal","Badge","Popover","toast","Slider","PopoverTrigger","PopoverRoot","PopoverContent","CloseIcon","ThrottledButton","commify","Trans","jsxs","ConfirmContent","base","value","cancelPopover","isSubmitting","onConfirm","common","CheckIcon","Input","inputFormatter","Tooltip","InnerInput","inputRef","dp","setValue","setEditing","error","handleKeyDown","onClick","onClose","onFocus","onBlur","hintInfo","input","length","open","e","useMaxQty","OrderQuantity","otherOrderQuantity","reduce_only","originSetQuantity","editing","setQuantity","setOpen","setError","onUpdateTPSLOrder","base_dp","base_tick","maxQty","positionQty","closePopover","setIsSubmitting","clickHandler","notionalText","event","order_price","rest","future","result","err","componentRef","quantitySliderRef","handleClickOutside","trigger","NormalState","EditState","executed","confirmOpen","side","sliderValue","setSliderValue","formatQuantity","_qty","values","Buttons","index","useSymbolPriceRange","Price","setPrice","isAlgoOrder","isStopMarket","rangeInfo","order_id","data","TriggerPrice","isBracketOrder","quote_max","quote_min","CancelButton","isLoading","setIsLoading","res","useConfig","Renew","doCreateOrder","reset","isMutating","brokerId","onSubmit","OrderTriggerPrice","TPSLTriggerPrice","direction","pnl","msgs","TriggerPriceItem","child","children","content","entryPrice","orderSide","label","BracketOrderPrice","roi","PositionTPSLPopover","TP_SLEditButton","TPSLOrderPrice","useTPSLOrderPrice","tpTriggerPrice","slTriggerPrice","ShareIcon","ShareButton","useReferralInfo","useSymbolLeverage","useShareButtonScript","modalId","iconSize","getFirstRefCode","refCode","leverage","ShareButtonWidget","SharePnLDialogId","format","useOrderColumn","_type","onSymbolChange","instrument","fillAndQuantity","avgOpen","tpslTriggerPrice","realizedPnL","estTotal","fee","status","reduceOnly","hidden","cancelBtn","orderTime","triggerPrice","bracketOrderPrice","pendingTabCancelBtn","tpslPrice","tpslNotional","tpslAction","avgPrice","option","r1","r2","badges","displayBadges","showGray","a","b","aQuantity","bQuantity","compareNumbers","callback","info","getTPSLTriggerPrice","aTotal","bTotal","estTotalValue","_value","formatValue","date","statusMap","_","isPending","Divider","Statistic","SharePnLBottomSheetId","SymbolToken","isBuy","OrderTypeView","OrderTime","OrderState","Qty","isEntirePosition","Filled","EstTotal","MarkPrice","LimitPrice","TPTrigger","MobileTooltip","SLTrigger","TPPrice","SLPrice","TPSLQuantity","AvgPrice","OrderPrice","RealizedPnL","classNames","EditBtn","SimpleDialog","Checkbox","ConfirmDialogContent","useOrderEntryFormErrorMsg","EditSheet","parseErrorMsg","orderQuantityErrorMsg","orderPriceErrorMsg","triggerPriceErrorMsg","percentages","baseTick","formatQty","useLocalStorage","useOrderEntity","useThrottledCallback","useModal","useEditSheetScript","autoCheckInput","hide","dialogOpen","setDialogOpen","isMarketOrder","submitting","setSubmitting","orderConfirm","setOrderConfirm","formattedOrder","markPrice","errors","validate","useOrderEntry","onSheetConfirm","onCloseDialog","onDialogConfirm","isChanged","setOrderValue","key","setFormattedOrder","_maxQty","oldValue","EditSheetWidget","PositionTPSLSheet","useEditBtnScript","onShowEditSheet","EditBtnWidget","CancelBtn","useCancelBtnScript","CancelBtnWidget","useBracketOrderPriceScript","BracketOrderPriceWidget","OrderCell","Header","Body","Btns","itemsWithType","useOrderCellScript","OrderCellWidget","className","DesktopOrderList","columns","CancelAll","table","MobileOrderList","useOrderStream","useDataTap","usePagination","differenceInDays","setHours","subDays","useFormatOrderHistory","_data","element","j","useOrderListScript","ordersStatus","enableLoadMore","filterConfig","symbolsInfo","manualPagination","defaultPageSize","page","pageSize","setPage","pagination","parsePagination","orderStatus","ordersSide","dateRange","filterItems","onFilter","useFilter","includes","excludes","tableInstance","filename","loadMore","updateOrder","updateAlgoOrder","cancelAllOrders","cancelAllTPSLOrders","meta","refresh","localPageSizeKey","typePageSize","setTypePageSize","onCancelAll","title","formattedData","dataSource","_pagination","setOrderStatus","setOrdersSide","defaultRange","formatDatePickerRange","offsetEndOfDay","setDateRange","filter","sideFilter","dateRangeFilter","statusFilter","offsetStartOfDay","newDate","DesktopOrderListWidget","ref","testIds","MobileOrderListWidget","Orders","commonProps","TabType","OrdersWidget"],"mappings":"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","sourcesContent":["import { forwardRef } from \"react\";\nimport { useOrdersScript } from \"./orders.script\";\nimport { Orders } from \"./orders.ui\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\nimport { OrderListInstance } from \"./orderList/orderList.script\";\n\nexport enum TabType {\n  all = \"all\",\n  pending = \"pending\",\n  tp_sl = \"tp_sl\",\n  filled = \"filled\",\n  cancelled = \"cancelled\",\n  rejected = \"rejected\",\n  orderHistory = \"orderHistory\",\n}\n\nexport type OrdersWidgetProps = {\n  current?: TabType;\n  pnlNotionalDecimalPrecision?: number;\n  sharePnLConfig?: SharePnLConfig;\n};\n\nexport const OrdersWidget = forwardRef<OrderListInstance, OrdersWidgetProps>(\n  (props, ref) => {\n    const state = useOrdersScript({ ...props, ref });\n\n    return <Orders {...state} />;\n  }\n);\n","import { ForwardedRef, useImperativeHandle, useRef } from \"react\";\nimport { TabType } from \"./orders.widget\";\nimport { OrderListInstance } from \"./orderList/orderList.script\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\n\ntype UseOrdersScriptOptions = {\n  current?: TabType;\n  pnlNotionalDecimalPrecision?: number;\n  ref: ForwardedRef<OrderListInstance>;\n  sharePnLConfig?: SharePnLConfig\n};\n\nexport const useOrdersScript = (props: UseOrdersScriptOptions) => {\n  const { current, pnlNotionalDecimalPrecision, sharePnLConfig } = props;\n\n  const orderListRef = useRef<OrderListInstance>(null);\n\n  useImperativeHandle(props.ref, () => ({\n    download: () => {\n      orderListRef.current?.download?.();\n    },\n  }));\n\n  return {\n    current,\n    pnlNotionalDecimalPrecision,\n    orderListRef,\n    sharePnLConfig,\n  };\n};\n\nexport type OrdersBuilderState = ReturnType<typeof useOrdersScript>;\n","import { TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { OrdersBuilderState } from \"./orders.script\";\nimport { TabType } from \"./orders.widget\";\nimport { DesktopOrderListWidget } from \"./orderList\";\nimport { DesktopOrderListWidgetProps } from \"./orderList/orderList.widget\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Orders = (props: OrdersBuilderState) => {\n  const { t } = useTranslation();\n  const commonProps: Partial<DesktopOrderListWidgetProps> = {\n    pnlNotionalDecimalPrecision: props.pnlNotionalDecimalPrecision,\n  };\n\n  return (\n    <Tabs\n      defaultValue={props.current || TabType.all}\n      variant=\"contained\"\n      className=\"oui-h-full\"\n      classNames={{\n        tabsContent: \"oui-h-[calc(100%_-_28px)]\",\n      }}\n    >\n      <TabPanel value={TabType.all} title={t(\"common.all\")}>\n        <DesktopOrderListWidget\n          ref={props.orderListRef}\n          type={TabType.all}\n          pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n          sharePnLConfig={props.sharePnLConfig}\n          {...commonProps}\n        />\n      </TabPanel>\n      <TabPanel value={TabType.pending} title={t(\"orders.status.pending\")}>\n        <DesktopOrderListWidget\n          ref={props.orderListRef}\n          type={TabType.pending}\n          ordersStatus={OrderStatus.INCOMPLETE}\n          {...commonProps}\n        />\n      </TabPanel>\n      <TabPanel value={TabType.tp_sl} title={t(\"common.tpsl\")}>\n        <DesktopOrderListWidget\n          ref={props.orderListRef}\n          type={TabType.tp_sl}\n          ordersStatus={OrderStatus.INCOMPLETE}\n          {...commonProps}\n        />\n      </TabPanel>\n      <TabPanel value={TabType.filled} title={t(\"orders.status.filled\")}>\n        <DesktopOrderListWidget\n          ref={props.orderListRef}\n          type={TabType.filled}\n          ordersStatus={OrderStatus.FILLED}\n          pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n          sharePnLConfig={props.sharePnLConfig}\n          {...commonProps}\n        />\n      </TabPanel>\n      <TabPanel value={TabType.cancelled} title={t(\"orders.status.canceled\")}>\n        <DesktopOrderListWidget\n          ref={props.orderListRef}\n          type={TabType.cancelled}\n          ordersStatus={OrderStatus.CANCELLED}\n          {...commonProps}\n        />\n      </TabPanel>\n      <TabPanel value={TabType.rejected} title={t(\"orders.status.rejected\")}>\n        <DesktopOrderListWidget\n          ref={props.orderListRef}\n          type={TabType.rejected}\n          ordersStatus={OrderStatus.REJECTED}\n          {...commonProps}\n        />\n      </TabPanel>\n      {/* <TabPanel value={TabType.orderHistory} title={t(\"orders.orderHistory\")}>\n        <DesktopOrderListWidget\n          type={TabType.orderHistory}\n          {...commonProps}\n        />\n      </TabPanel> */}\n    </Tabs>\n  );\n};\n// ----------------- Orders ui component end -----------------\n","import { FC } from \"react\";\nimport {\n  Flex,\n  ListView,\n  Button,\n  Grid,\n  Picker,\n  DataFilter,\n  cn,\n  TableFeatures,\n} from \"@orderly.network/ui\";\nimport { OrdersBuilderState } from \"./orderList.script\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { grayCell } from \"../../utils/util\";\nimport { SymbolProvider } from \"./symbolProvider\";\nimport { OrderListProvider } from \"./orderListContext\";\nimport { TabType } from \"../orders.widget\";\nimport { TPSLOrderRowProvider } from \"./tpslOrderRowContext\";\nimport { useOrderColumn } from \"./desktop/useColumn\";\nimport { OrderCellWidget } from \"./mobile\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const DesktopOrderList: FC<\n  OrdersBuilderState & {\n    testIds?: {\n      tableBody?: string;\n    };\n  }\n> = (props) => {\n  const { sharePnLConfig, ...rest } = props;\n  const columns = useOrderColumn({\n    _type: props.type,\n    onSymbolChange: props.onSymbolChange,\n    pnlNotionalDecimalPrecision: props.pnlNotionalDecimalPrecision,\n    sharePnLConfig,\n    symbolsInfo: props.symbolsInfo,\n  });\n  return (\n    <OrderListProvider\n      cancelOrder={props.cancelOrder}\n      editOrder={props.updateOrder}\n      cancelAlgoOrder={props.cancelAlgoOrder}\n      editAlgoOrder={props.updateAlgoOrder}\n      // cancelTPSLOrder={props.cancelTPSLOrder}\n    >\n      <Flex direction=\"column\" width=\"100%\" height=\"100%\" itemAlign=\"start\">\n        {/* <Divider className=\"oui-w-full\" /> */}\n        {props.filterItems.length > 0 && (\n          <DataFilter\n            items={props.filterItems}\n            onFilter={(value: any) => {\n              props.onFilter(value);\n            }}\n            // className=\"oui-px-3\"\n            trailing={\n              [TabType.pending, TabType.tp_sl].includes(props.type) && (\n                <CancelAll {...props} />\n              )\n            }\n          />\n        )}\n        <AuthGuardDataTable\n          columns={columns}\n          loading={props.isLoading}\n          dataSource={props.dataSource}\n          bordered\n          ignoreLoadingCheck={true}\n          testIds={{\n            body: props.testIds?.tableBody,\n          }}\n          classNames={{\n            header: \"oui-h-[38px]\",\n            root: \"oui-items-start !oui-h-[calc(100%_-_49px)]\",\n          }}\n          onRow={(record, index) => {\n            return {\n              className: cn(\n                \"oui-h-[48px]\",\n                grayCell(record)\n                  ? \"oui-text-base-contrast-20\"\n                  : \"oui-text-base-contrast-80\"\n              ),\n            };\n          }}\n          generatedRowKey={(record, index) =>\n            `${props.type}${index}${\n              record.order_id || record.algo_order_id\n            }_index${index}`\n          }\n          renderRowContainer={(record: any, index, children) => {\n            if (\n              props.type === TabType.tp_sl ||\n              props.type === TabType.pending\n            ) {\n              children = (\n                <TPSLOrderRowProvider order={record}>\n                  {children}\n                </TPSLOrderRowProvider>\n              );\n            }\n\n            return (\n              <SymbolProvider symbol={record.symbol}>{children}</SymbolProvider>\n            );\n          }}\n          pagination={props.pagination}\n          manualPagination={props.manualPagination}\n          features={[TableFeatures.DownloadFeature]}\n          getTableInstance={(table) => {\n            props.tableInstance.current = table;\n          }}\n        />\n      </Flex>\n    </OrderListProvider>\n  );\n};\n\nexport const MobileOrderList: FC<\n  OrdersBuilderState & {\n    classNames?: {\n      root?: string;\n      cell?: string;\n      content?: string;\n    };\n    showFilter?: boolean;\n  }\n> = (props) => {\n  const { t } = useTranslation();\n\n  return (\n    <OrderListProvider\n      cancelOrder={props.cancelOrder}\n      editOrder={props.updateOrder}\n      cancelAlgoOrder={props.cancelAlgoOrder}\n      editAlgoOrder={props.updateAlgoOrder}\n      // cancelTPSLOrder={props.cancelTPSLOrder}\n    >\n      <Grid\n        cols={1}\n        rows={2}\n        className=\"oui-grid-rows-[auto,1fr] oui-w-full\"\n        gap={2}\n      >\n        {/* <Filter\n          items={props.filterItems}\n          onFilter={(value: any) => {\n            props.onFilter(value);\n          }}\n          className=\"oui-px-3\"\n          \n        /> */}\n\n        {props.showFilter ? (\n          <Flex gap={2} p={2} className=\"oui-bg-base-9 oui-rounded-b-xl\">\n            {props.filterItems.map((item) => {\n              // not support range type\n              if (item.type !== \"select\") return <></>;\n              return (\n                <Picker\n                  options={item.options}\n                  size={\"sm\"}\n                  value={item.value}\n                  className=\"oui-text-2xs oui-text-base-contrast-54 \"\n                  placeholder={\n                    item.name === \"side\"\n                      ? t(\"common.side.all\")\n                      : item.name === \"status\"\n                      ? t(\"common.status.all\")\n                      : \"\"\n                  }\n                  onValueChange={(value) => {\n                    //\n                    props.onFilter?.({ name: item.name, value: value });\n                  }}\n                />\n              );\n            })}\n          </Flex>\n        ) : (\n          <div></div>\n        )}\n        <ListView\n          className={props.classNames?.root}\n          contentClassName={props.classNames?.content}\n          dataSource={props.dataSource}\n          loadMore={props.loadMore}\n          isLoading={props.isLoading}\n          renderItem={(item, index) => {\n            let children = (\n              <OrderCellWidget\n                item={item}\n                index={index}\n                className={props.classNames?.cell}\n                type={props.type}\n                onSymbolChange={props.onSymbolChange}\n                sharePnLConfig={props.sharePnLConfig}\n              />\n            );\n            if ([TabType.tp_sl, TabType.pending].includes(props.type)) {\n              children = (\n                <TPSLOrderRowProvider order={item}>\n                  {children}\n                </TPSLOrderRowProvider>\n              );\n            }\n            return (\n              <SymbolProvider symbol={item.symbol}>{children}</SymbolProvider>\n            );\n          }}\n        />\n      </Grid>\n    </OrderListProvider>\n  );\n};\n\nconst CancelAll: FC<OrdersBuilderState> = (props) => {\n  const { t } = useTranslation();\n\n  return (\n    <Button\n      variant=\"outlined\"\n      color=\"secondary\"\n      size=\"xs\"\n      disabled={(props.dataSource?.length ?? 0) == 0}\n      className=\"disabled:oui-bg-transport\"\n      onClick={(e) => props.onCancelAll()}\n      data-testid={`oui-testid-dataList-${props.type.toLowerCase()}-cancelAll-button`}\n    >\n      {t(\"orders.cancelAll\")}\n    </Button>\n  );\n};\n","import { utils } from \"@orderly.network/hooks\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport {\n  AlgoOrderRootType,\n  AlgoOrderType,\n  API,\n  OrderStatus,\n  OrderType,\n} from \"@orderly.network/types\";\nimport { i18n } from \"@orderly.network/i18n\";\n\nexport const upperCaseFirstLetter = (str: string) => {\n  if (str === undefined) return str;\n  if (str.length === 0) return str;\n  if (str.length === 1) return str.charAt(0).toUpperCase();\n  return str.charAt(0).toUpperCase() + str.toLowerCase().slice(1);\n};\n\n/**\n * order_type: LIMIT、MARKET、CLOSE_POSITION\n * algo_type: STOP、TPSL、positional_TPSL、BRACKET\n */\nexport function parseBadgesFor(record: any): undefined | string[] {\n  const orderType = record.type;\n  const algoType = record.algo_type;\n  if (typeof orderType !== \"undefined\") {\n    const list: string[] = [];\n\n    if (!!record.parent_algo_type) {\n      if (algoType === AlgoOrderType.STOP_LOSS) {\n        const types =\n          orderType === OrderType.CLOSE_POSITION\n            ? [i18n.t(\"common.position\"), i18n.t(\"tpsl.sl\")]\n            : [i18n.t(\"tpsl.sl\")];\n        list.push(...types);\n      }\n\n      if (algoType === AlgoOrderType.TAKE_PROFIT) {\n        const types =\n          orderType === OrderType.CLOSE_POSITION\n            ? [i18n.t(\"common.position\"), i18n.t(\"tpsl.tp\")]\n            : [i18n.t(\"tpsl.tp\")];\n        list.push(...types);\n      }\n\n      return list;\n    }\n\n    const type =\n      typeof orderType === \"string\" ? orderType.replace(\"_ORDER\", \"\") : \"\";\n\n    // bbo(ask, bid) order as a limit type\n    if ([OrderType.ASK, OrderType.BID].includes(orderType)) {\n      return [i18n.t(\"orderEntry.orderType.limit\")];\n    }\n\n    if (\n      record.algo_order_id === undefined ||\n      (record.algo_order_id && algoType === \"BRACKET\")\n    ) {\n      const typeMap = {\n        [OrderType.LIMIT]: i18n.t(\"orderEntry.orderType.limit\"),\n        [OrderType.MARKET]: i18n.t(\"orderEntry.orderType.market\"),\n        [OrderType.POST_ONLY]: i18n.t(\"orderEntry.orderType.postOnly\"),\n        [OrderType.IOC]: i18n.t(\"orderEntry.orderType.ioc\"),\n        [OrderType.FOK]: i18n.t(\"orderEntry.orderType.fok\"),\n      };\n\n      return [\n        typeMap[type as keyof typeof typeMap] || upperCaseFirstLetter(type),\n      ];\n    }\n\n    // stop limit, stop market\n    if (type) {\n      const typeMap = {\n        [OrderType.LIMIT]: i18n.t(\"orderEntry.orderType.stopLimit\"),\n        [OrderType.MARKET]: i18n.t(\"orderEntry.orderType.stopMarket\"),\n      };\n      return [typeMap[type as keyof typeof typeMap] || type];\n    }\n  }\n\n  if (typeof algoType !== \"undefined\") {\n    const list: string[] = [];\n\n    if (algoType === AlgoOrderRootType.POSITIONAL_TP_SL) {\n      list.push(i18n.t(\"common.position\"));\n    }\n\n    const tpOrder = record?.child_orders?.find(\n      (order: any) =>\n        order.algo_type === AlgoOrderType.TAKE_PROFIT && !!order.trigger_price\n    );\n\n    const slOrder = record?.child_orders?.find(\n      (order: any) =>\n        order.algo_type === AlgoOrderType.STOP_LOSS && !!order.trigger_price\n    );\n\n    if (tpOrder || slOrder) {\n      list.push(\n        tpOrder && slOrder\n          ? i18n.t(\"common.tpsl\")\n          : tpOrder\n          ? i18n.t(\"tpsl.tp\")\n          : i18n.t(\"tpsl.sl\")\n      );\n    }\n\n    return list;\n  }\n\n  return undefined;\n}\n\nexport function grayCell(record: any): boolean {\n  return (\n    (record as API.Order).status === OrderStatus.CANCELLED ||\n    (record as API.AlgoOrder).algo_status === OrderStatus.CANCELLED\n  );\n}\n\nfunction findBracketTPSLOrder(order: API.AlgoOrderExt) {\n  if (order.algo_type !== AlgoOrderRootType.BRACKET) {\n    return {\n      tpOrder: undefined,\n      slOrder: undefined,\n    };\n  }\n\n  const innerOrder = order.child_orders?.[0];\n  if (!innerOrder)\n    return {\n      tpOrder: undefined,\n      slOrder: undefined,\n    };\n\n  const tpOrder = innerOrder?.child_orders?.find(\n    (item) => item.algo_type === AlgoOrderType.TAKE_PROFIT\n  );\n\n  const slOrder = innerOrder?.child_orders?.find(\n    (item) => item.algo_type === AlgoOrderType.STOP_LOSS\n  );\n\n  return {\n    tpOrder,\n    slOrder,\n  };\n}\n\nexport function calcBracketRoiAndPnL(order: API.AlgoOrderExt) {\n  const defaultCallback = {\n    pnl: {\n      tpPnL: undefined,\n      slPnL: undefined,\n    },\n    roi: {\n      tpRoi: undefined,\n      slRoi: undefined,\n    },\n  };\n  const { tpOrder, slOrder } = findBracketTPSLOrder(order);\n  if (!tpOrder && !slOrder) return defaultCallback;\n\n  if (typeof order.price === undefined || !order.price) return defaultCallback;\n\n  const quantity =\n    order.side === OrderSide.BUY ? order.quantity : order.quantity * -1;\n\n  const tpPnL =\n    tpOrder?.trigger_price &&\n    utils.priceToPnl({\n      qty: quantity,\n      price: tpOrder?.trigger_price,\n      entryPrice: order.price,\n      // @ts-ignore\n      orderSide: order.side,\n      // @ts-ignore\n      orderType: tpOrder.algo_type,\n    });\n  const slPnL =\n    slOrder?.trigger_price &&\n    utils.priceToPnl({\n      qty: quantity,\n      // trigger price\n      price: slOrder?.trigger_price,\n      //\n      entryPrice: order.price,\n      // @ts-ignore\n      orderSide: order.side,\n      // @ts-ignore\n      orderType: slOrder.algo_type,\n    });\n\n  const tpRoi = tpPnL\n    ? utils.calcTPSL_ROI({\n        pnl: tpPnL,\n        qty: order.quantity,\n        price: order.price,\n      })\n    : undefined;\n  const slRoi = slPnL\n    ? utils.calcTPSL_ROI({\n        pnl: slPnL,\n        qty: order.quantity,\n        price: order.price,\n      })\n    : undefined;\n\n  return {\n    pnl: {\n      tpPnL,\n      slPnL,\n    },\n    roi: {\n      tpRoi,\n      slRoi,\n    },\n  };\n}\n","import React, {\n  FC,\n  PropsWithChildren,\n  createContext,\n  useMemo,\n  useContext,\n} from \"react\";\nimport { useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\n\ninterface SymbolContextState {\n  base_dp: number;\n  quote_dp: number;\n  base_tick: number;\n  quote_tick: number;\n  base: string;\n  quote: string;\n  symbol: string;\n  origin: API.SymbolExt;\n  quote_min: number;\n  quote_max: number;\n}\n\nexport const SymbolContext = createContext({} as SymbolContextState);\n\nexport const useSymbolContext = () => {\n  return useContext(SymbolContext);\n};\n\ninterface FormatterProviderProps {\n  symbol: string;\n}\n\nexport const SymbolProvider: FC<PropsWithChildren<FormatterProviderProps>> = (\n  props\n) => {\n  const symbolInfo = useSymbolsInfo()[props.symbol];\n\n  return (\n    <SymbolContext.Provider\n      value={{\n        base_dp: symbolInfo(\"base_dp\"),\n        quote_dp: symbolInfo(\"quote_dp\"),\n        base_tick: symbolInfo(\"base_tick\"),\n        quote_tick: symbolInfo(\"quote_tick\"),\n        base: symbolInfo(\"base\"),\n        quote: symbolInfo(\"quote\"),\n        symbol: props.symbol,\n        origin: symbolInfo(),\n        quote_max: symbolInfo(\"quote_max\"),\n        quote_min: symbolInfo(\"quote_min\")\n      }}\n    >\n      {props.children}\n    </SymbolContext.Provider>\n  );\n};\n","import {\n  FC,\n  PropsWithChildren,\n  createContext,\n  useCallback,\n  useContext,\n} from \"react\";\nimport { modal } from \"@orderly.network/ui\";\nimport { API, OrderEntity } from \"@orderly.network/types\";\nimport { getMinNotional, useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nexport interface OrderListContextState {\n  onCancelOrder: (order: API.Order | API.AlgoOrder) => Promise<any>;\n  onEditOrder: (\n    order: API.Order | API.AlgoOrder,\n    position?: API.Position\n  ) => Promise<any>;\n  editOrder: (id: string, order: OrderEntity) => Promise<any>;\n  editAlgoOrder: (id: string, order: OrderEntity) => Promise<any>;\n  checkMinNotional: (\n    symbol: string,\n    price?: string | number,\n    qty?: string | number\n  ) => string | undefined;\n}\n\nexport const OrderListContext = createContext<OrderListContextState>(\n  {} as OrderListContextState\n);\n\nexport const useOrderListContext = () => {\n  return useContext(OrderListContext);\n};\n\nexport interface OrderListProviderProps {\n  cancelOrder: (orderId: number, symbol: string) => Promise<any>;\n  editOrder: (orderId: string, order: OrderEntity) => Promise<any>;\n  cancelAlgoOrder: (orderId: number, symbol: string) => Promise<any>;\n  editAlgoOrder: (orderId: string, order: OrderEntity) => Promise<any>;\n}\n\nexport const OrderListProvider: FC<\n  PropsWithChildren<OrderListProviderProps>\n> = (props) => {\n  const {\n    cancelOrder,\n    editOrder,\n    cancelAlgoOrder,\n    editAlgoOrder,\n    // cancelTPSLOrder,\n  } = props;\n  const { t } = useTranslation();\n  const symbolInfo = useSymbolsInfo();\n  const onCancelOrder = useCallback(\n    async (order: API.Order | API.AlgoOrder) => {\n      if (order.algo_order_id !== undefined) {\n        if (\n          \"root_algo_order_id\" in order &&\n          order.root_algo_order_id !== order.algo_order_id\n        ) {\n          return cancelAlgoOrder(order.root_algo_order_id, order.symbol);\n        }\n\n        return cancelAlgoOrder(order.algo_order_id, order.symbol).then(\n          () => {}\n        );\n      }\n      // @ts-ignore\n      return cancelOrder(order.order_id, order.symbol).then(() => {\n        // toast.success(\"Order canceled successfully\");\n      });\n    },\n    []\n  );\n\n  const onEditOrder = useCallback(\n    async (order: API.Order | API.AlgoOrder, position?: API.Position) => {\n      // @ts-ignore\n      let isHidden =\n        order.visible_quantity !== undefined\n          ? order.visible_quantity === 0\n          : (order as any).visible !== undefined\n          ? (order as any).visible === 0\n          : false;\n\n      const orderEntry = await modal.sheet({\n        title: t(\"orders.editOrder\"),\n        classNames: {\n          content: \"oui-edit-order-sheet-content\",\n        },\n        content: (\n          // <OrderEditFormSheet\n          //   order={order}\n          //   position={position}\n          //   editOrder={(value: OrderEntity) => {\n          //     /// check order has order_tag, if exits add order_tag to request body\n          //     if (\n          //       typeof order.order_tag !== undefined &&\n          //       order.reduce_only !== true\n          //     ) {\n          //       value = { ...value, order_tag: order.order_tag };\n          //     }\n          //     if (order.algo_order_id !== undefined) {\n          //       return editAlgoOrder(order.algo_order_id.toString(), {\n          //         ...value,\n          //       });\n          //     }\n          //     return editOrder((order as any).order_id.toString(), {\n          //       ...value,\n          //       ...(isHidden ? { visible_quantity: 0 } : {}),\n          //     });\n          //   }}\n          // />\n          <>Content</>\n        ),\n      });\n    },\n    [t]\n  );\n\n  const checkMinNotional = useCallback(\n    (symbol: string, price?: string | number, qty?: string | number) => {\n      const { min_notional } = symbolInfo[symbol]();\n      const minNotional = getMinNotional({ price, qty, min_notional });\n      if (minNotional !== undefined) {\n        return t(\"orderEntry.total.error.min\", { value: minNotional });\n      }\n    },\n    [symbolInfo, t]\n  );\n\n  return (\n    <OrderListContext.Provider\n      value={{\n        onCancelOrder,\n        onEditOrder,\n        editOrder,\n        editAlgoOrder,\n        checkMinNotional,\n      }}\n    >\n      {props.children}\n    </OrderListContext.Provider>\n  );\n};\n","import {\n  createContext,\n  FC,\n  PropsWithChildren,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport {\n  unstable_serialize,\n  useAccount,\n  useMutation,\n  useSWRConfig,\n  utils,\n} from \"@orderly.network/hooks\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { useSymbolContext } from \"./symbolProvider\";\n\nexport type TPSLOrderRowContextState = {\n  order: API.AlgoOrderExt;\n  tp_trigger_price?: number;\n  sl_trigger_price?: number;\n  tpPnL?: number;\n  slPnL?: number;\n\n  onCancelOrder: (order: API.AlgoOrderExt) => Promise<void>;\n  onUpdateOrder: (order: API.AlgoOrderExt, params: any) => Promise<void>;\n\n  getRelatedPosition: (symbol: string) => API.PositionTPSLExt | undefined;\n\n  position?: API.PositionTPSLExt;\n};\n\nexport const TPSLOrderRowContext = createContext(\n  {} as TPSLOrderRowContextState\n);\n\nexport const useTPSLOrderRowContext = () => {\n  return useContext(TPSLOrderRowContext);\n};\n\nexport const TPSLOrderRowProvider: FC<\n  PropsWithChildren<{\n    order: API.AlgoOrderExt;\n  }>\n> = (props) => {\n  const { quote_dp } = useSymbolContext();\n  const [position, setPosition] = useState<API.PositionTPSLExt>();\n\n  const [doDeleteOrder] = useMutation(\"/v1/algo/order\", \"DELETE\");\n  const [doUpdateOrder] = useMutation(\"/v1/algo/order\", \"PUT\");\n\n  const config = useSWRConfig();\n  const { state } = useAccount();\n\n  const positionKey = useMemo(() => {\n    return unstable_serialize(() => [\"/v1/positions\", state.accountId]);\n  }, [state.accountId]);\n\n  const onCancelOrder = async (order: API.AlgoOrderExt) => {\n    return doDeleteOrder(null, {\n      order_id: order.algo_order_id,\n      symbol: order.symbol,\n    });\n  };\n\n  const onUpdateOrder = async (order: API.AlgoOrderExt, params: any) => {\n    console.log(\"onUpdateOrder\", order, position);\n    return doUpdateOrder({\n      order_id: order.algo_order_id,\n      child_orders: order.child_orders.map((order) => ({\n        order_id: order.algo_order_id,\n        quantity: params.order_quantity,\n      })),\n    });\n  };\n\n  const getRelatedPosition = (\n    symbol: string\n  ): API.PositionTPSLExt | undefined => {\n    const positions = config.cache.get(positionKey);\n\n    return positions?.data.rows.find(\n      (p: API.PositionTPSLExt) => p.symbol === symbol\n    );\n  };\n\n  // const { sl_trigger_price, tp_trigger_price } = useMemo(() => {\n  //   if (\n  //     !(\"algo_type\" in props.order) ||\n  //     !Array.isArray(props.order.child_orders)\n  //   ) {\n  //     return {};\n  //   }\n  //   return utils.findTPSLFromOrder(props.order);\n  // }, [props.order]);\n\n  const { sl_trigger_price, tp_trigger_price, tpPnL, slPnL } = calcTPSLPnL({\n    order: props.order,\n    position,\n    quote_dp,\n  });\n\n  useEffect(() => {\n    if (\"algo_type\" in props.order || ((props.order as any)?.reduce_only ?? false)) {\n      const position = getRelatedPosition(props.order.symbol);\n      if (position) {\n        setPosition(position);\n      }\n    }\n  }, [props.order.symbol]);\n\n  return (\n    <TPSLOrderRowContext.Provider\n      value={{\n        order: props.order,\n        sl_trigger_price,\n        tp_trigger_price,\n        tpPnL,\n        slPnL,\n        onCancelOrder,\n        onUpdateOrder,\n        getRelatedPosition,\n        position,\n      }}\n    >\n      {props.children}\n    </TPSLOrderRowContext.Provider>\n  );\n};\n\nfunction calcTPSLPnL(props: {\n  order: API.AlgoOrderExt;\n  position?: API.PositionTPSLExt;\n  quote_dp: number;\n}) {\n  const { order, position, quote_dp } = props;\n\n  if (!position)\n    return {\n      sl_trigger_price: undefined,\n      tp_trigger_price: undefined,\n      slPnL: undefined,\n      tpPnL: undefined,\n    };\n\n  const { sl_trigger_price, tp_trigger_price } =\n    !(\"algo_type\" in order) || !Array.isArray(order.child_orders)\n      ? {}\n      : utils.findTPSLFromOrder(order);\n\n  let quantity = order.quantity;\n\n  if (quantity === 0) {\n    if (order.child_orders?.[0].type === \"CLOSE_POSITION\") {\n      quantity = position.position_qty;\n    }\n  }\n\n  const avgOpenPrice = position.average_open_price;\n  const tpPnL =\n    typeof quantity === \"number\" &&\n    typeof tp_trigger_price === \"number\" &&\n    typeof avgOpenPrice === \"number\"\n      ? utils.priceToPnl(\n          {\n            qty: quantity,\n            price: tp_trigger_price,\n            entryPrice: position.average_open_price,\n            orderSide: order.side as OrderSide,\n            orderType: AlgoOrderType.TAKE_PROFIT,\n          },\n          { symbol: { quote_dp } }\n        )\n      : undefined;\n\n  const slPnL =\n    typeof quantity === \"number\" &&\n    typeof sl_trigger_price === \"number\" &&\n    typeof avgOpenPrice === \"number\"\n      ? utils.priceToPnl(\n          {\n            qty: quantity,\n            price: sl_trigger_price,\n            entryPrice: position.average_open_price,\n            orderSide: order.side as OrderSide,\n            orderType: AlgoOrderType.STOP_LOSS,\n          },\n          { symbol: { quote_dp } }\n        )\n      : undefined;\n\n  return {\n    sl_trigger_price,\n    tp_trigger_price,\n    slPnL,\n    tpPnL,\n  };\n}\n","import {\n  AlgoOrderRootType,\n  AlgoOrderType,\n  API,\n  OrderSide,\n  OrderStatus,\n  OrderType,\n} from \"@orderly.network/types\";\nimport { cn, Column, Flex, Text } from \"@orderly.network/ui\";\nimport { commifyOptional, Decimal } from \"@orderly.network/utils\";\nimport {\n  grayCell,\n  parseBadgesFor,\n  upperCaseFirstLetter,\n} from \"../../../utils/util\";\nimport { TabType } from \"../../orders.widget\";\nimport { Badge } from \"@orderly.network/ui\";\nimport { OrderQuantity } from \"./quantity\";\nimport { Price } from \"./price\";\nimport { TriggerPrice } from \"./triggerPrice\";\nimport { CancelButton } from \"./cancelBtn\";\nimport { Renew } from \"./renew\";\nimport { OrderTriggerPrice } from \"./tpslTriggerPrice\";\nimport { BracketOrderPrice } from \"./bracketOrderPrice\";\nimport { TP_SLEditButton } from \"./tpslEdit\";\nimport { TPSLOrderPrice, useTPSLOrderPrice } from \"./tpslPrice\";\nimport { useMemo } from \"react\";\nimport { useSymbolContext } from \"../symbolProvider\";\nimport { ShareButtonWidget } from \"../../shareButton\";\nimport { SharePnLConfig, SharePnLDialogId } from \"@orderly.network/ui-share\";\nimport { format } from \"date-fns\";\nimport { SymbolInfo, utils } from \"@orderly.network/hooks\";\nimport { useTranslation, i18n } from \"@orderly.network/i18n\";\n\nexport const useOrderColumn = (props: {\n  _type: TabType;\n  onSymbolChange?: (symbol: API.Symbol) => void;\n  pnlNotionalDecimalPrecision?: number;\n  sharePnLConfig?: SharePnLConfig;\n  symbolsInfo?: SymbolInfo;\n}) => {\n  const { _type, onSymbolChange, pnlNotionalDecimalPrecision, sharePnLConfig } =\n    props;\n  const { t } = useTranslation();\n\n  const columns = useMemo(() => {\n    switch (_type) {\n      case TabType.all:\n        return [\n          instrument({\n            width: 130,\n            showType: true,\n            onSymbolChange: onSymbolChange,\n            enableSort: false,\n          }),\n          // side({ width: 130 }),\n          fillAndQuantity({\n            width: 130,\n            disableEdit: true,\n            className: \"oui-pl-0 oui-pr-0\",\n            enableSort: false,\n          }),\n          price({\n            width: 130,\n            title: t(\"orders.column.orderPrice\"),\n            disableEdit: true,\n            enableSort: false,\n          }),\n          avgOpen({ width: 130, enableSort: false }),\n          tpslTriggerPrice({ width: 130, symbolsInfo: props.symbolsInfo }),\n          realizedPnL({\n            width: 124,\n            pnlNotionalDecimalPrecision: pnlNotionalDecimalPrecision,\n            sharePnLConfig: sharePnLConfig,\n            symbolsInfo: props.symbolsInfo,\n          }),\n          estTotal({ width: 130, enableSort: false }),\n          fee({ width: 130 }),\n          status({ width: 130 }),\n          reduceOnly({ width: 130 }),\n          hidden({ width: 130 }),\n          cancelBtn({ width: 130 }),\n          orderTime({ width: 160, enableSort: false }),\n        ];\n      case TabType.pending:\n        return [\n          instrument({\n            width: 172,\n            showType: true,\n            onSymbolChange: onSymbolChange,\n            enableSort: false,\n          }),\n          // side({ width: 162 }),\n          fillAndQuantity({\n            width: 162,\n            className: \"oui-pr-0\",\n            enableSort: false,\n          }),\n          price({ width: 162, className: \"oui-pr-0\", enableSort: false }),\n          triggerPrice({ width: 162, className: \"oui-pr-0\" }),\n          bracketOrderPrice({ width: 130 }),\n          estTotal({ width: 162, isPending: true }),\n          reduceOnly({ width: 162 }),\n          hidden({ width: 162 }),\n          orderTime({ width: 162, enableSort: false }),\n          pendingTabCancelBtn({ width: 162 }),\n        ];\n      case TabType.tp_sl:\n        return [\n          instrument({\n            width: 176,\n            showType: true,\n            onSymbolChange: onSymbolChange,\n            enableSort: false,\n          }),\n          // side({ width: 176 }),\n          quantity({ width: 176 }),\n          tpslTriggerPrice({ width: 176, symbolsInfo: props.symbolsInfo }),\n          tpslPrice({ width: 176, disableEdit: true }),\n          tpslNotional({ width: 176 }),\n          reduceOnly({ width: 176 }),\n          orderTime({ width: 176, enableSort: false }),\n          tpslAction({ width: 176 }),\n        ];\n      case TabType.filled:\n        return [\n          instrument({\n            showType: true,\n            width: 154,\n            onSymbolChange: onSymbolChange,\n          }),\n          // type({ width: 124 }),\n          // side({ width: 124 }),\n          fillAndQuantity({\n            width: 124,\n            disableEdit: true,\n            className: \"oui-pl-0 oui-pr-0\",\n          }),\n          price({\n            width: 124,\n            title: t(\"orders.column.orderPrice\"),\n            disableEdit: true,\n          }),\n          avgPrice({ width: 124 }),\n          triggerPrice({ width: 124, disableEdit: true }),\n          realizedPnL({\n            width: 124,\n            pnlNotionalDecimalPrecision: pnlNotionalDecimalPrecision,\n            sharePnLConfig: sharePnLConfig,\n            symbolsInfo: props.symbolsInfo,\n            hideShare: true,\n          }),\n          estTotal({ width: 124 }),\n          fee({ width: 124 }),\n          status({ width: 124 }),\n          reduceOnly({ width: 124 }),\n          hidden({ width: 124 }),\n          orderTime({ width: 176 }),\n        ];\n      case TabType.cancelled:\n        return [\n          instrument({\n            showType: true,\n            width: 154,\n            onSymbolChange: onSymbolChange,\n            enableSort: false,\n          }),\n          // side({ width: 124 }),\n          fillAndQuantity({\n            width: 124,\n            disableEdit: true,\n            className: \"oui-pl-0 oui-pr-0\",\n            enableSort: false,\n          }),\n          price({ width: 124, disableEdit: true, enableSort: false }),\n          avgOpen({ width: 124, enableSort: false }),\n          triggerPrice({ width: 124, disableEdit: true }),\n          estTotal({ width: 124 }),\n          fee({ width: 124 }),\n          status({ width: 124 }),\n          reduceOnly({ width: 124 }),\n          hidden({ width: 124 }),\n        ];\n      case TabType.rejected:\n        return [\n          instrument({\n            showType: true,\n            width: 154,\n            onSymbolChange: onSymbolChange,\n          }),\n          // side({ width: 124 }),\n          fillAndQuantity({\n            width: 124,\n            disableEdit: true,\n            className: \"oui-pl-0 oui-pr-0\",\n          }),\n          price({ width: 124, disableEdit: true }),\n          avgOpen({ width: 124 }),\n          triggerPrice({ width: 124, disableEdit: true }),\n          estTotal({ width: 124 }),\n          fee({ width: 124 }),\n          status({ width: 124 }),\n          reduceOnly({ width: 124 }),\n          hidden({ width: 124 }),\n          orderTime({ width: 176 }),\n        ];\n      case TabType.orderHistory:\n        return [\n          instrument({\n            showType: true,\n            width: 154,\n            onSymbolChange: onSymbolChange,\n          }),\n          // side({ width: 124 }),\n          fillAndQuantity({\n            width: 150,\n            disableEdit: true,\n            className: \"oui-pl-6 oui-pr-0\",\n          }),\n          price({ width: 124, disableEdit: true }),\n          avgOpen({ width: 124 }),\n          triggerPrice({ width: 124, disableEdit: true }),\n          realizedPnL({\n            width: 124,\n            pnlNotionalDecimalPrecision: pnlNotionalDecimalPrecision,\n            sharePnLConfig: sharePnLConfig,\n            symbolsInfo: props.symbolsInfo,\n          }),\n          estTotal({ width: 124 }),\n          fee({ width: 124 }),\n          status({ width: 124 }),\n          reduceOnly({ width: 124 }),\n          hidden({ width: 124 }),\n          orderTime({ width: 150 }),\n          cancelBtn({ width: 80 }),\n        ];\n    }\n  }, [_type, pnlNotionalDecimalPrecision, sharePnLConfig, t]);\n\n  return columns as Column[];\n\n  // return columns();\n};\n\nfunction instrument(option?: {\n  showType?: boolean;\n  enableSort?: boolean;\n  width?: number;\n  onSymbolChange?: (symbol: API.Symbol) => void;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.symbol\"),\n    dataIndex: \"symbol\",\n    fixed: \"left\",\n    // className: \"oui-h-[48px]\",\n    width: option?.width,\n    onSort: option?.enableSort\n      ? (r1, r2) => {\n          return r1.symbol.localeCompare(r2.symbol);\n          // if (sortOrder === \"asc\") {\n          //   return r1.symbol.localeCompare(r2.symbol);\n          // }\n          // return r2.symbol.localeCompare(r1.symbol);\n        }\n      : undefined,\n    renderPlantText: (value: string, record) => {\n      const badges = parseBadgesFor(record)?.join(\",\");\n      const displayBadges = badges?.length ? ` (${badges})` : \"\";\n      return `${value.split(\"_\")[1]}-PERP${displayBadges}`;\n    },\n    render: (value: string, record) => {\n      const showGray = grayCell(record);\n\n      return (\n        <Flex gap={2}>\n          <div\n            className={cn(\n              \"oui-rounded-[1px] oui-w-1 oui-h-7 oui-shrink-0\",\n              record.side === OrderSide.BUY\n                ? \"oui-bg-trade-profit\"\n                : \"oui-bg-trade-loss\"\n            )}\n          />\n          <Flex direction=\"column\" itemAlign={\"start\"}>\n            <Text.formatted\n              // rule={\"symbol\"}\n              size=\"xs\"\n              className=\"oui-cursor-pointer oui-text-xs\"\n              onClick={(e) => {\n                option?.onSymbolChange?.({ symbol: value } as API.Symbol);\n                e.stopPropagation();\n                e.preventDefault();\n              }}\n            >\n              {`${value.split(\"_\")[1]}-PERP`}\n            </Text.formatted>\n\n            {option?.showType && (\n              <Flex direction={\"row\"} gap={1}>\n                {parseBadgesFor(record)?.map((e, index) => (\n                  <Badge\n                    key={index}\n                    color={\n                      e.toLocaleLowerCase() === \"position\"\n                        ? showGray\n                          ? \"neutral\"\n                          : \"primary\"\n                        : \"neutral\"\n                    }\n                    size=\"xs\"\n                    className=\"oui-break-normal oui-whitespace-nowrap\"\n                  >\n                    {e}\n                  </Badge>\n                ))}\n              </Flex>\n            )}\n          </Flex>\n        </Flex>\n      );\n    },\n  };\n}\n\nfunction side(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.side\"),\n    dataIndex: \"side\",\n    width: option?.width,\n    // className: \"oui-h-[48px]\",\n    onSort: option?.enableSort\n      ? (r1, r2, sortOrder) => {\n          return r2.side.localeCompare(r1.side);\n          // if (sortOrder === \"asc\") {\n          //   return r2.side.localeCompare(r1.side);\n          // }\n          // return r1.side.localeCompare(r2.side);\n        }\n      : undefined,\n    renderPlantText: (value: string, record) => upperCaseFirstLetter(value),\n    render: (value: string, record) => {\n      const clsName = grayCell(record)\n        ? \"oui-text-base-contrast-20\"\n        : value === OrderSide.BUY\n        ? \"oui-text-trade-profit\"\n        : \"oui-text-trade-loss\";\n      return (\n        <span className={cn(\"oui-font-semibold\", clsName)}>\n          {upperCaseFirstLetter(value)}\n        </span>\n      );\n    },\n  };\n}\n\nfunction type(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.type\"),\n    dataIndex: \"type\",\n    width: option?.width,\n    className: option?.className,\n    formatter: (value: string, record: any) => {\n      if (!!record.parent_algo_type) {\n        if (record.algo_type === AlgoOrderType.STOP_LOSS) {\n          return record.type === OrderType.CLOSE_POSITION\n            ? `Position SL`\n            : \"SL\";\n        }\n\n        if (record.algo_type === AlgoOrderType.TAKE_PROFIT) {\n          return record.type === OrderType.CLOSE_POSITION\n            ? `Position TP`\n            : \"TP\";\n        }\n      }\n\n      if (record.algo_order_id) {\n        return `Stop ` + `${record.type}`.toLowerCase();\n      }\n      return upperCaseFirstLetter(value);\n    },\n  };\n}\n\nfunction fillAndQuantity(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n  disableEdit?: boolean;\n}): Column<API.AlgoOrderExt> {\n  return {\n    title: i18n.t(\"orders.column.fill&Quantity\"),\n    dataIndex: \"fill_quantity\",\n    className: option?.className,\n    width: option?.width,\n    onSort:\n      option?.enableSort ?? false\n        ? (a, b) => {\n            const aQuantity =\n              (a.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n                ? 0\n                : a.quantity) ?? 0;\n            const bQuantity =\n              (b.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n                ? 0\n                : b.quantity) ?? 0;\n\n            return compareNumbers(aQuantity, bQuantity);\n\n            // if (type == \"asc\") {\n            //   return compareNumbers(aQuantity, bQuantity);\n            // }\n            // return compareNumbers(bQuantity, aQuantity);\n          }\n        : undefined,\n\n    renderPlantText: (value: string, record: any) => {\n      if (\n        record.type === OrderType.CLOSE_POSITION &&\n        record.status !== OrderStatus.FILLED\n      ) {\n        return i18n.t(\"tpsl.entirePosition\");\n      }\n\n      const executed = (record as API.OrderExt).total_executed_quantity;\n      const first =\n        \"algo_type\" in record && record.algo_type === AlgoOrderRootType.TP_SL\n          ? \"\"\n          : `${executed} / `;\n      return first + `${record.quantity}`;\n    },\n    render: (value: string, record: any) => {\n      if (\n        record.type === OrderType.CLOSE_POSITION &&\n        record.status !== OrderStatus.FILLED\n      ) {\n        return i18n.t(\"tpsl.entirePosition\");\n      }\n      return <OrderQuantity order={record} disableEdit={option?.disableEdit} />;\n      // return value;\n    },\n  };\n}\n\nfunction quantity(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.AlgoOrderExt> {\n  return {\n    title: i18n.t(\"common.quantity\"),\n    className: option?.className,\n    dataIndex: \"quantity\",\n    width: option?.width,\n    onSort:\n      option?.enableSort ?? false\n        ? (a, b) => {\n            const aQuantity =\n              (a.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n                ? 0\n                : a.quantity) ?? 0;\n            const bQuantity =\n              (b.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n                ? 0\n                : b.quantity) ?? 0;\n            return compareNumbers(aQuantity, bQuantity);\n            // if (type == \"asc\") {\n            //   return compareNumbers(aQuantity, bQuantity);\n            // }\n            // return compareNumbers(bQuantity, aQuantity);\n          }\n        : undefined,\n    renderPlantText: (value: string, record: any) => {\n      if (record.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL) {\n        return i18n.t(\"tpsl.entirePosition\");\n      }\n\n      const executed = (record as API.OrderExt).total_executed_quantity;\n      const first =\n        \"algo_type\" in record && record.algo_type === AlgoOrderRootType.TP_SL\n          ? \"\"\n          : `${executed}/`;\n      return first + `${record.quantity}`;\n    },\n    render: (value: string, record: any) => {\n      if (record.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL) {\n        return i18n.t(\"tpsl.entirePosition\");\n      }\n      return <OrderQuantity order={record} />;\n      // return value;\n    },\n  };\n}\n\nfunction price(option?: {\n  title?: string;\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n  disableEdit?: boolean;\n}): Column<API.Order> {\n  return {\n    title: option?.title ?? i18n.t(\"common.price\"),\n    dataIndex: \"price\",\n    className: option?.className,\n    width: option?.width,\n    onSort:\n      option?.enableSort ?? false\n        ? (a, b, type) => {\n            return compareNumbers(a.price ?? 0, b.price ?? 0);\n          }\n        : undefined,\n    renderPlantText: (value: string, record: any) => {\n      return commifyOptional(record.price?.toString(), {\n        fallback: i18n.t(\"common.marketPrice\"),\n      });\n    },\n    render: (value: string, record: any) => {\n      return <Price order={record} disableEdit={option?.disableEdit} />;\n    },\n  };\n}\n\nfunction tpslPrice(option?: {\n  title?: string;\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n  disableEdit?: boolean;\n}): Column<API.Order> {\n  return {\n    title: option?.title ?? i18n.t(\"common.price\"),\n    dataIndex: \"price\",\n    className: option?.className,\n    width: option?.width,\n    onSort: option?.enableSort,\n    renderPlantText: (value: string, record: any) => {\n      const { tpTriggerPrice, slTriggerPrice } = useTPSLOrderPrice(record);\n      const callback = `${tpTriggerPrice || \"\"}${\n        slTriggerPrice ? `${tpTriggerPrice ? \"\\n\" : \"\"}${slTriggerPrice}` : \"\"\n      }`;\n\n      return callback.length > 0 ? callback : \"--\";\n    },\n    render: (value: string, record: any) => {\n      return <TPSLOrderPrice />;\n    },\n  };\n}\n\nfunction avgPrice(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n  disableEdit?: boolean;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.avgPrice\"),\n    dataIndex: \"average_executed_price\",\n    className: option?.className,\n    width: option?.width,\n    onSort: option?.enableSort,\n    render: (value: string, record: any) => commifyOptional(value),\n  };\n}\n\nfunction triggerPrice(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n  disableEdit?: boolean;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.trigger\"),\n    className: option?.className,\n    dataIndex: \"trigger_price\",\n    width: option?.width,\n    onSort: option?.enableSort,\n    renderPlantText: (value: string, record: any) => {\n      const isAlgoOrder = record?.algo_order_id !== undefined;\n      const isBracketOrder = record?.algo_type === \"BRACKET\";\n      if (!isAlgoOrder || isBracketOrder) {\n        return \"--\";\n      }\n      return commifyOptional(value);\n    },\n    render: (value: string, record: any) => (\n      <TriggerPrice order={record} disableEdit={option?.disableEdit} />\n    ),\n  };\n}\n\nfunction tpslTriggerPrice(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n  title?: string;\n  symbolsInfo?: SymbolInfo;\n}): Column<API.Order> {\n  return {\n    title: option?.title ?? i18n.t(\"common.trigger\"),\n    className: option?.className,\n    dataIndex: \"tpsl_trigger_price\",\n    width: option?.width,\n    onSort: option?.enableSort,\n    renderPlantText: (value: string, record: any) => {\n      const info = option?.symbolsInfo?.[record.symbol];\n      const quote_dp = info?.(\"quote_dp\");\n      // @ts-ignore\n      const { sl_trigger_price, tp_trigger_price } =\n        !(\"algo_type\" in record) || !Array.isArray(record.child_orders)\n          ? {}\n          : utils.findTPSLFromOrder(record);\n\n      const callback =\n        (tp_trigger_price != null\n          ? `${i18n.t(\"tpsl.tp\")}: ${commifyOptional(tp_trigger_price, {\n              fix: quote_dp,\n              padEnd: true,\n            })}`\n          : \"\") +\n        (sl_trigger_price != null\n          ? `${tp_trigger_price ? \"\\n\" : \"\"}${i18n.t(\n              \"tpsl.sl\"\n            )}: ${commifyOptional(sl_trigger_price, {\n              fix: quote_dp,\n              padEnd: true,\n            })}`\n          : \"\");\n      return callback.length > 0 ? callback : \"--\";\n    },\n    render: (value: string, record: any) => <OrderTriggerPrice />,\n  };\n}\n\nfunction bracketOrderPrice(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}) {\n  return {\n    title: i18n.t(\"common.tpsl\"),\n    className: option?.className,\n    dataIndex: \"bracketOrderPrice\",\n    width: option?.width,\n    onSort: option?.enableSort,\n    renderPlantText: (value: string, record: any) => {\n      const getTPSLTriggerPrice = (): {\n        sl_trigger_price?: number;\n        tp_trigger_price?: number;\n      } => {\n        if (!(\"algo_type\" in record) || !Array.isArray(record.child_orders)) {\n          return {};\n        }\n        return utils.findTPSLFromOrder(record.child_orders[0]);\n      };\n\n      const { sl_trigger_price, tp_trigger_price } = getTPSLTriggerPrice();\n\n      const callback =\n        (tp_trigger_price != null\n          ? `${i18n.t(\"tpsl.tp\")}: ${tp_trigger_price}`\n          : \"\") +\n        (sl_trigger_price != null\n          ? `${tp_trigger_price ? \"\\n\" : \"\"}${i18n.t(\n              \"tpsl.sl\"\n            )}: ${sl_trigger_price}`\n          : \"\");\n      return callback.length > 0 ? callback : \"--\";\n    },\n    render: (value: string, record: any) => (\n      <BracketOrderPrice order={record} />\n    ),\n  };\n}\n\nfunction estTotal(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n  isPending?: boolean;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.notional\"),\n    dataIndex: \"executed\",\n    width: option?.width,\n    className: option?.className,\n    onSort:\n      option?.enableSort ?? false\n        ? (a, b, type) => {\n            const aTotal =\n              a.type === OrderType.CLOSE_POSITION &&\n              a.status !== OrderStatus.FILLED\n                ? 0\n                : a.total_executed_quantity === 0 ||\n                  Number.isNaN(a.average_executed_price) ||\n                  a.average_executed_price === null\n                ? 0\n                : a.total_executed_quantity * a.average_executed_price;\n            const bTotal =\n              b.type === OrderType.CLOSE_POSITION &&\n              b.status !== OrderStatus.FILLED\n                ? 0\n                : b.total_executed_quantity === 0 ||\n                  Number.isNaN(b.average_executed_price) ||\n                  b.average_executed_price === null\n                ? 0\n                : b.total_executed_quantity * b.average_executed_price;\n            return compareNumbers(aTotal, bTotal);\n            // if (type === \"asc\") {\n            //   return compareNumbers(aTotal, bTotal);\n            // }\n            // return compareNumbers(bTotal, aTotal);\n          }\n        : undefined,\n    renderPlantText: (value: string, record: any) => {\n      const estTotal = estTotalValue(record, option?.isPending ?? false);\n\n      if (estTotal === \"Entire position\") {\n        return i18n.t(\"tpsl.entirePosition\");\n      }\n\n      return commifyOptional(\n        estTotalValue(record, option?.isPending ?? false),\n        { fix: 2 }\n      );\n    },\n    render: (value: string, record: any) => {\n      const estTotal = estTotalValue(record, option?.isPending ?? false);\n\n      if (estTotal === \"Entire position\") {\n        return i18n.t(\"tpsl.entirePosition\");\n      }\n\n      return (\n        <Text.numeral rm={Decimal.ROUND_DOWN} dp={2}>\n          {estTotal}\n        </Text.numeral>\n      );\n    },\n  };\n}\n\nfunction realizedPnL(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n  pnlNotionalDecimalPrecision?: number;\n  sharePnLConfig?: SharePnLConfig;\n  symbolsInfo?: SymbolInfo;\n  hideShare?: boolean;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.realizedPnl\"),\n    dataIndex: \"realized_pnl\",\n    width: option?.width,\n    className: option?.className,\n    renderPlantText: (_value: string, record: any) => {\n      const info = option?.symbolsInfo?.[record.symbol];\n      const quote_dp = info?.(\"quote_dp\");\n      const dp = option?.pnlNotionalDecimalPrecision ?? quote_dp;\n      const value = new Decimal(_value ?? 0)\n        .toDecimalPlaces(dp, Decimal.ROUND_DOWN)\n        .toNumber();\n\n      const formatValue = commifyOptional(value);\n\n      return value > 0 ? `+${formatValue}` : formatValue;\n    },\n    render: (_value: number | undefined, record: any) => {\n      const { quote_dp } = useSymbolContext();\n      const dp = option?.pnlNotionalDecimalPrecision ?? quote_dp;\n      const value = new Decimal(_value ?? 0)\n        .toDecimalPlaces(dp, Decimal.ROUND_DOWN)\n        .toNumber();\n      // wraper flex\n      return (\n        <Flex gap={1}>\n          <Text.numeral\n            dp={dp}\n            rm={Decimal.ROUND_DOWN}\n            padding={false}\n            intensity={(value ?? 0) == 0 ? 80 : undefined}\n            showIdentifier={(value ?? 0) > 0}\n            coloring={(value ?? 0) != 0}\n          >\n            {value ?? \"--\"}\n          </Text.numeral>\n          {!option?.hideShare && (\n            <ShareButtonWidget\n              order={record}\n              sharePnLConfig={option?.sharePnLConfig}\n              modalId={SharePnLDialogId}\n            />\n          )}\n        </Flex>\n      );\n    },\n  };\n}\n\nfunction reduceOnly(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"orderEntry.reduceOnly\"),\n    dataIndex: \"reduce_only\",\n    width: option?.width,\n    className: option?.className,\n    renderPlantText: (value: string, record: any) => {\n      return value ? i18n.t(\"common.yes\") : i18n.t(\"common.no\");\n    },\n    render: (value: boolean) => {\n      return <Text>{value ? i18n.t(\"common.yes\") : i18n.t(\"common.no\")}</Text>;\n    },\n  };\n}\n\nfunction hidden(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"orders.column.hidden\"),\n    dataIndex: \"visible\",\n    width: option?.width,\n    className: option?.className,\n    renderPlantText: (value: number, record: any) => {\n      return value !== 0 ? i18n.t(\"common.no\") : i18n.t(\"common.yes\");\n    },\n    render: (value: number, record) => {\n      return (\n        <Text>\n          {record.visible_quantity !== 0\n            ? i18n.t(\"common.no\")\n            : i18n.t(\"common.yes\")}\n        </Text>\n      );\n    },\n  };\n}\n\nfunction orderTime(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n  formatString?: string;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"orders.column.orderTime\"),\n    dataIndex: \"created_time\",\n    width: option?.width,\n    onSort: option?.enableSort,\n    className: option?.className,\n    renderPlantText: (value: string, record: any) => {\n      const date = new Date(value);\n      const formattedDate = format(date, \"yyyy-MM-dd HH:mm:ss\");\n      return formattedDate;\n    },\n    render: (value: string) => (\n      <Text.formatted\n        rule={\"date\"}\n        formatString={option?.formatString || \"yyyy-MM-dd HH:mm:ss\"}\n        className=\"oui-break-normal oui-whitespace-nowrap oui-font-semibold\"\n      >\n        {value}\n      </Text.formatted>\n    ),\n  };\n}\n\nfunction fee(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.fee\"),\n    dataIndex: \"total_fee\",\n    width: option?.width,\n    onSort: option?.enableSort,\n    className: option?.className,\n  };\n}\n\nfunction notional(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.notional\"),\n    dataIndex: \"notional\",\n    width: option?.width,\n    onSort: option?.enableSort,\n    className: option?.className,\n    renderPlantText: (value: number, record: any) => {\n      return commifyOptional(value, { fix: 2 });\n    },\n    render: (value?: string) => (\n      <Text.numeral className=\"oui-break-normal oui-whitespace-nowrap oui-font-semibold\">\n        {value ?? \"--\"}\n      </Text.numeral>\n    ),\n  };\n}\n\nfunction tpslNotional(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.notional\"),\n    dataIndex: \"executed\",\n    width: option?.width,\n    onSort: option?.enableSort,\n    className: option?.className,\n    renderPlantText: (value: any, record: any) => {\n      if (record.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL) {\n        return i18n.t(\"tpsl.entirePosition\");\n      }\n      return commifyOptional(\n        record.quantity === 0\n          ? \"--\"\n          : `${new Decimal(record.mark_price)\n              .mul(record.quantity)\n              .todp(2)\n              .toNumber()}`\n      );\n    },\n    render: (value: any, record: any) => {\n      if (record.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL) {\n        return i18n.t(\"tpsl.entirePosition\");\n      }\n\n      return (\n        <Text.numeral className=\"oui-break-normal oui-whitespace-nowrap oui-font-semibold\">\n          {record.quantity === 0\n            ? \"--\"\n            : `${new Decimal(record.mark_price)\n                .mul(record.quantity)\n                .todp(2)\n                .toNumber()}`}\n        </Text.numeral>\n      );\n    },\n  };\n}\n\nfunction status(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  const statusMap = {\n    [OrderStatus.NEW]: i18n.t(\"orders.status.pending\"),\n    [OrderStatus.FILLED]: i18n.t(\"orders.status.filled\"),\n    [OrderStatus.PARTIAL_FILLED]: i18n.t(\"orders.status.partialFilled\"),\n    [OrderStatus.CANCELLED]: i18n.t(\"orders.status.canceled\"),\n    [OrderStatus.REJECTED]: i18n.t(\"orders.status.rejected\"),\n    [OrderStatus.INCOMPLETE]: i18n.t(\"orders.status.incomplete\"),\n    [OrderStatus.COMPLETED]: i18n.t(\"orders.status.completed\"),\n  };\n  return {\n    title: i18n.t(\"common.status\"),\n    dataIndex: \"status\",\n    width: option?.width,\n    onSort: option?.enableSort,\n    className: option?.className,\n    renderPlantText: (value: string, record: any) => {\n      const status = value || record.algo_status;\n      return (\n        statusMap[status as keyof typeof statusMap] ||\n        upperCaseFirstLetter(status)\n      );\n    },\n    render: (value: string, record: any) => {\n      const status = value || record.algo_status;\n      return (\n        statusMap[status as keyof typeof statusMap] ||\n        upperCaseFirstLetter(status)\n      );\n    },\n  };\n}\n\nfunction avgOpen(option?: {\n  enableSort?: boolean;\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: i18n.t(\"common.avgOpen\"),\n    dataIndex: \"average_executed_price\",\n    width: option?.width,\n    onSort:\n      option?.enableSort ?? false\n        ? (a, b) => {\n            return compareNumbers(\n              a.average_executed_price ?? 0,\n              b.average_executed_price ?? 0\n            );\n          }\n        : undefined,\n    className: option?.className,\n    render: (value: string, record) => {\n      if (record.type === OrderType.MARKET && !value) {\n        return \"--\";\n      }\n      return (\n        <Text.numeral className=\"oui-break-normal oui-whitespace-nowrap oui-font-semibold\">\n          {value}\n        </Text.numeral>\n      );\n    },\n    renderPlantText: (value: string, record: any) => {\n      return commifyOptional(value, { fix: 2 });\n    },\n  };\n}\n\nfunction cancelBtn(option?: {\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: \"\",\n    type: \"action\",\n    dataIndex: \"action\",\n    width: option?.width,\n    className: option?.className,\n    align: \"right\",\n    fixed: \"right\",\n    render: (_: string, record: any) => {\n      if (record.status === OrderStatus.CANCELLED) {\n        return <Renew record={record} />;\n      }\n\n      if (\n        record.status === OrderStatus.NEW ||\n        record.algo_status === OrderStatus.NEW\n      ) {\n        return <CancelButton order={record} />;\n      }\n\n      return null;\n    },\n  };\n}\n\nfunction pendingTabCancelBtn(option?: {\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: \"\",\n    type: \"action\",\n    dataIndex: \"action\",\n    width: option?.width,\n    className: option?.className,\n    align: \"right\",\n    fixed: \"right\",\n    render: (_: string, record: any) => {\n      return <CancelButton order={record} />;\n    },\n  };\n}\n\nfunction tpslAction(option?: {\n  width?: number;\n  className?: string;\n}): Column<API.Order> {\n  return {\n    title: \"\",\n    type: \"action\",\n    dataIndex: \"action\",\n    width: option?.width,\n    className: option?.className,\n    align: \"right\",\n    fixed: \"right\",\n    render: (_: string, record: any) => {\n      return (\n        <Flex gap={3}>\n          <TP_SLEditButton order={record} />\n          <CancelButton order={record} />\n        </Flex>\n      );\n    },\n  };\n}\n\nfunction compareNumbers(a: number, b: number): number {\n  if (a > b) return 1;\n  if (a < b) return -1;\n  return 0;\n}\n\n// estTotal\nfunction estTotalValue(record: any, isPending: boolean): string {\n  if (isPending) {\n    const value = () => {\n      if (record.price && record.quantity) {\n        return new Decimal(record.price)\n          .mul(record.quantity)\n          .toFixed(2, Decimal.ROUND_DOWN);\n      }\n      return \"--\";\n    };\n\n    return value();\n  }\n\n  if (\n    record.type === OrderType.CLOSE_POSITION &&\n    record.status !== OrderStatus.FILLED\n  ) {\n    return i18n.t(\"tpsl.entirePosition\");\n  }\n\n  return record.total_executed_quantity === 0 ||\n    Number.isNaN(record.average_executed_price) ||\n    record.average_executed_price === null\n    ? \"--\"\n    : `${record.total_executed_quantity * record.average_executed_price}`;\n}\n","import {\n  FC,\n  useCallback,\n  useContext,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\nimport { API, OrderSide } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport {\n  cn,\n  Flex,\n  Popover,\n  toast,\n  Text,\n  Slider,\n  Button,\n  PopoverTrigger,\n  PopoverRoot,\n  PopoverContent,\n} from \"@orderly.network/ui\";\nimport { ConfirmContent, EditType } from \"./editOrder/confirmContent\";\nimport { InnerInput } from \"./editOrder/innerInput\";\nimport { useOrderListContext } from \"../orderListContext\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\nimport { useSymbolContext } from \"../symbolProvider\";\nimport { grayCell } from \"../../../utils/util\";\nimport { useMaxQty, utils } from \"@orderly.network/hooks\";\nimport { commifyOptional, Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const OrderQuantity = (props: {\n  order: API.OrderExt | API.AlgoOrder;\n  disableEdit?: boolean;\n  otherOrderQuantity?: (order: any) => number | undefined;\n}) => {\n  const { order, otherOrderQuantity } = props;\n  const { reduce_only } = order;\n  const [quantity, originSetQuantity] = useState<string>(\n    order.quantity.toString()\n  );\n\n  const [editing, setEditing] = useState(false);\n\n  const { t } = useTranslation();\n\n  useEffect(() => {\n    setQuantity(order.quantity.toString());\n  }, [props.order.quantity]);\n\n  const [open, setOpen] = useState(false);\n  const [error, setError] = useState<string>();\n\n  const { editOrder, editAlgoOrder, checkMinNotional } = useOrderListContext();\n  const { onUpdateOrder: onUpdateTPSLOrder, position } =\n    useTPSLOrderRowContext();\n\n  const { base_dp, base, base_tick } = useSymbolContext();\n\n  const setQuantity = async (qty: string, maxQty?: number): Promise<void> => {\n    originSetQuantity(qty);\n    const positionQty = Math.abs(position?.position_qty || 0);\n\n    if (position && reduce_only && Number(qty) > positionQty) {\n      setError(\n        t(\"orders.quantity.lessThanPosition\", {\n          quantity: positionQty,\n        })\n      );\n    } else {\n      const quantity = Number(qty);\n      if (maxQty && quantity > maxQty) {\n        setError(\n          t(\"orders.quantity.lessThan\", {\n            quantity: commifyOptional(maxQty, {\n              fix: base_dp,\n            }),\n          })\n        );\n      } else {\n        setError(undefined);\n      }\n    }\n    return Promise.resolve();\n  };\n\n  const closePopover = () => {\n    setOpen(false);\n    setEditing(false);\n  };\n  const cancelPopover = () => {\n    setOpen(false);\n    setQuantity(order.quantity.toString());\n    setEditing(false);\n  };\n  const [isSubmitting, setIsSubmitting] = useState(false);\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const clickHandler = () => {\n    // console.log(\n    //   \"xxxxx click handler\",\n    //   checkMinNotional,\n    //   quantity,\n    //   error,\n    //   quantity\n    // );\n\n    if (!!error) {\n      return;\n    }\n\n    if (Number(quantity) === Number(order.quantity)) {\n      setEditing(false);\n      return;\n    }\n\n    const price =\n      order.algo_order_id !== undefined ? order.trigger_price : order.price;\n    if (price !== null && order.reduce_only !== true) {\n      const notionalText = checkMinNotional(order.symbol, price, quantity);\n      if (notionalText) {\n        toast.error(notionalText);\n        setIsSubmitting(false);\n        cancelPopover();\n        return;\n      }\n    }\n\n    setOpen(true);\n  };\n\n  const onClick = (event: any) => {\n    event?.stopPropagation();\n    event?.preventDefault();\n\n    clickHandler();\n  };\n\n  const handleKeyDown = (event: any) => {\n    if (event.key === \"Enter\") {\n      event?.stopPropagation();\n      event?.preventDefault();\n      clickHandler();\n    }\n  };\n\n  const onConfirm = useCallback(() => {\n    setIsSubmitting(true);\n\n    let params: any = {\n      symbol: order.symbol,\n      order_type: order.type,\n      side: order.side,\n      order_price: order.price,\n      order_quantity: quantity,\n      // reduce_only: Boolean(order.reduce_only),\n      algo_order_id: order.algo_order_id,\n    };\n\n    if (\n      typeof params.algo_order_id !== \"undefined\" &&\n      params.order_type === \"MARKET\"\n    ) {\n      // stop market order\n      const { order_price, ...rest } = params;\n      params = rest;\n    }\n\n    if (typeof order.reduce_only !== \"undefined\") {\n      params.reduce_only = order.reduce_only;\n    }\n\n    if (order.order_tag !== undefined) {\n      params = { ...params, order_tag: order.order_tag };\n    }\n\n    if (order?.visible_quantity === 0) {\n      params[\"visible_quantity\"] = 0;\n    }\n\n    // @ts-ignore\n    if (order?.tag !== undefined) {\n      // @ts-ignore\n      params[\"order_tag\"] = order.tag;\n    }\n\n    let future;\n\n    if (\"algo_type\" in order && order.algo_type === AlgoOrderRootType.TP_SL) {\n      future = onUpdateTPSLOrder(order as API.AlgoOrderExt, params);\n    } else {\n      if (order.algo_order_id !== undefined) {\n        future = editAlgoOrder(order.algo_order_id.toString(), params);\n      } else {\n        future = editOrder((order as API.OrderExt).order_id.toString(), params);\n      }\n    }\n\n    future\n      .then(\n        (result: any) => {\n          closePopover();\n          setQuantity(quantity.toString());\n          // setTimeout(() => inputRef.current?.blur(), 300);\n        },\n        (err: any) => {\n          toast.error(err.message);\n          setQuantity(order.quantity.toString());\n          cancelPopover();\n        }\n      )\n      .finally(() => setIsSubmitting(false));\n  }, [quantity]);\n\n  const componentRef = useRef<HTMLDivElement | null>(null);\n  const quantitySliderRef = useRef<HTMLDivElement | null>(null);\n\n  const handleClickOutside = (event: any) => {\n    if (\n      componentRef.current &&\n      quantitySliderRef.current &&\n      !componentRef.current.contains(event.target as Node) &&\n      !quantitySliderRef.current.contains(event.target as Node) &&\n      !open\n    ) {\n      cancelPopover();\n    }\n  };\n\n  useEffect(() => {\n    document.addEventListener(\"mousedown\", handleClickOutside);\n\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [open, order.quantity]);\n\n  const trigger = () => {\n    if (!editing || props.disableEdit) {\n      return (\n        <NormalState\n          order={order}\n          quantity={quantity}\n          setEditing={setEditing}\n          disableEdit={props.disableEdit}\n        />\n      );\n    }\n\n    return (\n      <EditState\n        inputRef={inputRef}\n        quantitySliderRef={quantitySliderRef}\n        base_dp={base_dp}\n        base_tick={base_tick}\n        quantity={quantity}\n        setQuantity={setQuantity}\n        editing={editing}\n        setEditing={setEditing}\n        handleKeyDown={handleKeyDown}\n        onClick={onClick}\n        onClose={cancelPopover}\n        symbol={order.symbol}\n        reduce_only={reduce_only}\n        positionQty={position?.position_qty}\n        error={error}\n        confirmOpen={open}\n        side={order.side}\n        order={order}\n        setError={setError}\n      />\n    );\n\n    // return (\n    //   <InnerInput\n    //       inputRef={inputRef}\n    //       dp={base_dp}\n    //       value={quantity}\n    //       setValue={setQuantity}\n    //       setEditing={setEditing}\n    //       handleKeyDown={handleKeyDown}\n    //       onClick={onClick}\n    //       onClose={cancelPopover}\n    //       hintInfo={error} />\n    // );\n  };\n\n  return (\n    <Popover\n      open={open}\n      onOpenChange={setOpen}\n      content={\n        <ConfirmContent\n          type={EditType.quantity}\n          base={base}\n          value={quantity}\n          cancelPopover={cancelPopover}\n          isSubmitting={isSubmitting}\n          onConfirm={onConfirm}\n        />\n      }\n      contentProps={{\n        onOpenAutoFocus: (e) => {\n          // e.preventDefault();\n          // e.stopPropagation();\n        },\n      }}\n    >\n      <div\n        onClick={(e) => {\n          e.stopPropagation();\n          e.preventDefault();\n        }}\n        ref={componentRef}\n      >\n        {trigger()}\n      </div>\n    </Popover>\n  );\n};\n\nconst NormalState: FC<{\n  order: API.AlgoOrder | API.OrderExt;\n  quantity: string;\n  setEditing: any;\n  partial?: boolean;\n  disableEdit?: boolean;\n}> = (props) => {\n  const { order, quantity } = props;\n\n  const executed = (order as API.OrderExt).total_executed_quantity;\n\n  return (\n    <Flex\n      direction=\"row\"\n      justify={\"start\"}\n      gap={1}\n      className={cn(\n        \"oui-max-w-[110px] oui-relative\",\n\n        order.side === OrderSide.BUY && \"oui-text-trade-profit\",\n        order.side === OrderSide.SELL && \"oui-text-trade-loss\",\n        grayCell(order) && \"oui-text-base-contrast-20\"\n      )}\n      onClick={(e) => {\n        e.stopPropagation();\n        e.preventDefault();\n        props.setEditing(true);\n      }}\n    >\n      {\"algo_type\" in order &&\n      order.algo_type === AlgoOrderRootType.TP_SL ? null : (\n        <>\n          <span>{executed}</span>\n          <span>/</span>\n        </>\n      )}\n\n      <Flex\n        r=\"base\"\n        className={cn(\n          \"oui-min-w-[70px] oui-h-[28px]\",\n\n          !props.disableEdit &&\n            \"oui-bg-base-7 oui-px-2 oui-border oui-border-line-12\"\n        )}\n      >\n        <Text size=\"2xs\">{quantity}</Text>\n      </Flex>\n    </Flex>\n  );\n};\n\nconst EditState: FC<{\n  inputRef: any;\n  quantitySliderRef: any;\n  base_dp: number;\n  base_tick: number;\n  quantity: string;\n  setQuantity: (quantity: string, maxQty: number) => Promise<void>;\n  editing: boolean;\n  confirmOpen: boolean;\n  setEditing: (value: boolean) => void;\n  handleKeyDown: (e: any) => void;\n  onClick: (e: any) => void;\n  onClose: () => void;\n  error?: string;\n  symbol: string;\n  reduce_only: boolean;\n  positionQty?: number;\n  side?: string;\n  order: any;\n  setError: (err: string) => void;\n}> = (props) => {\n  const {\n    inputRef,\n    quantitySliderRef,\n    base_dp,\n    base_tick,\n    quantity,\n    setQuantity,\n    editing,\n    setEditing,\n    handleKeyDown,\n    onClick,\n    onClose,\n    error,\n    symbol,\n    reduce_only,\n    positionQty,\n    confirmOpen,\n    side,\n    order,\n  } = props;\n\n  // const { maxQty } = useOrderEntry(symbol, {\n  //   initialOrder: {\n  //     side,\n  //   },\n  // });\n\n  const maxQty = useMaxQty(symbol, order.side, order.reduce_only);\n\n  const qty = useMemo(() => {\n    if (reduce_only) {\n      return Math.abs(positionQty ?? 0);\n    }\n    return order.quantity + Math.abs(maxQty);\n  }, [order.quantity, maxQty, reduce_only, positionQty]);\n\n  const [sliderValue, setSliderValue] = useState<number | undefined>(undefined);\n\n  useEffect(() => {\n    if (sliderValue === undefined) {\n      const sliderValue = new Decimal(quantity)\n        .div(qty)\n        .abs()\n        .mul(100)\n        .toNumber();\n      setSliderValue(sliderValue);\n    }\n  }, [sliderValue, qty, quantity]);\n\n  const formatQuantity = async (_qty: string | number): Promise<void> => {\n    if (base_tick > 0) {\n      _qty = utils.formatNumber(_qty, base_tick) ?? _qty;\n    }\n    return setQuantity(`${_qty}`, qty);\n  };\n\n  return (\n    <PopoverRoot open={!confirmOpen}>\n      <PopoverTrigger>\n        <InnerInput\n          inputRef={inputRef}\n          dp={base_dp}\n          value={quantity}\n          setValue={(e: string) => {\n            const quantity = Math.abs(Math.min(Number(e), qty)).toString();\n            setQuantity(e, qty);\n            if (e.endsWith(\".\")) return;\n            if (Number(quantity) === 0) {\n              setSliderValue(0);\n              return;\n            }\n            const sliderValue = new Decimal(e)\n              .div(qty)\n              .mul(100)\n              .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n              .toNumber();\n            setSliderValue(Math.min(100, sliderValue));\n          }}\n          setEditing={setEditing}\n          handleKeyDown={handleKeyDown}\n          onClick={onClick}\n          onClose={onClose}\n          onBlur={(e) => {\n            formatQuantity(e.target.value);\n          }}\n          hintInfo={error}\n        />\n      </PopoverTrigger>\n      <PopoverContent\n        className=\"oui-w-[360px] oui-rounded-xl\"\n        align=\"start\"\n        side=\"bottom\"\n        onOpenAutoFocus={(event) => {\n          // event.stopPropagation();\n          event.preventDefault();\n        }}\n      >\n        <Flex\n          p={1}\n          gap={2}\n          width={\"100%\"}\n          itemAlign={\"start\"}\n          ref={quantitySliderRef}\n        >\n          <Text.numeral\n            size=\"xs\"\n            intensity={98}\n            className=\"oui-min-w-[30px] \"\n            dp={2}\n            padding={false}\n            unit=\"%\"\n            rm={Decimal.ROUND_DOWN}\n          >\n            {`${sliderValue}`}\n          </Text.numeral>\n          <Flex\n            direction={\"column\"}\n            width={\"100%\"}\n            gap={2}\n            className=\"oui-mt-[6px]\"\n          >\n            <Slider\n              markCount={4}\n              value={[sliderValue ?? 0]}\n              onValueChange={(e) => {\n                const values = Array.from(e.values());\n                setSliderValue(values[0]);\n                const quantity = new Decimal(values[0])\n                  .div(100)\n                  .mul(qty)\n                  .abs()\n                  .toFixed(base_dp, Decimal.ROUND_DOWN);\n                setQuantity(quantity, qty);\n              }}\n              onValueCommit={(values) => {\n                const quantity = new Decimal(values[0])\n                  .div(100)\n                  .mul(qty)\n                  .abs()\n                  .toFixed(base_dp, Decimal.ROUND_DOWN);\n                formatQuantity(quantity).finally(() => {\n                  inputRef.current.focus();\n                });\n              }}\n            />\n            <Buttons\n              onClick={(value) => {\n                setSliderValue(value * 100);\n                let quantity = new Decimal(value)\n                  .mul(qty)\n                  .abs()\n                  .toFixed(base_dp, Decimal.ROUND_DOWN);\n                quantity = utils.formatNumber(quantity, base_tick) ?? quantity;\n\n                setQuantity(quantity, qty);\n                setTimeout(() => {\n                  inputRef.current.focus();\n                  inputRef.current.setSelectionRange(\n                    quantity.length,\n                    quantity.length\n                  );\n                }, 100);\n              }}\n            />\n          </Flex>\n        </Flex>\n      </PopoverContent>\n    </PopoverRoot>\n  );\n\n  // return (\n  //   <Popover\n  //     open={editing}\n  //     onOpenChange={setSliderOpen}\n  //     content={\n  //       <Flex p={1} gap={2} width={\"100%\"} itemAlign={\"start\"}>\n  //         <Text size=\"xs\" intensity={98} className=\"oui-min-w-[30px]\">\n  //           {`${sliderValue}%`}\n  //         </Text>\n  //         <Flex direction={\"column\"} width={\"100%\"} gap={2}>\n  //           <Slider\n  //             markCount={4}\n  //             value={[sliderValue]}\n  //             onValueChange={(e) => {\n  //               const values = Array.from(e.values());\n  //               setSliderValue(values[0]);\n  //               // resetQuantity(values[0]);\n  //             }}\n  //           />\n  //           <Buttons\n  //             onClick={(value) => {\n  //               setSliderValue(value * 100);\n  //               // resetQuantity(value * 100);\n  //             }}\n  //           />\n  //         </Flex>\n  //       </Flex>\n  //     }\n  //   >\n  //     <InnerInput\n  //       inputRef={inputRef}\n  //       dp={base_dp}\n  //       value={quantity}\n  //       setValue={setQuantity}\n  //       setEditing={setEditing}\n  //       handleKeyDown={handleKeyDown}\n  //       onClick={onClick}\n  //       onClose={onClose}\n  //       hintInfo={error}\n  //       onFocus={(e) => {\n  //         setSliderOpen(true);\n  //       }}\n  //       onBlur={(e) => {\n  //         setSliderOpen(false);\n  //       }}\n  //     />\n  //   </Popover>\n  // );\n};\n\nconst Buttons = (props: { onClick: (value: number) => void }) => {\n  const { t } = useTranslation();\n  const list = [\n    {\n      label: \"0%\",\n      value: 0,\n    },\n    {\n      label: \"25%\",\n      value: 0.25,\n    },\n    {\n      label: \"50%\",\n      value: 0.5,\n    },\n    {\n      label: \"75%\",\n      value: 0.75,\n    },\n    {\n      label: t(\"common.max\"),\n      value: 1,\n    },\n  ];\n\n  return (\n    <Flex gap={2} width={\"100%\"}>\n      {list.map((item, index) => {\n        return (\n          <Button\n            key={index}\n            variant=\"outlined\"\n            color=\"secondary\"\n            size=\"xs\"\n            onClick={(e) => {\n              e.stopPropagation();\n              e.preventDefault();\n              props.onClick(item.value);\n            }}\n            className=\"oui-w-1/5\"\n          >\n            {item.label}\n          </Button>\n        );\n      })}\n    </Flex>\n  );\n};\n","import { FC } from \"react\";\nimport { Button, CloseIcon, ThrottledButton } from \"@orderly.network/ui\";\nimport { commify } from \"@orderly.network/utils\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\n\nexport enum EditType {\n  quantity,\n  price,\n  triggerPrice,\n}\n\nexport const ConfirmContent: FC<{\n  type: EditType;\n  base: string;\n  value: string;\n  cancelPopover: () => void;\n  isSubmitting: boolean;\n  onConfirm: (e: any) => void;\n}> = (props) => {\n  const { type, base, value, cancelPopover, isSubmitting, onConfirm } = props;\n  const { t } = useTranslation();\n\n  const renderLabel = () => {\n    const common = {\n      values: { base, value: commify(value) },\n      components: [<span className=\"oui-text-warning-darken\" />],\n    };\n\n    switch (type) {\n      case EditType.quantity:\n        return (\n          // @ts-ignore\n          <Trans i18nKey=\"order.edit.confirm.quantity\" {...common} />\n        );\n      case EditType.price:\n        return (\n          // @ts-ignore\n          <Trans i18nKey=\"order.edit.confirm.price\" {...common} />\n        );\n      case EditType.triggerPrice:\n        return (\n          // @ts-ignore\n          <Trans i18nKey=\"order.edit.confirm.triggerPrice\" {...common} />\n        );\n    }\n  };\n\n  return (\n    <div className=\"oui-pt-5 oui-relative\">\n      <div className=\"oui-text-base-contrast-54 oui-text-2xs desktop:oui-text-sm\">\n        {renderLabel()}\n      </div>\n      <div className=\"oui-grid oui-grid-cols-2 oui-gap-2 oui-mt-5\">\n        <Button\n          color=\"secondary\"\n          size={\"md\"}\n          onClick={cancelPopover}\n          disabled={isSubmitting}\n        >\n          {t(\"common.cancel\")}\n        </Button>\n        <ThrottledButton size={\"md\"} loading={isSubmitting} onClick={onConfirm}>\n          {t(\"common.confirm\")}\n        </ThrottledButton>\n      </div>\n      <button\n        className=\"oui-absolute oui-right-0 oui-top-0 oui-text-base-contrast-54\"\n        onClick={cancelPopover}\n      >\n        <CloseIcon size={16} color=\"white\" opacity={1} />\n      </button>\n    </div>\n  );\n};\n","import { CheckIcon, Input, inputFormatter, Tooltip } from \"@orderly.network/ui\";\nimport { FC, useEffect } from \"react\";\n\nexport const InnerInput: FC<{\n  inputRef: any;\n  value: string;\n  setValue: any;\n  setEditing: any;\n  error?: string;\n  handleKeyDown: (e: any) => void;\n  onClick: (e: any) => void;\n  onClose: (e: any) => void;\n  onFocus?: (e: any) => void;\n  onBlur?: (e: any) => void;\n  dp: number;\n  hintInfo?: string;\n}> = (props) => {\n  const {\n    inputRef,\n    dp,\n    value,\n    setValue,\n    setEditing,\n    error,\n    handleKeyDown,\n    onClick,\n    onClose,\n    onFocus,\n    onBlur,\n    hintInfo,\n  } = props;\n\n  useEffect(() => {\n    const input = inputRef.current;\n    if (input) {\n      const length = input.value.length;\n      input.setSelectionRange(length, length);\n    }\n    setEditing(true);\n  }, []);\n  const open = (hintInfo?.length || 0) > 0;\n  return (\n    <Tooltip content={hintInfo} open={open}>\n      <Input\n        ref={inputRef}\n        type=\"text\"\n        size=\"sm\"\n        formatters={[\n          inputFormatter.numberFormatter,\n          inputFormatter.dpFormatter(dp),\n          inputFormatter.currencyFormatter,\n        ]}\n        value={value}\n        onValueChange={(e) => setValue(e)}\n        helpText={error}\n        onClick={(e) => {\n          e.stopPropagation();\n          e.preventDefault();\n        }}\n        autoComplete=\"off\"\n        onFocus={onFocus}\n        onBlur={onBlur}\n        onKeyDown={handleKeyDown}\n        autoFocus\n        color={open ? \"danger\" : undefined}\n        classNames={{\n          root: \"oui-bg-base-700 oui-px-2 oui-py-1 oui-rounded\",\n          input: \"oui-pr-2\",\n        }}\n        // prefix={\n        //   <CloseIcon\n        //     size={14}\n        //     color=\"white\"\n        //     opacity={1}\n        //     className=\"oui-cursor-pointer oui-opacity-50 hover:oui-opacity-100\"\n        //     onClick={(e) => {\n        //       e.stopPropagation();\n        //       e.preventDefault();\n        //       onClose(e);\n        //     }}\n        //   />\n        // }\n        suffix={\n          <button onClick={onClick}>\n            <CheckIcon\n              size={18}\n              color=\"white\"\n              opacity={1}\n              className=\"oui-cursor-pointer oui-opacity-50 hover:oui-opacity-100\"\n            />\n          </button>\n        }\n      />\n    </Tooltip>\n  );\n};\n","import { API } from \"@orderly.network/types\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { FC, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useSymbolPriceRange } from \"@orderly.network/hooks\";\nimport { cn, Flex, Popover, toast, Text } from \"@orderly.network/ui\";\nimport { ConfirmContent, EditType } from \"./editOrder/confirmContent\";\nimport { InnerInput } from \"./editOrder/innerInput\";\nimport { useOrderListContext } from \"../orderListContext\";\nimport { useSymbolContext } from \"../symbolProvider\";\nimport { grayCell } from \"../../../utils/util\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nexport const Price = (props: {\n  order: API.OrderExt;\n  disableEdit?: boolean;\n}) => {\n  const { order } = props;\n  const { t } = useTranslation();\n\n  const [price, setPrice] = useState<string>(() => {\n    if (order.type === OrderType.MARKET && !order.price) {\n      return \"Market\";\n    }\n    return order.price?.toString() ?? \"Market\";\n  });\n\n  const [open, setOpen] = useState(false);\n  const [editing, setEditing] = useState(false);\n\n  const isAlgoOrder = order?.algo_order_id !== undefined;\n\n  const isStopMarket = order?.type === \"MARKET\" && isAlgoOrder;\n\n  const [isSubmitting, setIsSubmitting] = useState(false);\n\n  const { editOrder, editAlgoOrder, checkMinNotional } = useOrderListContext();\n\n  const { base, quote_dp } = useSymbolContext();\n  const rangeInfo = useSymbolPriceRange(\n    order.symbol,\n    // @ts-ignore\n    order.side,\n    isAlgoOrder ? order.trigger_price : undefined\n  );\n  const closePopover = () => {\n    setOpen(false);\n    setEditing(false);\n  };\n  const cancelPopover = () => {\n    setOpen(false);\n    setPrice(order.price?.toString() ?? \"Market\");\n    setEditing(false);\n  };\n\n  const hintInfo = useMemo(() => {\n    if (!rangeInfo) return \"\";\n    if (isStopMarket) return \"\";\n    if (!editing) return \"\";\n\n    if (Number(price) > rangeInfo.max) {\n      return t(\"orders.price.greaterThan\", { max: rangeInfo.max });\n    }\n    if (Number(price) < rangeInfo.min) {\n      return t(\"orders.price.lessThan\", { min: rangeInfo.min });\n    }\n    return \"\";\n  }, [isStopMarket, editing, rangeInfo, price, t]);\n\n  const onClick = (event: any) => {\n    event?.stopPropagation();\n    event?.preventDefault();\n\n    if (hintInfo.length > 0) {\n      return;\n    }\n\n    if (price === `${order.price}`) {\n      setEditing(false);\n      return;\n    }\n\n    if (order.reduce_only !== true) {\n      const notionalText = checkMinNotional(\n        order.symbol,\n        price,\n        order.quantity\n      );\n      if (notionalText) {\n        toast.error(notionalText);\n        setIsSubmitting(false);\n        cancelPopover();\n        return;\n      }\n    }\n\n    setOpen(true);\n  };\n\n  const handleKeyDown = (event: any) => {\n    if (event.key === \"Enter\") {\n      onClick(event);\n    }\n  };\n\n  const onConfirm = () => {\n    setIsSubmitting(true);\n\n    let order_id = order.order_id;\n    let data: any = {\n      order_price: price,\n      order_quantity: order.quantity,\n      symbol: order.symbol,\n      order_type: order.type,\n      side: order.side,\n      // reduce_only: Boolean(order.reduce_only),\n    };\n    if (typeof order.reduce_only !== \"undefined\") {\n      data.reduce_only = order.reduce_only;\n    }\n\n    if (order.order_tag !== undefined) {\n      data = { ...data, order_tag: order.order_tag };\n    }\n\n    if (isAlgoOrder) {\n      order_id = order.algo_order_id as number;\n      data = {\n        ...data,\n        order_id,\n        price: price,\n        algo_order_id: order_id,\n      };\n    }\n\n    if (order?.visible_quantity === 0) {\n      data[\"visible_quantity\"] = 0;\n    }\n\n    // @ts-ignore\n    if (order.tag !== undefined) {\n      // @ts-ignore\n      data[\"order_tag\"] = order.tag;\n    }\n\n    let future;\n    if (order.algo_order_id !== undefined) {\n      future = editAlgoOrder(order.algo_order_id.toString(), data);\n    } else {\n      future = editOrder(order.order_id.toString(), data);\n    }\n\n    future\n      .then(\n        (result: any) => {\n          closePopover();\n          setPrice(price);\n          // setTimeout(() => inputRef.current?.blur(), 300);\n        },\n        (err: any) => {\n          toast.error(err.message);\n          cancelPopover();\n        }\n      )\n      .finally(() => setIsSubmitting(false));\n  };\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useEffect(() => {\n    {\n      if (!!props.order.price) {\n        setPrice(`${props.order.price}`);\n      }\n    }\n  }, [props.order.price]);\n\n  const componentRef = useRef<HTMLDivElement | null>(null);\n\n  const handleClickOutside = (event: any) => {\n    if (\n      componentRef.current &&\n      !componentRef.current.contains(event.target as Node) &&\n      !open\n    ) {\n      cancelPopover();\n    }\n  };\n\n  useEffect(() => {\n    document.addEventListener(\"mousedown\", handleClickOutside);\n\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [open, order.price]);\n\n  const isAlgoMarketOrder = order.algo_order_id && order.type == \"MARKET\";\n\n  if (isAlgoMarketOrder || price === \"Market\") {\n    return <span>{t(\"common.marketPrice\")}</span>;\n  }\n\n  const trigger = () => {\n    if (!editing || props.disableEdit) {\n      return (\n        <NormalState\n          order={order}\n          price={price}\n          setEditing={setEditing}\n          disableEdit={props.disableEdit}\n        />\n      );\n    }\n\n    return (\n      <InnerInput\n        inputRef={inputRef}\n        dp={quote_dp}\n        value={price}\n        setValue={setPrice}\n        setEditing={setEditing}\n        handleKeyDown={handleKeyDown}\n        onClick={onClick}\n        onClose={cancelPopover}\n        hintInfo={hintInfo}\n      />\n    );\n  };\n\n  return (\n    <Popover\n      open={open}\n      onOpenChange={setOpen}\n      content={\n        <ConfirmContent\n          type={EditType.price}\n          base={base}\n          value={price}\n          cancelPopover={cancelPopover}\n          isSubmitting={isSubmitting}\n          onConfirm={onConfirm}\n        />\n      }\n    >\n      <div\n        onClick={(e) => {\n          e.stopPropagation();\n          e.preventDefault();\n        }}\n        ref={componentRef}\n      >\n        {trigger()}\n      </div>\n    </Popover>\n  );\n};\n\nconst NormalState: FC<{\n  order: any;\n  price: string;\n  setEditing: any;\n  disableEdit?: boolean;\n}> = (props) => {\n  const { order, price } = props;\n\n  return (\n    <div\n      className={cn(\n        \"oui-flex oui-max-w-[110px] oui-justify-start oui-items-center oui-gap-1 oui-relative oui-font-semibold\",\n        grayCell(order) && \"oui-text-base-contrast-20\"\n      )}\n      onClick={(e) => {\n        e.stopPropagation();\n        e.preventDefault();\n        props.setEditing(true);\n      }}\n    >\n      <Flex\n        r=\"base\"\n        className={cn(\n          \"oui-min-w-[70px] oui-h-[28px]\",\n          !props.disableEdit &&\n            \"oui-bg-base-7 oui-px-2  oui-border oui-border-line-12\"\n        )}\n      >\n        <Text size=\"2xs\">{commifyOptional(price)}</Text>\n      </Flex>\n    </div>\n  );\n};\n","import { API } from \"@orderly.network/types\";\nimport { FC, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { cn, Flex, Popover, toast, Text } from \"@orderly.network/ui\";\n\nimport { ConfirmContent, EditType } from \"./editOrder/confirmContent\";\nimport { InnerInput } from \"./editOrder/innerInput\";\nimport { useOrderListContext } from \"../orderListContext\";\nimport { useSymbolContext } from \"../symbolProvider\";\nimport { grayCell } from \"../../../utils/util\";\n\nexport const TriggerPrice = (props: {\n  order: API.AlgoOrderExt;\n  disableEdit?: boolean;\n}) => {\n  const { order } = props;\n\n  const [price, setPrice] = useState<string>(\"\");\n\n  useEffect(() => {\n    setPrice(order.trigger_price?.toString() ?? \"0\");\n  }, [order.trigger_price]);\n\n  const isAlgoOrder = order?.algo_order_id !== undefined;\n  const isBracketOrder = order?.algo_type === \"BRACKET\";\n  const [open, setOpen] = useState(false);\n  const [editing, setEditing] = useState(false);\n\n  const [isSubmitting, setIsSubmitting] = useState(false);\n\n  const { editAlgoOrder, checkMinNotional } = useOrderListContext();\n\n  const { base, quote_dp, quote_max, quote_min } = useSymbolContext();\n\n  const hintInfo = useMemo(() => {\n    if (!isAlgoOrder || isBracketOrder) if (!editing) return undefined;\n    if (Number(price) > quote_max) {\n      return `Trigger price must be less than ${quote_max}`;\n    } else if (Number(price) < quote_min) {\n      return `Trigger price must be greater than ${quote_min}`;\n    }\n  }, [editing, price, isAlgoOrder, isBracketOrder]);\n\n  const closePopover = () => {\n    setOpen(false);\n    setEditing(false);\n  };\n  const cancelPopover = () => {\n    setPrice(order.trigger_price?.toString() ?? \"0\");\n    setOpen(false);\n    setEditing(false);\n  };\n\n  const componentRef = useRef<HTMLDivElement | null>(null);\n\n  const handleClickOutside = (event: any) => {\n    if (\n      componentRef.current &&\n      !componentRef.current.contains(event.target as Node) &&\n      !open\n    ) {\n      cancelPopover();\n    }\n  };\n\n  useEffect(() => {\n    document.addEventListener(\"mousedown\", handleClickOutside);\n\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [open, order.trigger_price]);\n\n  const onClick = (event: any) => {\n    event?.stopPropagation();\n    event?.preventDefault();\n\n    setEditing(false);\n\n    if (Number(price) === Number(order.trigger_price)) {\n      return;\n    }\n\n    if (order.price && order.reduce_only !== true) {\n      const notionalText = checkMinNotional(\n        order.symbol,\n        order.price,\n        order.quantity\n      );\n      if (notionalText) {\n        toast.error(notionalText);\n        setIsSubmitting(false);\n        cancelPopover();\n        return;\n      }\n    }\n\n    setOpen(true);\n  };\n\n  const handleKeyDown = (event: any) => {\n    if (event.key === \"Enter\") {\n      onClick(event);\n    }\n  };\n\n  const onConfirm = () => {\n    if ((hintInfo ?? \"\").length > 0) {\n      return;\n    }\n    setIsSubmitting(true);\n\n    let data: any = {\n      // price: price,\n      quantity: order.quantity,\n      trigger_price: price,\n      symbol: order.symbol,\n      // order_type: order.type,\n      // side: order.side,\n      // reduce_only: Boolean(order.reduce_only),\n      algo_order_id: order.algo_order_id,\n    };\n\n    if (order.order_tag !== undefined) {\n      data = { ...data, order_tag: order.order_tag };\n    }\n\n    editAlgoOrder(`${order.algo_order_id}`, data)\n      .then(\n        (result: any) => {\n          closePopover();\n          setPrice(price);\n          // setTimeout(() => inputRef.current?.blur(), 300);\n        },\n        (err: any) => {\n          toast.error(err.message);\n\n          setPrice(order.trigger_price?.toString() ?? \"--\");\n          cancelPopover();\n        }\n      )\n      .finally(() => setIsSubmitting(false));\n  };\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  if (!isAlgoOrder || isBracketOrder) {\n    return <Text>{`--`}</Text>;\n  }\n  const trigger = () => {\n    if (!editing || props.disableEdit) {\n      return (\n        <NormalState\n          order={order}\n          price={price}\n          setEditing={setEditing}\n          disableEdit={props.disableEdit}\n        />\n      );\n    }\n\n    return (\n      <InnerInput\n        inputRef={inputRef}\n        dp={quote_dp}\n        value={price}\n        setValue={setPrice}\n        setEditing={setEditing}\n        handleKeyDown={handleKeyDown}\n        onClick={onClick}\n        onClose={cancelPopover}\n        hintInfo={hintInfo}\n      />\n    );\n  };\n\n  return (\n    <Popover\n      open={open}\n      onOpenChange={setOpen}\n      content={\n        <ConfirmContent\n          type={EditType.triggerPrice}\n          base={base}\n          value={price}\n          cancelPopover={cancelPopover}\n          isSubmitting={isSubmitting}\n          onConfirm={onConfirm}\n        />\n      }\n    >\n      <div\n        onClick={(e) => {\n          e.stopPropagation();\n          e.preventDefault();\n        }}\n        ref={componentRef}\n      >\n        {trigger()}\n      </div>\n    </Popover>\n  );\n};\n\nconst NormalState: FC<{\n  order: any;\n  price: string;\n  setEditing: any;\n  disableEdit?: boolean;\n}> = (props) => {\n  const { order, price } = props;\n\n  return (\n    <div\n      className={cn(\n        \"oui-flex oui-max-w-[110px] oui-justify-start oui-items-center oui-gap-1 oui-relative oui-font-semibold\",\n        grayCell(order) && \"oui-text-base-contrast-20\"\n      )}\n      onClick={(e) => {\n        e.stopPropagation();\n        e.preventDefault();\n        props.setEditing(true);\n      }}\n    >\n      <Flex\n        r=\"base\"\n        className={cn(\n          \"oui-min-w-[70px] oui-h-[28px]\",\n          !props.disableEdit &&\n            \"oui-bg-base-7 oui-px-2 oui-border oui-border-line-12\"\n        )}\n      >\n        <Text size=\"2xs\">{price}</Text>\n      </Flex>\n    </div>\n  );\n};\n","import { FC, useState } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { ThrottledButton, toast } from \"@orderly.network/ui\";\nimport { useOrderListContext } from \"../orderListContext\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const CancelButton: FC<{\n  order: API.Order;\n}> = (props) => {\n  const { order } = props;\n  const { t } = useTranslation();\n\n  const { onCancelOrder } = useOrderListContext();\n  const [isLoading, setIsLoading] = useState(false);\n\n  return (\n    <ThrottledButton\n      size=\"sm\"\n      variant={\"outlined\"}\n      color={\"secondary\"}\n      onClick={(event) => {\n        if (!onCancelOrder) return;\n        event.preventDefault();\n        event.stopPropagation();\n        setIsLoading(true);\n        onCancelOrder(order)\n          .then(\n            (res: any) => res,\n            (error: any) => {\n              toast.error(error.message);\n            }\n          )\n          .finally(() => {\n            setIsLoading(false);\n          });\n      }}\n      loading={isLoading}\n    >\n      {t(\"common.cancel\")}\n    </ThrottledButton>\n  );\n};\n","import { FC, useCallback, useState } from \"react\";\nimport { useConfig, useMutation } from \"@orderly.network/hooks\";\nimport { OrderEntity } from \"@orderly.network/types\";\nimport { Button } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Renew: FC<{ record: any }> = (props) => {\n  const { record } = props;\n  const [open, setOpen] = useState(false);\n  const [doCreateOrder, { data, error, reset, isMutating }] = useMutation<\n    OrderEntity,\n    any\n  >(\"/v1/order\");\n\n  const { t } = useTranslation();\n\n  const brokerId = useConfig(\"brokerId\");\n  const onSubmit = useCallback(() => {\n    setOpen(false);\n    const data: OrderEntity = {\n      symbol: record.symbol,\n      order_type: record.type,\n      order_price: record.price,\n      order_quantity: record.quantity,\n      order_amount: record.amount,\n      // visible_quantity: record.visible,\n      side: record.side,\n      // reduce_only: record.reduce_only,\n      broker_id: brokerId,\n    };\n\n    if (Number(record.visible_quantity) < Number(record.quantity)) {\n      data.visible_quantity = 0;\n    }\n\n    if (typeof record.reduce_only !== \"undefined\") {\n      data.reduce_only = record.reduce_only;\n    }\n\n    doCreateOrder(data);\n  }, []);\n\n  return (\n    <Button\n      size={\"sm\"}\n      variant={\"outlined\"}\n      color={\"secondary\"}\n      loading={isMutating}\n      disabled={isMutating}\n      onClick={(event) => {\n        if (isMutating) return;\n        event.preventDefault();\n        event.stopPropagation();\n        onSubmit();\n      }}\n    >\n      {t(\"orders.history.renew\")}\n    </Button>\n  );\n};\n","import { FC, useMemo } from \"react\";\nimport { useSymbolsInfo, utils } from \"@orderly.network/hooks\";\nimport { API, AlgoOrderType } from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { cn, Text, Tooltip } from \"@orderly.network/ui\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nexport const OrderTriggerPrice = () => {\n  const { sl_trigger_price, tp_trigger_price, order, position } =\n    useTPSLOrderRowContext();\n\n  return (\n    <TPSLTriggerPrice\n      stopLossPrice={sl_trigger_price}\n      takeProfitPrice={tp_trigger_price}\n      direction={\"column\"}\n      order={order}\n      position={position}\n      tooltip\n    />\n  );\n};\n\nexport const TPSLTriggerPrice: FC<{\n  takeProfitPrice: number | undefined;\n  stopLossPrice: number | undefined;\n  className?: string;\n  direction?: \"row\" | \"column\";\n  tooltip?: boolean;\n  order?: API.AlgoOrder;\n  position?: API.PositionTPSLExt;\n}> = (props) => {\n  const { direction = \"row\", order, position } = props;\n  // const symbolInfo = useSymbolsInfo()[position?.symbol ?? \"\"]();\n  const symbolInfo = useSymbolsInfo();\n  const { t } = useTranslation();\n\n  const pnl = useMemo(() => {\n    const msgs = [];\n\n    if (!props.tooltip || !order || !position) return;\n\n    let quantity = order.quantity;\n\n    if (quantity === 0) {\n      if (order.child_orders?.[0].type === \"CLOSE_POSITION\") {\n        quantity = position.position_qty;\n      }\n    }\n\n    if (!!props.takeProfitPrice) {\n      msgs.push(\n        <TriggerPriceItem\n          key={\"tp\"}\n          qty={quantity}\n          price={props.takeProfitPrice}\n          entryPrice={position.average_open_price}\n          orderSide={order.side as OrderSide}\n          orderType={AlgoOrderType.TAKE_PROFIT}\n          symbolInfo={symbolInfo[order.symbol]()}\n        />\n      );\n    }\n\n    if (!!props.stopLossPrice) {\n      msgs.push(\n        <TriggerPriceItem\n          key={\"sl\"}\n          qty={quantity}\n          price={props.stopLossPrice}\n          entryPrice={position.average_open_price}\n          orderSide={order.side as OrderSide}\n          orderType={AlgoOrderType.STOP_LOSS}\n          symbolInfo={symbolInfo[order.symbol]()}\n        />\n      );\n    }\n\n    return <div>{msgs}</div>;\n  }, [\n    props.takeProfitPrice,\n    props.stopLossPrice,\n    position?.average_open_price,\n    order?.side,\n    order?.quantity,\n    order?.algo_type,\n  ]);\n\n  const child = useMemo(() => {\n    const children = [];\n\n    if (!order?.symbol) return <span>-</span>;\n    if (props.takeProfitPrice) {\n      children.push(\n        <Text.numeral\n          className={cn(\n            \"oui-text-trade-profit oui-gap-0  oui-decoration-white/20 oui-border-b oui-border-dashed oui-border-base-contrast-12\"\n          )}\n          key={\"tp\"}\n          rule=\"price\"\n          dp={symbolInfo[order!.symbol](\"quote_dp\", 2)}\n          children={props.takeProfitPrice}\n          // @ts-ignore\n          prefix={\n            !props.stopLossPrice || direction === \"column\" ? (\n              <span className={\"oui-text-base-contrast-54\"}>\n                {`${t(\"tpsl.tp\")} -`}&nbsp;\n              </span>\n            ) : (\n              \"\"\n            )\n          }\n        />\n      );\n    }\n    if (props.stopLossPrice) {\n      children.push(\n        <Text.numeral\n          key={\"sl\"}\n          className={cn(\n            \"oui-text-trade-loss oui-gap-0 oui-decoration-white/20 oui-border-b oui-border-dashed oui-border-base-contrast-12\"\n          )}\n          rule={\"price\"}\n          dp={symbolInfo[order!.symbol](\"quote_dp\", 2)}\n          children={props.stopLossPrice}\n          // @ts-ignore\n          prefix={\n            !props.takeProfitPrice || direction === \"column\" ? (\n              <span className={\"oui-text-base-contrast-54\"}>\n                {`${t(\"tpsl.sl\")} -`}&nbsp;\n              </span>\n            ) : (\n              \"\"\n            )\n          }\n        />\n      );\n    }\n\n    if (children.length === 0) return <span>-</span>;\n\n    if (children.length === 2 && direction === \"row\") {\n      children.splice(1, 0, <span key={\"split\"}>/</span>);\n    }\n\n    return children;\n  }, [props.takeProfitPrice, props.stopLossPrice, order?.symbol, t]);\n\n  const content = (\n    <div\n      className={cn(\n        \"oui-inline-flex oui-text-base-contrast-36\",\n        props.direction === \"column\"\n          ? \"oui-flex-col\"\n          : \"oui-flex-row oui-gap-1\",\n        props.className\n      )}\n    >\n      {child}\n    </div>\n  );\n\n  if (props.tooltip) {\n    // @ts-ignore\n    return (\n      <Tooltip\n        // @ts-ignore\n        content={pnl}\n        className=\"oui-bg-base-5\"\n        arrow={{ className: \"oui-fill-base-5\" }}\n      >\n        {content}\n      </Tooltip>\n    );\n  }\n\n  return content;\n};\n\nconst TriggerPriceItem: FC<{\n  qty: number;\n  price: number;\n  entryPrice: number;\n  orderSide: OrderSide;\n  orderType: AlgoOrderType;\n  symbolInfo: API.SymbolExt;\n}> = (props) => {\n  const { qty, price, entryPrice, orderSide, orderType, symbolInfo } = props;\n  const { t } = useTranslation();\n\n  const pnl = utils.priceToPnl(\n    {\n      qty,\n      price,\n      entryPrice,\n      orderSide,\n      orderType,\n    },\n    {\n      symbol: symbolInfo,\n    }\n  );\n\n  const type = orderType === AlgoOrderType.TAKE_PROFIT ? \"TP\" : \"SL\";\n  const label = type === \"TP\" ? `${t(\"tpsl.tpPnl\")}:` : `${t(\"tpsl.slPnl\")}:`;\n\n  // console.log(\"trigger price item\", \"dp\", symbolInfo.quote_dp);\n\n  return (\n    <div className=\"oui-flex oui-items-center\">\n      <span className=\"oui-text-base-contrast-54 oui-mr-1\">{label}</span>\n      <Text.numeral\n        rule=\"price\"\n        dp={symbolInfo.quote_dp}\n        padding={false}\n        className={\n          pnl === 0\n            ? \"oui-text-base-contrast-36\"\n            : pnl > 0\n            ? \"oui-text-trade-profit oui-gap-0\"\n            : \"oui-text-trade-loss oui-gap-0\"\n        }\n        // @ts-ignore\n        prefix={\n          // @ts-ignore\n          <span>{pnl === 0 ? \"\" : pnl > 0 ? \"+\" : \"-\"}</span>\n        }\n        suffix={\n          <span className=\"oui-text-base-contrast-36 oui-ml-1\">USDC</span>\n        }\n      >{`${Math.abs(pnl)}`}</Text.numeral>\n    </div>\n  );\n};\n","import { useMemo } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { Flex, Tooltip, Text, cn } from \"@orderly.network/ui\";\nimport { useSymbolContext } from \"../symbolProvider\";\nimport { calcBracketRoiAndPnL } from \"../../../utils/util\";\nimport { utils } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const BracketOrderPrice = (props: { order: API.AlgoOrderExt }) => {\n  const { order } = props;\n  const { quote_dp, base_dp } = useSymbolContext();\n  const { t } = useTranslation();\n\n  const { sl_trigger_price, tp_trigger_price } = useMemo(() => {\n    if (!(\"algo_type\" in order) || !Array.isArray(order.child_orders)) {\n      return {};\n    }\n    return utils.findTPSLFromOrder(props.order.child_orders[0]);\n  }, [props.order]);\n\n  const { pnl, roi } = calcBracketRoiAndPnL(order);\n\n  if (!tp_trigger_price && !sl_trigger_price) {\n    return \"--\";\n  }\n\n  return (\n    <Tooltip\n      // @ts-ignore\n      content={\n        <Flex direction={\"column\"} itemAlign={\"start\"} gap={1}>\n          {typeof pnl.tpPnL !== \"undefined\" && (\n            <Text.numeral\n              // @ts-ignore\n              prefix={\n                <Text intensity={80}>{`${t(\"tpsl.tpPnl\")}:`} &nbsp;</Text>\n              }\n              suffix={<Text intensity={20}>{\" USDC\"}</Text>}\n              dp={quote_dp}\n              color=\"buy\"\n              showIdentifier\n            >\n              {pnl.tpPnL}\n            </Text.numeral>\n          )}\n          {typeof pnl.slPnL !== \"undefined\" && (\n            <Text.numeral\n              // @ts-ignore\n              prefix={\n                <Text intensity={80}>{`${t(\"tpsl.slPnl\")}:`} &nbsp;</Text>\n              }\n              suffix={<Text intensity={20}>{\" USDC\"}</Text>}\n              dp={quote_dp}\n              color=\"sell\"\n            >\n              {pnl.slPnL}\n            </Text.numeral>\n          )}\n        </Flex>\n      }\n      className=\"oui-bg-base-6\"\n    >\n      <Flex\n        direction={\"column\"}\n        width={\"100%\"}\n        justify={\"start\"}\n        itemAlign={\"start\"}\n      >\n        <Price type=\"TP\" value={tp_trigger_price} quote_dp={quote_dp} />\n        <Price type=\"SL\" value={sl_trigger_price} quote_dp={quote_dp} />\n      </Flex>\n    </Tooltip>\n  );\n};\n\nconst Price = (props: {\n  type: \"TP\" | \"SL\";\n  value?: number | string;\n  quote_dp: number;\n}) => {\n  const { type, value, quote_dp } = props;\n  const { t } = useTranslation();\n\n  return value ? (\n    <Text.numeral\n      className={cn(\n        \"oui-gap-0 oui-decoration-white/20 oui-border-b oui-border-dashed oui-border-base-contrast-12\",\n        type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\"\n      )}\n      key={\"tp\"}\n      rule=\"price\"\n      dp={quote_dp}\n      // @ts-ignore\n      prefix={\n        <span className={\"oui-text-base-contrast-54\"}>\n          {type === \"TP\" ? `${t(\"tpsl.tp\")} -` : `${t(\"tpsl.sl\")} -`}\n          &nbsp;\n        </span>\n      }\n    >\n      {value}\n    </Text.numeral>\n  ) : (\n    <></>\n  );\n};\n","import { API } from \"@orderly.network/types\";\nimport { PositionTPSLPopover } from \"@orderly.network/ui-tpsl\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\nimport { useSymbolContext } from \"../symbolProvider\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const TP_SLEditButton = (props: { order: API.Order }) => {\n  const { position, order } = useTPSLOrderRowContext();\n  const { quote_dp, base_dp } = useSymbolContext();\n  const { t } = useTranslation();\n\n  return (\n    <PositionTPSLPopover\n      quoteDP={quote_dp}\n      baseDP={base_dp}\n      position={position!}\n      order={order}\n      label={t(\"common.edit\")}\n      isEditing\n    />\n  );\n};\n","import { utils } from \"@orderly.network/hooks\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\nimport { i18n, useTranslation } from \"@orderly.network/i18n\";\nimport { Text } from \"@orderly.network/ui\";\n\nexport const TPSLOrderPrice = () => {\n  const { sl_trigger_price, tp_trigger_price } = useTPSLOrderRowContext();\n  const { t } = useTranslation();\n\n  return (\n    <div>\n      {!!tp_trigger_price ? (\n        <div className={\"oui-text-base-contrast-80 oui-td-bg-transparent\"}>\n          <Text intensity={54}>{`${t(\"tpsl.tp\")} -`}&nbsp;</Text>\n          <span>{t(\"common.marketPrice\")}</span>\n        </div>\n      ) : null}\n      {!!sl_trigger_price ? (\n        <div className={\"oui-text-base-contrast-80 oui-td-bg-transparent\"}>\n          <span className={\"oui-text-base-contrast-54\"}>\n            {`${t(\"tpsl.sl\")} -`}&nbsp;\n          </span>\n          <span>{t(\"common.marketPrice\")}</span>\n        </div>\n      ) : null}\n    </div>\n  );\n};\n\nexport function useTPSLOrderPrice(order: any) {\n  // @ts-ignore\n  const { sl_trigger_price, tp_trigger_price } =\n    !(\"algo_type\" in order) || !Array.isArray(order.child_orders)\n      ? {}\n      : utils.findTPSLFromOrder(order);\n\n  const tpTriggerPrice = tp_trigger_price\n    ? `${i18n.t(\"tpsl.tp\")} - ${i18n.t(\"common.marketPrice\")}`\n    : undefined;\n  const slTriggerPrice = sl_trigger_price\n    ? `${i18n.t(\"tpsl.sl\")} - ${i18n.t(\"common.marketPrice\")}`\n    : undefined;\n\n  return { tpTriggerPrice, slTriggerPrice };\n}\n","import { FC } from \"react\";\nimport { modal, ShareIcon } from \"@orderly.network/ui\";\nimport { ShareButtonState } from \"./shareButton.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const ShareButton: FC<ShareButtonState> = (props) => {\n  const { t } = useTranslation();\n\n  if (props.sharePnLConfig == null) return <></>;\n\n  return (\n    <button\n      type=\"button\"\n      onClick={(e: any) => {\n        e.stopPropagation();\n        modal.show(props.modalId, {\n          pnl: {\n            entity: {\n              symbol: props.order.symbol,\n              pnl: props.order.realized_pnl,\n              side:\n                props.order.side == \"BUY\"\n                  ? t(\"share.pnl.share.long\")\n                  : t(\"share.pnl.share.short\"),\n              openPrice: props.order.average_executed_price,\n              openTime: props.order.updated_time,\n              quantity: props.order.quantity,\n            },\n            refCode: props.refCode,\n            leverage: props.leverage,\n            ...props.sharePnLConfig,\n          },\n        });\n      }}\n    >\n      <ShareIcon color=\"white\" opacity={0.54} size={props.iconSize ?? 16} />\n    </button>\n  );\n};\n","import { useMemo } from \"react\";\nimport { useReferralInfo, useSymbolLeverage } from \"@orderly.network/hooks\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\n\nexport const useShareButtonScript = (props: {\n  order: any;\n  sharePnLConfig?: SharePnLConfig;\n  modalId: string;\n  iconSize?: number;\n}) => {\n  const { sharePnLConfig, order, modalId, iconSize } = props;\n  const { getFirstRefCode } = useReferralInfo();\n  const refCode = useMemo(() => {\n    return getFirstRefCode()?.code;\n  }, [getFirstRefCode]);\n  const leverage = useSymbolLeverage(props.order.symbol);\n  return {\n    iconSize,\n    order,\n    refCode,\n    leverage,\n    sharePnLConfig,\n    modalId,\n  };\n};\n\nexport type ShareButtonState = ReturnType<typeof useShareButtonScript>;\n","import { useShareButtonScript } from \"./shareButton.script\";\nimport { ShareButton } from \"./shareButton.ui\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\n\nexport const ShareButtonWidget = (props: {\n  order: any;\n  sharePnLConfig?: SharePnLConfig;\n  modalId: string;\n  iconSize?: number;\n}) => {\n  const state = useShareButtonScript(props);\n  return <ShareButton {...state} />;\n};\n","import React, { FC } from \"react\";\nimport { Divider, Flex, Grid, Text } from \"@orderly.network/ui\";\nimport { OrderCellState } from \"./orderCell.script\";\nimport {\n  OrderTime,\n  SymbolToken,\n  OrderTypeView,\n  Qty,\n  Filled,\n  EstTotal,\n  TriggerPrice,\n  LimitPrice,\n  MarkPrice,\n  TPTrigger,\n  TPPrice,\n  TPSLQuantity,\n  SLTrigger,\n  SLPrice,\n  AvgPrice,\n  OrderPrice,\n  RealizedPnL,\n  OrderState,\n} from \"./items\";\nimport { EditBtnWidget } from \"./editBtn\";\nimport { CancelBtnWidget } from \"./cancelBtn\";\nimport { BracketOrderPriceWidget } from \"./bracketOrderPrice\";\nimport { TabType } from \"../../orders.widget\";\n\nexport const OrderCell: FC<\n  OrderCellState & {\n    className?: string;\n  }\n> = (props) => {\n  return (\n    <Flex\n      direction={\"column\"}\n      width={\"100%\"}\n      gap={2}\n      itemAlign={\"start\"}\n      className={props.className}\n    >\n      <Header {...props} />\n      <Divider intensity={6} className=\"oui-w-full\" />\n      <Body {...props} />\n      {props.type === TabType.pending && <BracketOrderPriceWidget {...props} />}\n      {props.type !== TabType.orderHistory && <Btns {...props} />}\n    </Flex>\n  );\n};\n\nexport const Header: FC<OrderCellState> = (props) => {\n  return (\n    <Flex direction={\"column\"} gap={1} width={\"100%\"}>\n      <Flex justify={\"between\"} width={\"100%\"}>\n        <SymbolToken {...props} />\n        <OrderTime {...props} />\n      </Flex>\n      <Flex width={\"100%\"} justify={\"between\"}>\n        <OrderTypeView {...props} />\n        {props.type === TabType.orderHistory && <OrderState {...props} />}\n      </Flex>\n    </Flex>\n  );\n};\n\nexport const Body: FC<OrderCellState> = (props) => {\n  return (\n    <Grid cols={3} rows={2} width={\"100%\"} gap={1}>\n      {itemsWithType(props)}\n    </Grid>\n  );\n};\n\nexport const Btns: FC<OrderCellState> = (props) => {\n  return (\n    <Grid cols={3} rows={1} width={\"100%\"} gap={2}>\n      <div></div>\n      <EditBtnWidget state={props} />\n      <CancelBtnWidget state={props} />\n    </Grid>\n  );\n};\n\nfunction itemsWithType(props: OrderCellState) {\n  switch (props.type) {\n    case TabType.all:\n      return <></>;\n    case TabType.pending:\n      return (\n        <>\n          <Qty {...props} />\n          <Filled {...props} />\n          <EstTotal {...props} />\n          <TriggerPrice {...props} />\n          <LimitPrice {...props} />\n          <MarkPrice {...props} />\n        </>\n      );\n\n    case TabType.tp_sl:\n      return (\n        <>\n          <TPTrigger {...props} />\n          <TPPrice {...props} />\n          <TPSLQuantity {...props} />\n          <SLTrigger {...props} />\n          <SLPrice {...props} />\n        </>\n      );\n    case TabType.filled:\n      return <></>;\n    case TabType.cancelled:\n      return <></>;\n    case TabType.rejected:\n      return <></>;\n    case TabType.orderHistory:\n      return (\n        <>\n          <Qty {...props} />\n          <Filled {...props} />\n          <TriggerPrice {...props} align=\"end\" />\n          <AvgPrice {...props} />\n          <OrderPrice {...props} />\n          <RealizedPnL {...props} />\n        </>\n      );\n  }\n}\n","import { Badge, cn, Flex, Statistic, Text, Tooltip } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { OrderCellState } from \"./orderCell.script\";\nimport {\n  FC,\n  PropsWithChildren,\n  ReactNode,\n  useCallback,\n  useMemo,\n  useState,\n} from \"react\";\nimport { parseBadgesFor, upperCaseFirstLetter } from \"../../../utils/util\";\nimport {\n  AlgoOrderRootType,\n  API,\n  OrderStatus,\n  OrderType,\n} from \"@orderly.network/types\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { ShareButtonWidget } from \"../../shareButton\";\nimport { SharePnLBottomSheetId } from \"@orderly.network/ui-share\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const SymbolToken: FC<OrderCellState> = (props) => {\n  const { item } = props;\n  const isBuy = item.side === OrderSide.BUY;\n  const { t } = useTranslation();\n\n  return (\n    <Text.formatted\n      intensity={80}\n      rule=\"symbol\"\n      formatString=\"base-type\"\n      size=\"sm\"\n      // @ts-ignore\n      prefix={\n        <Badge color={isBuy ? \"success\" : \"danger\"} size=\"xs\">\n          {isBuy ? t(\"common.buy\") : t(\"common.sell\")}\n        </Badge>\n      }\n      onClick={() => {\n        props.onSymbolChange?.({ symbol: item.symbol } as API.Symbol);\n      }}\n      // showIcon\n    >\n      {item.symbol}\n    </Text.formatted>\n  );\n};\n\nexport const OrderTypeView: FC<OrderCellState> = (props) => {\n  const { item } = props;\n\n  const orderType = useCallback(() => {\n    const type =\n      typeof item.type === \"string\"\n        ? item.type.replace(\"_ORDER\", \"\").toLowerCase()\n        : item.type;\n    const isAlgoOrder =\n      item.algo_order_id && item.algo_type !== AlgoOrderRootType.BRACKET;\n    if (isAlgoOrder) {\n      return `Stop ${type}`;\n    }\n    return upperCaseFirstLetter(item.type);\n  }, [item]);\n\n  return (\n    <Flex direction={\"row\"} gap={1}>\n      {parseBadgesFor(props.item)?.map((e, index) => (\n        <Badge\n          key={index}\n          color={e.toLocaleLowerCase() === \"position\" ? \"primary\" : \"neutral\"}\n          size=\"xs\"\n        >\n          {e}\n        </Badge>\n      ))}\n    </Flex>\n  );\n};\n\nexport const OrderTime: FC<OrderCellState> = (props) => {\n  const { item } = props;\n\n  return (\n    <Text.formatted\n      rule={\"date\"}\n      formatString=\"yyyy-MM-dd hh:mm:ss\"\n      intensity={36}\n      size=\"2xs\"\n    >\n      {item.updated_time}\n    </Text.formatted>\n  );\n};\n\nexport const OrderState: FC<OrderCellState> = (props) => {\n  const { item } = props;\n  const { t } = useTranslation();\n  // @ts-ignore\n  const status = item.status || item.algo_status;\n\n  const statusMap = useMemo(() => {\n    return {\n      [OrderStatus.NEW]: t(\"orders.status.pending\"),\n      [OrderStatus.FILLED]: t(\"orders.status.filled\"),\n      [OrderStatus.PARTIAL_FILLED]: t(\"orders.status.partialFilled\"),\n      [OrderStatus.CANCELLED]: t(\"orders.status.canceled\"),\n      [OrderStatus.REJECTED]: t(\"orders.status.rejected\"),\n      [OrderStatus.INCOMPLETE]: t(\"orders.status.incomplete\"),\n      [OrderStatus.COMPLETED]: t(\"orders.status.completed\"),\n    };\n  }, [t]);\n\n  return (\n    <Text.formatted intensity={80} size=\"2xs\">\n      {statusMap[status as keyof typeof statusMap] ||\n        upperCaseFirstLetter(status)}\n    </Text.formatted>\n  );\n};\n\nexport const Qty: FC<OrderCellState> = (props) => {\n  const { item } = props;\n  const { t } = useTranslation();\n  const isEntirePosition =\n    item.type === OrderType.CLOSE_POSITION &&\n    // @ts-ignore\n    item?.status !== OrderStatus.FILLED;\n\n  return (\n    <Statistic\n      label={t(\"common.qty\")}\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <Text.numeral\n        dp={props.base_dp}\n        padding={false}\n        coloring\n        placeholder={t(\"tpsl.entirePosition\")}\n        intensity={80}\n      >\n        {isEntirePosition ? t(\"tpsl.entirePosition\") : item.quantity}\n      </Text.numeral>\n    </Statistic>\n  );\n};\n\nexport const Filled: FC<OrderCellState> = (props) => {\n  const { item } = props;\n  const { t } = useTranslation();\n\n  return (\n    <Statistic\n      label={<Text>{t(\"orders.status.filled\")}</Text>}\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <Text.numeral\n        dp={props.base_dp}\n        intensity={80}\n        padding={false}\n        rm={Decimal.ROUND_DOWN}\n      >\n        {/* {item.algo_order_id\n          ? item.total_executed_quantity\n          : (item as unknown as API.OrderExt).executed} */}\n        {item.total_executed_quantity}\n      </Text.numeral>\n    </Statistic>\n  );\n};\n\nexport const Notional: FC<OrderCellState> = (props) => {\n  const { item } = props;\n  const { t } = useTranslation();\n\n  return (\n    <Statistic\n      align=\"end\"\n      label={\n        <Text>\n          {t(\"common.notional\")}\n          <Text intensity={20}>(USDC)</Text>\n        </Text>\n      }\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <Text.numeral\n        dp={props.quote_dp}\n        coloring\n        intensity={80}\n        padding={false}\n        rm={Decimal.ROUND_DOWN}\n      >\n        {(item as any).notional ?? \"--\"}\n      </Text.numeral>\n    </Statistic>\n  );\n};\n\nexport const EstTotal: FC<OrderCellState> = (props) => {\n  const { item } = props;\n  const { t } = useTranslation();\n\n  const value = useMemo(() => {\n    if (item.price && item.quantity) {\n      return new Decimal(item.price)\n        .mul(item.quantity)\n        .toFixed(props.quote_dp, Decimal.ROUND_DOWN);\n    }\n    return \"--\";\n  }, [item.price, item.quantity]);\n\n  return (\n    <Statistic\n      align=\"end\"\n      label={\n        <Text>\n          {t(\"common.notional\")}\n          <Text intensity={20}>(USDC)</Text>\n        </Text>\n      }\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <Text.numeral\n        dp={props.quote_dp}\n        coloring\n        intensity={80}\n        padding={false}\n        rm={Decimal.ROUND_DOWN}\n      >\n        {value}\n      </Text.numeral>\n    </Statistic>\n  );\n};\n\nexport const TriggerPrice: FC<\n  OrderCellState & {\n    align?: \"start\" | \"end\";\n  }\n> = (props) => {\n  const { item } = props;\n  const { t } = useTranslation();\n\n  return (\n    <Statistic\n      label={t(\"orders.column.triggerPrice\")}\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n      align={props.align}\n    >\n      <Text.numeral\n        dp={props.quote_dp}\n        intensity={80}\n        padding={false}\n        rm={Decimal.ROUND_DOWN}\n      >\n        {item.trigger_price ?? \"--\"}\n      </Text.numeral>\n    </Statistic>\n  );\n};\n\nexport const MarkPrice: FC<OrderCellState> = (props) => {\n  const { item } = props;\n  const { t } = useTranslation();\n\n  return (\n    <Statistic\n      label={t(\"common.markPrice\")}\n      align=\"end\"\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <Text.numeral\n        dp={props.quote_dp}\n        rm={Decimal.ROUND_DOWN}\n        intensity={80}\n        padding={false}\n      >\n        {item.mark_price}\n      </Text.numeral>\n    </Statistic>\n  );\n};\n\nexport const LimitPrice: FC<OrderCellState> = (props) => {\n  const { item } = props;\n  const { t } = useTranslation();\n\n  const isAlgoOrder = item?.algo_order_id !== undefined;\n  const isStopMarket = item?.type === \"MARKET\" && isAlgoOrder;\n\n  return (\n    <Statistic\n      label={t(\"common.limitPrice\")}\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      {isStopMarket ? (\n        <Text>{t(\"common.marketPrice\")}</Text>\n      ) : (\n        <Text.numeral\n          dp={props.quote_dp}\n          rm={Decimal.ROUND_DOWN}\n          intensity={80}\n          padding={false}\n        >\n          {item.price ?? \"--\"}\n        </Text.numeral>\n      )}\n    </Statistic>\n  );\n};\n\nexport const TPTrigger: FC<OrderCellState> = (props) => {\n  const { tp_trigger_price, tpPnL } = useTPSLOrderRowContext();\n  const { t } = useTranslation();\n\n  return (\n    <Statistic\n      label={t(\"tpsl.tpTrigger\")}\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <MobileTooltip\n        content={\n          tpPnL && (\n            <Text.numeral\n              size=\"2xs\"\n              showIdentifier\n              // @ts-ignore\n              prefix={<Text intensity={54}>{`${t(\"tpsl.tpPnl\")}:`}&nbsp;</Text>}\n              suffix={<Text intensity={20}>&nbsp;USDC</Text>}\n              coloring\n            >\n              {tpPnL}\n            </Text.numeral>\n          )\n        }\n        classNames={{\n          content: \"oui-bg-base-6 oui-ml-2\",\n          arrow: \"oui-fill-base-6\",\n        }}\n      >\n        <Text.numeral\n          dp={props.quote_dp}\n          rm={Decimal.ROUND_DOWN}\n          color=\"buy\"\n          padding={false}\n          className={\n            tp_trigger_price\n              ? \"oui-border-b oui-border-dashed oui-border-base-contrast-12\"\n              : undefined\n          }\n        >\n          {tp_trigger_price ?? \"--\"}\n        </Text.numeral>\n      </MobileTooltip>\n    </Statistic>\n  );\n};\n\nexport const SLTrigger: FC<OrderCellState> = (props) => {\n  const { sl_trigger_price, slPnL } = useTPSLOrderRowContext();\n  const { t } = useTranslation();\n\n  return (\n    <Statistic\n      label={t(\"tpsl.slTrigger\")}\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <MobileTooltip\n        content={\n          slPnL && (\n            <Text.numeral\n              size=\"2xs\"\n              // @ts-ignore\n              prefix={\n                <Text intensity={54}>{`${t(\"tpsl.slPnl\")}:`}&nbsp;&nbsp;</Text>\n              }\n              suffix={<Text intensity={20}>&nbsp;USDC</Text>}\n              coloring\n            >\n              {slPnL}\n            </Text.numeral>\n          )\n        }\n        classNames={{\n          content: \"oui-bg-base-6 oui-ml-2\",\n          arrow: \"oui-fill-base-6\",\n        }}\n      >\n        <Text.numeral\n          dp={props.quote_dp}\n          rm={Decimal.ROUND_DOWN}\n          color=\"sell\"\n          padding={false}\n          className={\n            sl_trigger_price\n              ? \"oui-border-b oui-border-dashed oui-border-base-contrast-12\"\n              : undefined\n          }\n        >\n          {sl_trigger_price ?? \"--\"}\n        </Text.numeral>\n      </MobileTooltip>\n    </Statistic>\n  );\n};\n\nexport const TPPrice: FC<OrderCellState> = (props) => {\n  // const { tp_trigger_price } = useTPSLOrderRowContext();\n  const { t } = useTranslation();\n\n  return (\n    <Statistic\n      label={t(\"tpsl.tpPrice\")}\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <Text intensity={80}>{t(\"common.marketPrice\")}</Text>\n    </Statistic>\n  );\n};\nexport const SLPrice: FC<OrderCellState> = (props) => {\n  const { t } = useTranslation();\n\n  return (\n    <Statistic\n      label={t(\"tpsl.slPrice\")}\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <Text intensity={80}>{t(\"common.marketPrice\")}</Text>\n    </Statistic>\n  );\n};\n\nexport const TPSLQuantity: FC<OrderCellState> = (props) => {\n  const { item } = props;\n  const { t } = useTranslation();\n\n  const quantity = useMemo(() => {\n    if (item.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL) {\n      return (\n        <span className=\"oui-text-base-contrast-80\">\n          {t(\"tpsl.entirePosition\")}\n        </span>\n      );\n    }\n\n    return (\n      <Text.numeral\n        dp={props.quote_dp}\n        rm={Decimal.ROUND_DOWN}\n        intensity={80}\n        padding={false}\n      >\n        {item.quantity}\n      </Text.numeral>\n    );\n  }, [item, t]);\n\n  return (\n    <Statistic\n      label={t(\"common.quantity\")}\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n      align=\"end\"\n    >\n      {quantity}\n    </Statistic>\n  );\n};\n\nexport const AvgPrice: FC<OrderCellState> = (props) => {\n  const { t } = useTranslation();\n  return (\n    <Statistic\n      label={\n        <Text>\n          {t(\"common.avgPrice\")}\n          <Text intensity={20}>(USDC)</Text>\n        </Text>\n      }\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <Text.numeral\n        dp={props.quote_dp}\n        rm={Decimal.ROUND_DOWN}\n        intensity={80}\n        padding={false}\n      >\n        {/* @ts-ignore */}\n        {props.item?.average_executed_price ?? \"--\"}\n      </Text.numeral>\n    </Statistic>\n  );\n};\n\nexport const OrderPrice: FC<OrderCellState> = (props) => {\n  const { t } = useTranslation();\n  return (\n    <Statistic\n      label={\n        <Text>\n          {t(\"orders.column.orderPrice\")}\n          <Text intensity={20}>(USDC)</Text>\n        </Text>\n      }\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n    >\n      <Text.numeral\n        dp={props.quote_dp}\n        rm={Decimal.ROUND_DOWN}\n        intensity={80}\n        padding={false}\n        placeholder={t(\"common.marketPrice\")}\n      >\n        {/* @ts-ignore */}\n        {props.item?.price ?? \"--\"}\n      </Text.numeral>\n    </Statistic>\n  );\n};\n\nexport const RealizedPnL: FC<OrderCellState> = (props) => {\n  // @ts-ignore\n  const value = props?.item?.realized_pnl;\n  const { t } = useTranslation();\n\n  return (\n    <Statistic\n      label={\n        <Text>\n          {t(\"common.realizedPnl\")}\n          <Text intensity={20}>(USDC)</Text>\n        </Text>\n      }\n      classNames={{\n        root: \"oui-text-xs\",\n        label: \"oui-text-2xs\",\n      }}\n      align=\"end\"\n    >\n      <Flex gap={1}>\n        <Text.numeral\n          dp={props.quote_dp}\n          rm={Decimal.ROUND_DOWN}\n          padding={false}\n          intensity={(value ?? 0) == 0 ? 80 : undefined}\n          showIdentifier={(value ?? 0) > 0}\n          coloring={(value ?? 0) != 0}\n        >\n          {value ?? \"--\"}\n        </Text.numeral>\n        <ShareButtonWidget\n          order={props.item}\n          sharePnLConfig={props.sharePnLConfig}\n          modalId={SharePnLBottomSheetId}\n          iconSize={12}\n        />\n      </Flex>\n    </Statistic>\n  );\n};\n\nexport const MobileTooltip: FC<\n  PropsWithChildren<{\n    content?: string | ReactNode;\n    classNames?: {\n      content?: string;\n      arrow?: string;\n    };\n  }>\n> = (props) => {\n  const { classNames, content } = props;\n  const [open, setOpen] = useState(false);\n  if (typeof content === \"undefined\") return props.children;\n  return (\n    <Tooltip\n      // @ts-ignore\n      content={content}\n      className={classNames?.content}\n      open={open}\n      onOpenChange={setOpen}\n      arrow={{ className: classNames?.arrow }}\n    >\n      <div onClick={() => setOpen((e) => !e)}>{props.children}</div>\n    </Tooltip>\n  );\n};\n","import { FC } from \"react\";\nimport { Button } from \"@orderly.network/ui\";\nimport { EditBtnState } from \"./editBtn.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const EditBtn: FC<EditBtnState> = (props) => {\n  const { t } = useTranslation();\n  const { item } = props;\n  const isBuy = item.quantity > 0;\n\n  return (\n    <>\n      <Button\n        variant=\"outlined\"\n        fullWidth\n        color=\"secondary\"\n        size=\"sm\"\n        className=\"oui-border-base-contrast-36\"\n        onClick={() => {\n          props.onShowEditSheet();\n        }}\n      >\n        {t(\"common.edit\")}\n      </Button>\n    </>\n  );\n};\n","import { modal } from \"@orderly.network/ui\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { EditSheetWidget } from \"../editSheet\";\nimport { useCallback } from \"react\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { TabType } from \"../../../orders.widget\";\nimport { PositionTPSLSheet } from \"@orderly.network/ui-tpsl\";\nimport { useTPSLOrderRowContext } from \"../../tpslOrderRowContext\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const useEditBtnScript = (props: { state: OrderCellState }) => {\n  const { state } = props;\n  const { t } = useTranslation();\n\n  const { editAlgoOrder, editOrder } = useOrderListContext();\n  const { order, position } = useTPSLOrderRowContext();\n\n  const onShowEditSheet = useCallback(() => {\n    if (props.state.type === TabType.tp_sl) {\n      modal\n        .sheet({\n          title: t(\"common.tpsl\"),\n          content: (\n            <PositionTPSLSheet\n              isEditing\n              order={props.state.item}\n              position={position!}\n              symbolInfo={props.state.origin}\n            />\n          ),\n        })\n        .catch((error) => {\n          console.log(error);\n        });\n    } else {\n      modal\n        .sheet({\n          title: t(\"orders.editOrder\"),\n          // size: \"xs\",\n          classNames: {\n            content: \"oui-bg-base-8\",\n          },\n          content: (\n            <EditSheetWidget\n              position={position}\n              state={state}\n              editAlgoOrder={editAlgoOrder}\n              editOrder={editOrder}\n            />\n          ),\n        })\n        .catch((error) => {\n          console.log(error);\n        });\n    }\n  }, [state]);\n\n  return {\n    ...state,\n    onShowEditSheet,\n  };\n};\n\nexport type EditBtnState = ReturnType<typeof useEditBtnScript>;\n","import { FC } from \"react\";\nimport {\n  Badge,\n  Button,\n  cn,\n  Divider,\n  Flex,\n  Input,\n  inputFormatter,\n  SimpleDialog,\n  Slider,\n  Text,\n  ThrottledButton,\n  toast,\n} from \"@orderly.network/ui\";\nimport { EditSheetState } from \"./editSheet.script\";\nimport { ConfirmDialogContent } from \"./editDialogContent\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { parseBadgesFor } from \"../../../../utils/util\";\nimport { utils } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@orderly.network/react-app\";\n\nexport const EditSheet: FC<EditSheetState> = (props) => {\n  const { item } = props;\n  const isBuy = item.side === OrderSide.BUY;\n  const { t } = useTranslation();\n\n  const { parseErrorMsg } = useOrderEntryFormErrorMsg(props.errors!);\n\n  const orderQuantityErrorMsg = parseErrorMsg(\"order_quantity\");\n  const orderPriceErrorMsg = parseErrorMsg(\"order_price\");\n  const triggerPriceErrorMsg = parseErrorMsg(\"trigger_price\");\n\n  const percentages =\n    props.quantity && props.maxQty\n      ? Math.min(Number(props.quantity) / props.maxQty, 1)\n      : undefined;\n\n  const onBlur = (value: string) => {\n    const baseTick = props.baseTick;\n    if (baseTick && baseTick > 0) {\n      const formatQty = utils.formatNumber(value, baseTick) ?? value;\n      props.setQuantity(formatQty);\n    }\n  };\n\n  return (\n    <>\n      <Flex\n        direction={\"column\"}\n        gap={3}\n        width={\"100%\"}\n        itemAlign={\"start\"}\n        className=\"oui-text-sm\"\n      >\n        <Flex width={\"100%\"} justify={\"between\"}>\n          <Text.formatted rule={\"symbol\"} showIcon intensity={80}>\n            {item.symbol}\n          </Text.formatted>\n          <Flex direction={\"row\"} gap={1}>\n            {parseBadgesFor(props.item)?.map((e, index) => (\n              <Badge\n                key={index}\n                color={\n                  e.toLocaleLowerCase() === \"position\" ? \"primary\" : \"neutral\"\n                }\n                size=\"xs\"\n              >\n                {e}\n              </Badge>\n            ))}\n            {isBuy && (\n              <Badge color=\"success\" size=\"xs\">\n                {t(\"common.buy\")}\n              </Badge>\n            )}\n            {!isBuy && (\n              <Badge color=\"danger\" size=\"xs\">\n                {t(\"common.sell\")}\n              </Badge>\n            )}\n          </Flex>\n        </Flex>\n        <Divider intensity={8} className=\"oui-w-full\" />\n        <Flex width={\"100%\"} justify={\"between\"}>\n          <Text>{t(\"common.lastPrice\")}</Text>\n          <Text.numeral dp={(props.item as any)?.symbolInfo?.duote_dp}>\n            {props.curMarkPrice ?? \"--\"}\n          </Text.numeral>\n        </Flex>\n        <Flex width={\"100%\"} direction={\"column\"} itemAlign={\"stretch\"} gap={2}>\n          {props.isAlgoOrder && (\n            <Input.tooltip\n              prefix={\n                <Text intensity={54} className=\"oui-px-3\">\n                  {t(\"orders.column.triggerPrice\")}\n                </Text>\n              }\n              suffix={\n                <Text intensity={54} className=\"oui-px-3\">\n                  {props.quote}\n                </Text>\n              }\n              color={triggerPriceErrorMsg ? \"danger\" : undefined}\n              align=\"right\"\n              fullWidth\n              autoComplete=\"off\"\n              formatters={[\n                inputFormatter.numberFormatter,\n                inputFormatter.dpFormatter(props.quote_dp),\n              ]}\n              value={props.triggerPrice}\n              onValueChange={(e) => props.setTriggerPrice(e)}\n              tooltip={triggerPriceErrorMsg}\n              tooltipProps={{\n                content: {\n                  className: \"oui-bg-base-6 oui-text-base-contrast-80\",\n                },\n                arrow: {\n                  className: \"oui-fill-base-6\",\n                },\n              }}\n              classNames={{\n                input: \"oui-text-base-contrast-98 oui-w-full\",\n                root: cn(\n                  \"oui-outline-line-12\",\n                  triggerPriceErrorMsg && \"oui-outline-danger\"\n                ),\n              }}\n            />\n          )}\n          <Input.tooltip\n            prefix={\n              <Text intensity={54} className=\"oui-px-3\">\n                {t(\"common.price\")}\n              </Text>\n            }\n            suffix={\n              <Text intensity={54} className=\"oui-px-3\">\n                {props.quote}\n              </Text>\n            }\n            color={orderPriceErrorMsg ? \"danger\" : undefined}\n            align=\"right\"\n            fullWidth\n            autoComplete=\"off\"\n            formatters={[\n              inputFormatter.numberFormatter,\n              inputFormatter.dpFormatter(props.quote_dp),\n            ]}\n            disabled={!props.priceEdit}\n            value={\n              props.isStopMarket\n                ? t(\"orderEntry.orderType.market\")\n                : props.price\n            }\n            onValueChange={(e) => props.setPrice(e)}\n            tooltip={orderPriceErrorMsg}\n            tooltipProps={{\n              content: {\n                className: \"oui-bg-base-5\",\n              },\n              arrow: {\n                className: \"oui-fill-base-5\",\n              },\n            }}\n            classNames={{\n              input: \"oui-text-base-contrast-98\",\n              root: cn(\n                \"oui-outline-line-12\",\n                orderPriceErrorMsg && \"oui-outline-danger\"\n              ),\n            }}\n          />\n          <Input.tooltip\n            prefix={\n              <Text intensity={54} className=\"oui-px-3\">\n                {t(\"common.quantity\")}\n              </Text>\n            }\n            suffix={\n              <Text intensity={54} className=\"oui-px-3\">\n                {props.base}\n              </Text>\n            }\n            color={orderQuantityErrorMsg ? \"danger\" : undefined}\n            align=\"right\"\n            fullWidth\n            autoComplete=\"off\"\n            formatters={[\n              inputFormatter.numberFormatter,\n              inputFormatter.dpFormatter(props.base_dp),\n              // inputFormatter.rangeFormatter({ max: props.maxQty }),\n            ]}\n            value={props.quantity}\n            onValueChange={(e) => {\n              props.setQuantity(e);\n            }}\n            onBlur={(event) => onBlur(event.target.value)}\n            tooltip={orderQuantityErrorMsg}\n            tooltipProps={{\n              content: {\n                className: \"oui-bg-base-6\",\n              },\n              arrow: {\n                className: \"oui-fill-base-6\",\n              },\n            }}\n            classNames={{\n              input: \"oui-text-base-contrast-98\",\n              root: cn(\n                \"oui-outline-line-12\",\n                orderQuantityErrorMsg && \"oui-outline-danger\"\n              ),\n            }}\n          />\n          <Slider\n            markCount={4}\n            value={[props.sliderValue ?? 0]}\n            onValueChange={(e) => {\n              props.setSliderValue(e[0]);\n            }}\n            color=\"primary\"\n          />\n          <Flex width={\"100%\"} justify={\"between\"}>\n            <Text.numeral\n              color=\"primary\"\n              size=\"2xs\"\n              dp={2}\n              padding={false}\n              rule=\"percentages\"\n            >{`${percentages ?? 0}`}</Text.numeral>\n            <Flex gap={1}>\n              <Text size=\"2xs\" color=\"primary\">\n                {t(\"common.max\")}\n              </Text>\n              <Text.numeral intensity={54} size=\"2xs\" dp={props.base_dp}>\n                {props.maxQty}\n              </Text.numeral>\n            </Flex>\n          </Flex>\n        </Flex>\n        <Flex width={\"100%\"} gap={3} mt={2}>\n          <Button\n            fullWidth\n            color=\"secondary\"\n            onClick={(e) => {\n              props.onClose();\n            }}\n          >\n            {t(\"common.cancel\")}\n          </Button>\n          <ThrottledButton\n            fullWidth\n            onClick={(e) => {\n              e.stopPropagation();\n              e.preventDefault();\n              props.onSheetConfirm();\n            }}\n            loading={props.submitting}\n            disabled={!props.isChanged}\n          >\n            {t(\"common.confirm\")}\n          </ThrottledButton>\n        </Flex>\n      </Flex>\n\n      <SimpleDialog\n        open={props.dialogOpen}\n        onOpenChange={props.setDialogOpen}\n        title={t(\"orders.editOrder\")}\n        size=\"xs\"\n        actions={{\n          primary: {\n            label: t(\"common.confirm\"),\n            onClick: props.onDialogConfirm,\n            loading: props.submitting,\n            fullWidth: true,\n          },\n          secondary: {\n            label: t(\"common.cancel\"),\n            onClick: props.onCloseDialog,\n            fullWidth: true,\n          },\n        }}\n        classNames={{\n          content: \"oui-pb-4\",\n          body: \"oui-p-0\",\n          footer: \"oui-pt-3 oui-pb-0\",\n        }}\n      >\n        <ConfirmDialogContent {...props} />\n      </SimpleDialog>\n    </>\n  );\n};\n","import { FC } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { parseBadgesFor } from \"../../../../utils/util\";\nimport { Badge, Checkbox, Divider, Flex, Text } from \"@orderly.network/ui\";\nimport { EditSheetState } from \"./editSheet.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const ConfirmDialogContent: FC<EditSheetState> = (props) => {\n  const { side } = props.item;\n  const { price, quantity, triggerPrice, isAlgoOrder } = props;\n  const isBuy = side === OrderSide.BUY;\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"oui-pt-2\">\n      <Text\n        intensity={80}\n      >{`You agree to edit your ${props.base}-PERP order.`}</Text>\n      <Flex gap={2} mb={3} mt={2} justify={\"between\"}>\n        <Text.formatted\n          rule=\"symbol\"\n          formatString=\"base-type\"\n          size=\"base\"\n          showIcon\n        >\n          {props.item.symbol}\n        </Text.formatted>\n        <Flex direction={\"row\"} gap={1}>\n          {parseBadgesFor(props.item)?.map((e, index) => (\n            <Badge\n              key={index}\n              color={\n                e.toLocaleLowerCase() === \"position\" ? \"primary\" : \"neutral\"\n              }\n              size=\"xs\"\n            >\n              {e}\n            </Badge>\n          ))}\n          {isBuy && (\n            <Badge color=\"success\" size=\"xs\">\n              {t(\"common.buy\")}\n            </Badge>\n          )}\n          {!isBuy && (\n            <Badge color=\"danger\" size=\"xs\">\n              {t(\"common.sell\")}\n            </Badge>\n          )}\n        </Flex>\n      </Flex>\n      <Divider />\n      <Flex\n        direction={\"column\"}\n        gap={1}\n        width={\"100%\"}\n        className=\"oui-text-sm oui-text-base-contrast-54\"\n        py={3}\n      >\n        {isAlgoOrder && (\n          <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n            <Text>{t(\"orders.column.triggerPrice\")}</Text>\n            <Text.numeral\n              intensity={80}\n              dp={props.quote_dp}\n              padding={false}\n              rm={Decimal.ROUND_DOWN}\n              suffix={<Text intensity={54}>{\" USDC\"}</Text>}\n            >\n              {triggerPrice ?? \"--\"}\n            </Text.numeral>\n          </Flex>\n        )}\n\n        <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n          <Text>{t(\"common.price\")}</Text>\n          <Text.numeral\n            intensity={80}\n            dp={props.quote_dp}\n            padding={false}\n            rm={Decimal.ROUND_DOWN}\n            suffix={<Text intensity={54}>{\" USDC\"}</Text>}\n            placeholder={props.isStopMarket ? t(\"common.marketPrice\") : \"--\"}\n          >\n            {props.isStopMarket ? t(\"common.marketPrice\") : price ?? \"--\"}\n          </Text.numeral>\n        </Flex>\n        <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n          <Text>{t(\"common.qty\")}</Text>\n          <Text.numeral\n            color={side === OrderSide.BUY ? \"buy\" : \"sell\"}\n            dp={props.base_dp}\n            padding={false}\n            rm={Decimal.ROUND_DOWN}\n          >\n            {quantity ?? \"--\"}\n          </Text.numeral>\n        </Flex>\n      </Flex>\n\n      <Flex className=\"oui-gap-[2px]\">\n        <Checkbox\n          color=\"white\"\n          id=\"oui-checkbox-disableOrderConfirmation\"\n          //   className=\"oui-h-[10px] oui-w-[10px]\"\n          //   size={10}\n          checked={!props.orderConfirm}\n          onCheckedChange={(e: boolean) => {\n            props.setOrderConfirm(!e);\n          }}\n        />\n        <label\n          className=\"oui-text-2xs oui-text-base-contrast-54\"\n          htmlFor=\"oui-checkbox-disableOrderConfirmation\"\n        >\n          {t(\"orderEntry.disableOrderConfirm\")}\n        </label>\n      </Flex>\n    </div>\n  );\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport {\n  useDebouncedCallback,\n  useLocalStorage,\n  useMaxQty,\n  useOrderEntity,\n  // useOrderEntry,\n  useOrderEntry_deprecated,\n  useThrottledCallback,\n  utils,\n} from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { modal, toast, useModal } from \"@orderly.network/ui\";\nimport { API, OrderEntity } from \"@orderly.network/types\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { OrderTypeView } from \"../items\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { useTPSLOrderRowContext } from \"../../tpslOrderRowContext\";\nimport { useSymbolContext } from \"../../symbolProvider\";\n\n// export const useEditSheetScript = (props: {\n//   state: OrderCellState;\n//   editAlgoOrder: (id: string, order: OrderEntity) => Promise<any>;\n//   editOrder: (id: string, order: OrderEntity) => Promise<any>;\n//   autoCheckInput?: boolean;\n// }) => {\n//   const { state, editAlgoOrder, editOrder, autoCheckInput = true } = props;\n//   const { item: order } = state;\n//   const { hide } = useModal();\n//   const [dialogOpen, setDialogOpen] = useState(false);\n//   const [submitting, setSubmitting] = useState(false);\n\n//   const isAlgoOrder =\n//     order?.algo_order_id !== undefined &&\n//     order.algo_type !== AlgoOrderRootType.BRACKET;\n//   const isStopMarket = order?.type === \"MARKET\" && isAlgoOrder;\n//   const isMarketOrder = isStopMarket || order?.type === \"MARKET\";\n\n//   const [price, setPrice] = useState(order.price ?? \"Market\");\n//   const [triggerPrice, setTriggerPrice] = useState(`${order.trigger_price}`);\n//   const [quantity, setQuantity] = useState(`${order.quantity}`);\n\n//   const [sliderValue, setSliderValue] = useState<undefined | number>(undefined);\n\n//   /**\n//    * {\n//    *    order_price: {type: 'min/max', message: ''},\n//    *    order_quantity: {type: 'min/max', message: ''},\n//    *    total: {type: 'min/max', message: ''},\n//    *    trigger_price: {type: 'required/min/max' , message: ''},\n//    * }\n//    */\n//   const [errors, setErrors] = useState<{\n//     order_price?: { message: string };\n//     order_quantity?: { message: string };\n//     total?: { message: string };\n//     trigger_price?: { message: string };\n//   }>({});\n\n//   const { markPrice, maxQty, helper, metaState } = useOrderEntry_deprecated(\n//     // @ts-ignore\n//     order.symbol,\n//     order.side\n//   );\n\n//   const orderType = useMemo(() => {\n//     if (isAlgoOrder && order.algo_type !== AlgoOrderRootType.BRACKET) {\n//       return `STOP_${order.type}`;\n//     }\n\n//     return order.type;\n//   }, [order, isAlgoOrder]);\n\n//   const [orderConfirm, setOrderConfirm] = useLocalStorage(\n//     \"orderly_order_confirm\",\n//     true\n//   );\n\n//   const tempOrderEntity = useRef<OrderEntity>();\n\n//   const onClose = () => {\n//     hide();\n//   };\n//   const onCloseDialog = () => {\n//     setDialogOpen(false);\n//   };\n\n//   const validatorInput = async (): Promise<{\n//     values: OrderEntity;\n//     errors?: any;\n//   }> => {\n//     let values: OrderEntity = {\n//       order_quantity: quantity,\n//       trigger_price: `${triggerPrice}`,\n//       symbol: order.symbol,\n//       // @ts-ignore\n//       order_type: orderType,\n//       // @ts-ignore\n//       side: order.side,\n//       reduce_only: Boolean(order.reduce_only),\n//     };\n//     if (!isMarketOrder) {\n//       values = {\n//         ...values,\n//         order_price: `${price}`,\n//       }\n//     }\n\n//     console.log(\"validator\", values, order);\n\n//     const errors = await helper.validator(values);\n//     if (errors.total?.message !== undefined) {\n//       toast.error(errors.total?.message);\n//     }\n//     // console.log(\"errors is\", values, errors);\n\n//     setErrors(errors);\n//     return {\n//       errors,\n//       values,\n//     };\n//   };\n\n//   useEffect(() => {\n//     if (autoCheckInput) {\n//       validatorInput();\n//     }\n//   }, [price, triggerPrice, quantity, autoCheckInput]);\n\n//   const onSheetConfirm = async () => {\n//     setDialogOpen(false);\n//     const { values: _data, errors } = await validatorInput();\n//     let values = _data;\n\n//     if (Object.keys(errors).length > 0) {\n//       return;\n//     }\n\n//     if (typeof order.order_tag !== undefined && order.reduce_only !== true) {\n//       values = { ...values, order_tag: order.order_tag };\n//     }\n\n//     tempOrderEntity.current = values;\n//     if (orderConfirm) {\n//       setDialogOpen(true);\n//     } else {\n//       onSubmit(values);\n//     }\n//   };\n\n//   const onDialogConfirm = () => {\n//     if (tempOrderEntity.current) {\n//       onSubmit(tempOrderEntity.current);\n//     }\n//   };\n\n//   const onSubmit = useCallback(\n//     async (values: OrderEntity) => {\n//       let future;\n//       let isHidden =\n//         order.visible_quantity !== undefined\n//           ? order.visible_quantity === 0\n//           : (order as any).visible !== undefined\n//           ? (order as any).visible === 0\n//           : false;\n//       if (order.algo_order_id !== undefined) {\n//         future = editAlgoOrder(order.algo_order_id.toString(), {\n//           ...values,\n//         });\n//       } else {\n//         future = editOrder((order as any).order_id.toString(), {\n//           ...values,\n//           ...(isHidden ? { visible_quantity: 0 } : {}),\n//         });\n//       }\n//       try {\n//         setSubmitting(true);\n\n//         const res = await future;\n//         onClose();\n//       } catch (err: any) {\n//         toast.error(err?.message ?? `${err}`);\n//       } finally {\n//         setSubmitting(false);\n//       }\n//     },\n//     [editAlgoOrder, editOrder]\n//   );\n\n//   useEffect(() => {\n//     if (typeof sliderValue === \"undefined\" && maxQty) {\n//       const value = new Decimal(order.quantity).div(maxQty).toNumber();\n//       setSliderValue(value);\n//     }\n//   }, [maxQty, setSliderValue]);\n\n//   const percentages = useMemo(() => {\n//     return Math.min(Number(quantity) / maxQty, 1);\n//   }, [quantity]);\n\n//   return {\n//     ...state,\n//     curMarkPrice: markPrice,\n//     isAlgoOrder,\n//     isStopMarket,\n//     price,\n//     setPrice,\n//     priceEdit: !isStopMarket,\n//     triggerPrice,\n//     setTriggerPrice,\n//     quantity,\n//     setQuantity,\n//     maxQty,\n//     sliderValue,\n//     setSliderValue,\n//     percentages,\n//     onClose,\n//     onSheetConfirm,\n//     errors,\n\n//     dialogOpen,\n//     setDialogOpen,\n//     onDialogConfirm,\n//     onCloseDialog,\n//     submitting,\n\n//     orderConfirm,\n//     setOrderConfirm,\n//   };\n// };\n\nexport const useEditSheetScript = (props: {\n  state: OrderCellState;\n  editAlgoOrder: (id: string, order: OrderEntity) => Promise<any>;\n  editOrder: (id: string, order: OrderEntity) => Promise<any>;\n  autoCheckInput?: boolean;\n  position?: API.PositionTPSLExt;\n}) => {\n  const { state, editAlgoOrder, editOrder, autoCheckInput = true, position } = props;\n  const { item: order } = state;\n  const { hide } = useModal();\n  const [dialogOpen, setDialogOpen] = useState(false);\n\n  const isAlgoOrder =\n    order?.algo_order_id !== undefined &&\n    order.algo_type !== AlgoOrderRootType.BRACKET;\n  const isStopMarket = order?.type === \"MARKET\" && isAlgoOrder;\n  const isMarketOrder = isStopMarket || order?.type === \"MARKET\";\n  const [submitting, setSubmitting] = useState(false);\n\n  // const [sliderValue, setSliderValue] = useState(0);\n\n  const orderType = useMemo(() => {\n    if (isAlgoOrder && order.algo_type !== AlgoOrderRootType.BRACKET) {\n      return `STOP_${order.type}`;\n    }\n\n    return order.type;\n  }, [order, isAlgoOrder]);\n\n  const [orderConfirm, setOrderConfirm] = useLocalStorage(\n    \"orderly_order_confirm\",\n    true\n  );\n\n  const { base_dp, base_tick } = props.state;\n\n  const {\n    formattedOrder,\n    setValue,\n    symbolInfo,\n    markPrice,\n    errors,\n    validate,\n    maxQty,\n  } = useOrderEntry({\n    order: order,\n    orderType,\n    position,\n  });\n\n  // const setValue = (key: any, value: any) => {\n  //   setFormattedOrder((oldValue) => ({\n  //     ...oldValue,\n  //     [key]: value,\n  //   }));\n  // };\n\n  // console.log(\n  //   \"formattedOrder\",\n  //   formattedOrder,\n  //   errors,\n  //   maxQty,\n  //   base_dp,\n  //   base_tick,\n  //   order,\n  // );\n\n  const onSheetConfirm = () => {\n    validate()\n      .then(\n        (result) => {\n          if (orderConfirm) {\n            setDialogOpen(true);\n          } else {\n            // @ts-ignore\n            onSubmit(formattedOrder);\n          }\n        },\n        (error) => {\n          // rejected\n          if (error?.total?.message) {\n            toast.error(error?.total.message);\n          }\n        }\n      )\n      .catch((err) => {});\n  };\n\n  const onCloseDialog = useCallback(() => {\n    setDialogOpen(false);\n  }, []);\n\n  const onDialogConfirm = () => {\n    if (formattedOrder) {\n      // @ts-ignore\n      return onSubmit(formattedOrder);\n    }\n    return Promise.reject();\n  };\n\n  const onClose = useCallback(() => {\n    hide();\n  }, []);\n\n  const onSubmit = useCallback(\n    async (values: OrderEntity) => {\n      let future;\n      let isHidden =\n        order.visible_quantity !== undefined\n          ? order.visible_quantity === 0\n          : (order as any).visible !== undefined\n          ? (order as any).visible === 0\n          : false;\n      if (order.algo_order_id !== undefined) {\n        if (isStopMarket && \"order_price\" in values) {\n          const { order_price, ...rest } = values;\n          values = rest;\n        }\n        future = editAlgoOrder(order.algo_order_id.toString(), {\n          ...values,\n        });\n      } else {\n        future = editOrder((order as any).order_id.toString(), {\n          ...values,\n          ...(isHidden ? { visible_quantity: 0 } : {}),\n        });\n      }\n      try {\n        setSubmitting(true);\n\n        const res = await future;\n        onClose();\n      } catch (err: any) {\n        toast.error(err?.message ?? `${err}`);\n      } finally {\n        setSubmitting(false);\n      }\n    },\n    [editAlgoOrder, editOrder]\n  );\n\n  const sliderValue = useMemo(() => {\n    const qty = formattedOrder.order_quantity;\n    if (qty && Number(qty) !== 0 && maxQty !== 0) {\n      const value = new Decimal(qty)\n        .div(maxQty)\n        .mul(100)\n        .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n        .toNumber();\n      return value;\n    }\n    return 0;\n  }, [formattedOrder.order_quantity, maxQty]);\n\n  const isChanged =\n    order.price != formattedOrder.order_price ||\n    order.quantity != formattedOrder.order_quantity ||\n    order.trigger_price != formattedOrder.trigger_price;\n\n  const setSliderValue = useThrottledCallback(\n    (value: number) => {\n      const quantity = new Decimal(value)\n        .div(100)\n        .mul(maxQty)\n        .toDecimalPlaces(base_dp, Decimal.ROUND_DOWN)\n        .toNumber();\n      setValue(\"order_quantity\", utils.formatNumber(quantity, base_tick));\n    },\n    50,\n    {}\n  );\n\n  const setOrderValue = (key: any, value: string | number) => {\n    setValue(key, value);\n  };\n\n  return {\n    ...state,\n    curMarkPrice: markPrice,\n    isAlgoOrder,\n    isStopMarket,\n    price: formattedOrder.order_price,\n    setPrice: (value: string) => setOrderValue(\"order_price\", value),\n    priceEdit: !isStopMarket,\n    triggerPrice: formattedOrder.trigger_price,\n    setTriggerPrice: (value: string) => setOrderValue(\"trigger_price\", value),\n    quantity: formattedOrder.order_quantity,\n    setQuantity: (value: string) => {\n      console.trace(\"set quantity\");\n      setOrderValue(\"order_quantity\", value);\n    },\n    maxQty,\n    sliderValue,\n    setSliderValue,\n    onClose: onClose,\n    onSheetConfirm: onSheetConfirm,\n    errors,\n    orderType,\n    isChanged,\n    baseTick: base_tick,\n\n    dialogOpen,\n    setDialogOpen,\n    onDialogConfirm,\n    onCloseDialog,\n    submitting,\n\n    orderConfirm,\n    setOrderConfirm,\n  };\n};\n\nexport type EditSheetState = ReturnType<typeof useEditSheetScript>;\n\nconst useOrderEntry = (props: {\n  order: API.AlgoOrderExt;\n  orderType: string;\n  position?: API.PositionTPSLExt;\n}) => {\n  const { order, orderType, position } = props;\n\n  // const {\n  //   formattedOrder,\n  //   setValue,\n  //   setValues,\n  //   symbolInfo,\n  //   markPrice,\n\n  //   metaState: { errors },\n  //   helper,\n  // } = useOrderEntry(order.symbol, {\n  //   initialOrder: {\n  //     side: order.side,\n  //     order_type: orderType,\n  //     order_price: order.price,\n  //     order_quantity: order.quantity,\n  //     trigger_price: order.trigger_price,\n  //     reduce_only: order.reduce_only,\n  //   },\n  // });\n\n  const [formattedOrder, setFormattedOrder] = useState({\n    side: order.side,\n    order_type: orderType,\n    order_price: order.price,\n    order_quantity: order.quantity,\n    trigger_price: order.trigger_price,\n    reduce_only: order.reduce_only,\n    symbol: order.symbol,\n  });\n\n  const { reduce_only } = order;\n\n  const positionQty = position?.position_qty;\n\n  const _maxQty = useMaxQty(order.symbol, order.side as any, order.reduce_only);\n\n  const maxQty = useMemo(() => {\n    if (reduce_only) {\n      return Math.abs(positionQty ?? 0);\n    }\n    return order.quantity + Math.abs(_maxQty);\n  }, [order.quantity, _maxQty, reduce_only, positionQty]);\n\n  const { symbolInfo, markPrice, errors, validate } = useOrderEntity(\n    // @ts-ignore\n    {\n      ...formattedOrder,\n      symbol: order.symbol,\n    },\n    {\n      maxQty,\n    }\n  );\n\n  const setValue = (key: any, value: any) => {\n    setFormattedOrder((oldValue) => ({\n      ...oldValue,\n      [key]: value,\n    }));\n  };\n\n  return {\n    symbolInfo,\n    markPrice,\n    errors,\n    validate,\n    setValue,\n    formattedOrder,\n    maxQty,\n  };\n};\n","import { API, OrderEntity } from \"@orderly.network/types\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useEditSheetScript } from \"./editSheet.script\";\nimport { EditSheet } from \"./editSheet.ui\";\n\nexport const EditSheetWidget = (props: {\n  state: OrderCellState;\n  editAlgoOrder: (id: string, order: OrderEntity) => Promise<any>;\n  editOrder: (id: string, order: OrderEntity) => Promise<any>;\n  autoCheckInput?: boolean;\n  position?: API.PositionTPSLExt;\n}) => {\n  const state = useEditSheetScript(props);\n  return <EditSheet {...state} />;\n};\n","import { FC } from \"react\";\nimport { useEditBtnScript } from \"./editBtn.script\";\nimport { EditBtn } from \"./editBtn.ui\";\nimport { OrderCellState } from \"../orderCell.script\";\n\nexport const EditBtnWidget = (props: {\n    state : OrderCellState;\n}) => {\n    const state = useEditBtnScript(props);\n    return (<EditBtn {...state} />);\n};\n","import { FC } from \"react\";\nimport { Button, SimpleDialog, Text } from \"@orderly.network/ui\";\nimport { CancelBtnState } from \"./cancelBtn.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const CancelBtn: FC<CancelBtnState> = (props) => {\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <Button\n        variant=\"outlined\"\n        fullWidth\n        color=\"secondary\"\n        size=\"sm\"\n        className=\"oui-border-base-contrast-36\"\n        onClick={(e) => props.setOpen(true)}\n      >\n        {t(\"common.cancel\")}\n      </Button>\n      {props.open && (\n        <SimpleDialog\n          size=\"xs\"\n          open={props.open}\n          onOpenChange={props.setOpen}\n          title={t(\"orders.cancelOrder\")}\n          actions={{\n            primary: {\n              label: t(\"common.confirm\"),\n              loading: props.isLoading,\n              fullWidth: true,\n              size: \"md\",\n              onClick: (e) => {\n                props.onCancel(e);\n              },\n            },\n            secondary: {\n              label: t(\"common.cancel\"),\n              fullWidth: true,\n              size: \"md\",\n              onClick: () => {\n                props.onClose();\n              },\n            },\n          }}\n        >\n          <Text size=\"2xs\" intensity={54}>\n            {t(\"orders.cancelOrder.description\")}\n          </Text>\n        </SimpleDialog>\n      )}\n    </>\n  );\n};\n","import { FC, useState } from \"react\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { toast } from \"@orderly.network/ui\";\n\nexport const useCancelBtnScript = (props: { state: OrderCellState }) => {\n  const { state } = props;\n  const [open, setOpen] = useState(false);\n\n  const { onCancelOrder } = useOrderListContext();\n  const [isLoading, setIsLoading] = useState(false);\n\n  const onCancel = (event?: any) => {\n    if (!onCancelOrder) return Promise.resolve();\n    event?.preventDefault();\n    event?.stopPropagation();\n    setIsLoading(true);\n    return onCancelOrder(state.item)\n      .then(\n        (res: any) => {\n          setOpen(false);\n        },\n        (error: any) => {\n          toast.error(error.message);\n        }\n      ).finally(() => {\n        setIsLoading(false);\n      });\n  };\n\n  const onClose = () => {\n    setOpen(false);\n  };\n\n  return {\n    ...state,\n\n    open,\n    setOpen,\n    onCancel,\n    onClose,\n    isLoading,\n  };\n};\n\nexport type CancelBtnState = ReturnType<typeof useCancelBtnScript>;\n","import { FC } from \"react\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useCancelBtnScript } from \"./cancelBtn.script\";\nimport { CancelBtn } from \"./cancelBtn.ui\";\n\nexport const CancelBtnWidget = (props: { state: OrderCellState }) => {\n  const state = useCancelBtnScript(props);\n  return <CancelBtn {...state} />;\n};\n","import { FC } from \"react\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { BracketOrderPriceState } from \"./bracketOrderPrice.script\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { MobileTooltip } from \"../items\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const BracketOrderPrice: FC<BracketOrderPriceState> = (props) => {\n  const { t } = useTranslation();\n\n  if (!props.sl_trigger_price && !props.tp_trigger_price) return <></>;\n\n  return (\n    <>\n      <MobileTooltip\n        classNames={{\n          content: \"oui-bg-base-6 oui-ml-2\",\n          arrow: \"oui-fill-base-6\",\n        }}\n        content={\n          <Flex direction={\"column\"} itemAlign={\"start\"} gap={1}>\n            {typeof props.pnl?.tpPnL !== \"undefined\" && (\n              <Text.numeral\n                // @ts-ignore\n                prefix={\n                  <Text intensity={80}>{`${t(\"tpsl.tpPnl\")}:`} &nbsp;</Text>\n                }\n                suffix={<Text intensity={20}>{\" USDC\"}</Text>}\n                dp={props.quote_dp}\n                color=\"buy\"\n                showIdentifier\n              >\n                {props.pnl?.tpPnL}\n              </Text.numeral>\n            )}\n            {typeof props.pnl?.slPnL !== \"undefined\" && (\n              <Text.numeral\n                // @ts-ignore\n                prefix={\n                  <Text intensity={80}>{`${t(\"tpsl.slPnl\")}:`} &nbsp;</Text>\n                }\n                suffix={<Text intensity={20}>{\" USDC\"}</Text>}\n                dp={props.quote_dp}\n                color=\"sell\"\n              >\n                {props.pnl?.slPnL}\n              </Text.numeral>\n            )}\n          </Flex>\n        }\n      >\n        <button\n          onClick={() => {\n            props.setOpen(!props.open);\n          }}\n        >\n          <Flex gap={1} width={\"1\"}>\n            {props.tp_trigger_price && (\n              <Price\n                type=\"TP\"\n                value={props.tp_trigger_price}\n                quote_dp={props.quote_dp}\n              />\n            )}\n            {props.sl_trigger_price && (\n              <Price\n                type=\"SL\"\n                value={props.sl_trigger_price}\n                quote_dp={props.quote_dp}\n              />\n            )}\n          </Flex>\n        </button>\n      </MobileTooltip>\n    </>\n  );\n};\n\nconst Price = (props: {\n  type: \"TP\" | \"SL\";\n  value?: number | string;\n  quote_dp: number;\n}) => {\n  const { type, value, quote_dp } = props;\n\n  return value ? (\n    <Text.numeral\n      size=\"2xs\"\n      className={cn(\n        \"oui-border-b oui-border-dashed oui-border-base-contrast-12\",\n        type === \"TP\" ? \"oui-text-trade-profit\" : \"oui-text-trade-loss\"\n      )}\n      key={\"tp\"}\n      rule=\"price\"\n      dp={quote_dp}\n      padding={false}\n      rm={Decimal.ROUND_DOWN}\n      // @ts-ignore\n      prefix={\n        <span className={\"oui-text-base-contrast-36\"}>\n          {`${type} `}:&nbsp;&nbsp;\n        </span>\n      }\n    >\n      {value}\n    </Text.numeral>\n  ) : (\n    <></>\n  );\n};\n","import { useMemo, useState } from \"react\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { utils } from \"@orderly.network/hooks\";\nimport { calcBracketRoiAndPnL } from \"../../../../utils/util\";\n\nexport const useBracketOrderPriceScript = (props: OrderCellState) => {\n  const { item: order, quote_dp, base_dp } = props;\n\n  const [open, setOpen] = useState(false);\n\n  const { sl_trigger_price, tp_trigger_price } = useMemo(() => {\n    if (!(\"algo_type\" in order) || !Array.isArray(order.child_orders)) {\n      return {};\n    }\n    return utils.findTPSLFromOrder(order.child_orders[0]);\n  }, [order]);\n\n  const { pnl, roi } = calcBracketRoiAndPnL(order);\n\n  return {\n    sl_trigger_price,\n    tp_trigger_price,\n    pnl,\n    roi,\n    quote_dp,\n    open,\n    setOpen,\n  };\n};\n\nexport type BracketOrderPriceState = ReturnType<\n  typeof useBracketOrderPriceScript\n>;\n","import { FC } from \"react\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useBracketOrderPriceScript } from \"./bracketOrderPrice.script\";\nimport { BracketOrderPrice } from \"./bracketOrderPrice.ui\";\n\nexport const BracketOrderPriceWidget: FC<OrderCellState> = (props) => {\n    const state = useBracketOrderPriceScript(props);\n    return (<BracketOrderPrice {...state} />);\n};\n","import { API } from \"@orderly.network/types\";\nimport { useSymbolContext } from \"../symbolProvider\";\nimport { TabType } from \"../../orders.widget\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\n\nexport const useOrderCellScript = (props: {\n  item: API.AlgoOrderExt;\n  index: number;\n  type: TabType;\n  sharePnLConfig?: SharePnLConfig;\n  onSymbolChange?: (symbol: API.Symbol) => void;\n}) => {\n  const symbolInfo = useSymbolContext();\n  return {\n    ...props,\n    ...symbolInfo,\n  };\n};\n\nexport type OrderCellState = ReturnType<typeof useOrderCellScript>;\n","import { API } from \"@orderly.network/types\";\nimport { useOrderCellScript } from \"./orderCell.script\";\nimport { OrderCell } from \"./orderCell.ui\";\nimport { TabType } from \"../../orders.widget\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\n\nexport const OrderCellWidget = (props: {\n  item: API.AlgoOrderExt;\n  index: number;\n  className?: string;\n  type: TabType;\n  sharePnLConfig?: SharePnLConfig;\n  onSymbolChange?: (symbol: API.Symbol) => void;\n}) => {\n  const { className, ...rest } = props;\n\n  const state = useOrderCellScript(rest);\n  return <OrderCell {...state} className={className} />;\n};\n","import { forwardRef } from \"react\";\nimport { OrderSide, OrderStatus, API } from \"@orderly.network/types\";\nimport { OrderListInstance, useOrderListScript } from \"./orderList.script\";\nimport { DesktopOrderList, MobileOrderList } from \"./orderList.ui\";\nimport { TabType } from \"../orders.widget\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\n\nexport type DesktopOrderListWidgetProps = {\n  type: TabType;\n  ordersStatus?: OrderStatus;\n  /** if has value, will be fetch current symbol orders*/\n  symbol?: string;\n  onSymbolChange?: (symbol: API.Symbol) => void;\n  pnlNotionalDecimalPrecision?: number;\n  sharePnLConfig?: SharePnLConfig;\n  testIds?: {\n    tableBody?: string;\n  };\n};\n\nexport const DesktopOrderListWidget = forwardRef<\n  OrderListInstance,\n  DesktopOrderListWidgetProps\n>((props, ref) => {\n  const { testIds, ...rest } = props;\n  const state = useOrderListScript({ ...rest, ref });\n  return <DesktopOrderList {...state} testIds={testIds} />;\n});\n\nexport const MobileOrderListWidget = (props: {\n  type: TabType;\n  ordersStatus?: OrderStatus;\n  /** if has value, will be fetch current symbol orders*/\n  symbol?: string;\n  onSymbolChange?: (symbol: API.Symbol) => void;\n  sharePnLConfig?: SharePnLConfig;\n  classNames?: {\n    root?: string;\n    cell?: string;\n    content?: string;\n  };\n  showFilter?: boolean;\n  filterConfig?: {\n    side?: OrderSide | \"all\";\n    range?: {\n      from?: Date;\n      to?: Date;\n    };\n  };\n}) => {\n  const state = useOrderListScript({\n    ...props,\n    enableLoadMore: true,\n  });\n  return (\n    <MobileOrderList\n      {...state}\n      classNames={props.classNames}\n      showFilter={props.showFilter}\n    />\n  );\n};\n","import {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n  ForwardedRef,\n  useImperativeHandle,\n} from \"react\";\nimport {\n  AlgoOrderRootType,\n  OrderStatus,\n  OrderSide,\n  API,\n} from \"@orderly.network/types\";\nimport {\n  useLocalStorage,\n  useOrderStream,\n  useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { TabType } from \"../orders.widget\";\nimport { modal, usePagination, Text, Table } from \"@orderly.network/ui\";\nimport { differenceInDays, setHours, subDays, format } from \"date-fns\";\nimport { useFormatOrderHistory } from \"./useFormatOrderHistory\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport type OrderListInstance = {\n  download?: () => void;\n};\n\nexport type useOrderListScriptOptions = {\n  type: TabType;\n  ordersStatus?: OrderStatus;\n  symbol?: string;\n  enableLoadMore?: boolean;\n  onSymbolChange?: (symbol: API.Symbol) => void;\n  sharePnLConfig?: SharePnLConfig;\n  filterConfig?: {\n    side?: OrderSide | \"all\";\n    range?: {\n      from?: Date;\n      to?: Date;\n    };\n  };\n  pnlNotionalDecimalPrecision?: number;\n  ref?: ForwardedRef<OrderListInstance>;\n};\n\nexport const useOrderListScript = (props: useOrderListScriptOptions) => {\n  const {\n    ordersStatus,\n    type,\n    enableLoadMore = false,\n    onSymbolChange,\n    filterConfig,\n    pnlNotionalDecimalPrecision,\n    sharePnLConfig,\n  } = props;\n  const { t } = useTranslation();\n  const symbolsInfo = useSymbolsInfo();\n\n  const manualPagination = useMemo(() => {\n    // pending and ts_sl list use client pagination\n    return ordersStatus !== OrderStatus.INCOMPLETE;\n  }, [ordersStatus]);\n\n  const defaultPageSize = 50;\n  const { page, pageSize, setPage, pagination, parsePagination } =\n    usePagination({\n      pageSize: defaultPageSize,\n    });\n\n  // when symbol change, reset page\n  useEffect(() => {\n    setPage(1);\n  }, [props.symbol]);\n\n  const { orderStatus, ordersSide, dateRange, filterItems, onFilter } =\n    useFilter(type, {\n      ordersStatus,\n      setPage,\n      filterConfig,\n    });\n\n  const includes = useMemo(() => {\n    if (type === TabType.tp_sl) {\n      return [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL];\n    }\n    return undefined;\n  }, [type]);\n\n  const excludes = useMemo(() => {\n    if (type === TabType.pending) {\n      return [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL];\n    }\n    return undefined;\n  }, [type]);\n\n  const tableInstance = useRef<Table<any>>();\n\n  useImperativeHandle(props.ref, () => ({\n    download: () => {\n      const filename = `orders_${format(new Date(), \"yyyyMMdd_HHmmss\")}`;\n      tableInstance.current?.download(filename);\n    },\n  }));\n\n  const [\n    data,\n    {\n      isLoading,\n      loadMore,\n      cancelOrder,\n      updateOrder,\n      cancelAlgoOrder,\n      updateAlgoOrder,\n      cancelAllOrders,\n      cancelAllTPSLOrders,\n      meta,\n      refresh,\n    },\n  ] = useOrderStream({\n    symbol: props.symbol,\n    status: orderStatus,\n    side: ordersSide,\n    page: enableLoadMore || !manualPagination ? undefined : page,\n    // pending and ts_sl list get all data\n    size: manualPagination ? pageSize : 500,\n    dateRange,\n    includes,\n    excludes,\n  });\n\n  const localPageSizeKey = `orderly_${type}_pageSize`;\n  const [typePageSize, setTypePageSize] = useLocalStorage(\n    localPageSizeKey,\n    defaultPageSize\n  );\n\n  useEffect(() => {\n    if (typePageSize !== pageSize) {\n      setTypePageSize(pageSize);\n    }\n  }, [pageSize, typePageSize]);\n\n  const onCancelAll = useCallback(() => {\n    const title =\n      props.type === TabType.pending\n        ? t(\"orders.pending.cancelAll\")\n        : props.type === TabType.tp_sl\n        ? t(\"orders.tpsl.cancelAll\")\n        : \"\";\n\n    const content = TabType.pending\n      ? t(\"orders.pending.cancelAll.description\")\n      : props.type === TabType.tp_sl\n      ? t(\"orders.tpsl.cancelAll.description\")\n      : \"\";\n\n    modal.confirm({\n      title: title,\n      content: <Text size=\"sm\">{content}</Text>,\n      onCancel: async () => {},\n      onOk: async () => {\n        try {\n          // await cancelAll(null, { source_type: \"ALL\" });\n          if (type === TabType.tp_sl) {\n            await cancelAllTPSLOrders();\n          } else {\n            await cancelAllOrders();\n          }\n          refresh();\n          return Promise.resolve(true);\n        } catch (error) {\n          // @ts-ignore\n          if (error?.message !== undefined) {\n            // @ts-ignore\n            toast.error(error.message);\n          }\n          return Promise.resolve(false);\n        } finally {\n          Promise.resolve();\n        }\n      },\n    });\n  }, [type, t]);\n\n  const formattedData = useFormatOrderHistory(data ?? []);\n\n  const dataSource =\n    useDataTap(type !== TabType.tp_sl ? formattedData : data, {\n      fallbackData: [],\n    }) ?? undefined;\n\n  const _pagination = useMemo(() => {\n    if (manualPagination) {\n      return parsePagination(meta);\n    }\n    return pagination;\n  }, [meta, manualPagination, parsePagination, pagination]);\n\n  return {\n    type,\n    dataSource,\n    isLoading,\n    loadMore,\n    cancelOrder,\n    updateOrder,\n    cancelAlgoOrder,\n    updateAlgoOrder,\n    pagination: _pagination,\n    manualPagination,\n    pnlNotionalDecimalPrecision,\n\n    // filter\n    onFilter,\n    filterItems,\n    onCancelAll,\n\n    onSymbolChange,\n\n    sharePnLConfig,\n    tableInstance,\n    symbolsInfo,\n  };\n};\n\nconst useFilter = (\n  type: TabType,\n  option: {\n    ordersStatus?: OrderStatus | \"all\";\n    setPage: (page: number) => void;\n    filterConfig?: {\n      side?: OrderSide | \"all\";\n      range?: {\n        from?: Date;\n        to?: Date;\n      };\n    };\n  }\n) => {\n  const { t } = useTranslation();\n  const [orderStatus, setOrderStatus] = useState<OrderStatus | \"all\">(\n    option.ordersStatus ?? \"all\"\n  );\n  const [ordersSide, setOrdersSide] = useState<OrderSide | \"all\">(\n    option.filterConfig?.side ?? \"all\"\n  );\n\n  const defaultRange =\n    option.filterConfig?.range ??\n    (type === TabType.all || type === TabType.orderHistory\n      ? formatDatePickerRange({\n          to: new Date(),\n          from: offsetEndOfDay(subDays(new Date(), 7)),\n        })\n      : {});\n\n  const [dateRange, setDateRange] = useState<{\n    from?: Date;\n    to?: Date;\n  }>(defaultRange);\n\n  const onFilter = (filter: { name: string; value: any }) => {\n    if (filter.name === \"side\") {\n      setOrdersSide(filter.value);\n      option.setPage(1);\n    }\n\n    if (filter.name === \"status\") {\n      setOrderStatus(filter.value);\n      option.setPage(1);\n    }\n\n    if (filter.name === \"dateRange\") {\n      setDateRange(formatDatePickerRange(filter.value));\n      option.setPage(1);\n    }\n  };\n\n  const filterItems = useMemo((): any[] => {\n    const sideFilter = {\n      type: \"select\",\n      name: \"side\",\n      options: [\n        {\n          label: t(\"common.side.all\"),\n          value: \"all\",\n        },\n        {\n          label: t(\"common.buy\"),\n          value: \"BUY\",\n        },\n        {\n          label: t(\"common.sell\"),\n          value: \"SELL\",\n        },\n      ],\n      value: ordersSide,\n    };\n\n    const dateRangeFilter = {\n      type: \"range\",\n      name: \"dateRange\",\n      value: dateRange,\n    };\n\n    const statusFilter = {\n      type: \"select\",\n      name: \"status\",\n      options: [\n        {\n          label: t(\"common.status.all\"),\n          value: \"all\",\n        },\n        {\n          label: t(\"orders.status.pending\"),\n          value: OrderStatus.INCOMPLETE,\n        },\n        {\n          label: t(\"orders.status.filled\"),\n          value: OrderStatus.FILLED,\n        },\n        {\n          label: t(\"orders.status.partialFilled\"),\n          value: OrderStatus.PARTIAL_FILLED,\n        },\n        {\n          label: t(\"orders.status.canceled\"),\n          value: OrderStatus.CANCELLED,\n        },\n        {\n          label: t(\"orders.status.rejected\"),\n          value: OrderStatus.REJECTED,\n        },\n      ],\n      value: orderStatus,\n    };\n    switch (type) {\n      case TabType.all:\n        return [sideFilter, statusFilter, dateRangeFilter];\n      case TabType.pending:\n        return [sideFilter];\n      case TabType.tp_sl:\n        return [sideFilter];\n      case TabType.filled:\n        return [sideFilter];\n      case TabType.cancelled:\n        return [sideFilter];\n      case TabType.rejected:\n        return [sideFilter];\n      case TabType.orderHistory:\n        return [sideFilter, statusFilter, dateRangeFilter];\n    }\n  }, [type, ordersSide, orderStatus, dateRange, t]);\n\n  return {\n    filterItems,\n    onFilter,\n    ordersSide: ordersSide === \"all\" ? undefined : ordersSide,\n    dateRange,\n    orderStatus: orderStatus === \"all\" ? undefined : orderStatus,\n  };\n};\n\nexport type OrdersBuilderState = ReturnType<typeof useOrderListScript>;\nexport type FilterState = ReturnType<typeof useFilter>;\n\nexport const parseDateRangeForFilter = (dateRange: {\n  from: Date;\n  to?: Date;\n}) => {\n  let { from, to } = dateRange;\n\n  if (typeof to === \"undefined\") {\n    to = new Date();\n  }\n\n  const diff = differenceInDays(from, to);\n\n  // console.log(\"diff\", diff);\n\n  if (diff === 0) {\n    return [from, setHours(to, 23)];\n  }\n\n  return [from, to];\n};\n\nfunction offsetStartOfDay(date?: Date) {\n  if (date == null) return date;\n\n  const newDate = new Date(date);\n  newDate.setHours(0, 0, 0, 0);\n  return newDate;\n}\n\nfunction offsetEndOfDay(date?: Date) {\n  if (date == null) return date;\n\n  const newDate = new Date(date);\n  newDate.setHours(23, 59, 59, 999);\n  return newDate;\n}\n\nexport const formatDatePickerRange = (option: { from?: Date; to?: Date }) => ({\n  from: offsetStartOfDay(option.from),\n  to: offsetEndOfDay(option.to ?? option.from),\n});\n","import { useMemo } from \"react\";\nimport { API, AlgoOrderRootType, OrderStatus } from \"@orderly.network/types\";\n\nexport const useFormatOrderHistory = (data: API.AlgoOrderExt[]) => {\n  const formattedData = useMemo(() => {\n    const _data = [];\n\n    for (let index = 0; index < data.length; index++) {\n      const element = data[index];\n      // console.log(\"element\", element);\n      if (\n        element.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL ||\n        element.algo_type === AlgoOrderRootType.TP_SL\n      ) {\n        if (\n          element.algo_status !== OrderStatus.FILLED &&\n          element.algo_status !== OrderStatus.PARTIAL_FILLED\n        ) {\n          for (let j = 0; j < element.child_orders.length; j++) {\n            const e = element.child_orders[j];\n            if (!e.is_activated || !e.trigger_price) {\n              continue;\n            }\n            (e as any).parent_algo_type = element.algo_type;\n            _data.push(e);\n          }\n        } else {\n          // if order is filled then show only the filled order\n          for (let j = 0; j < element.child_orders.length; j++) {\n            const e = element.child_orders[j];\n            if (\n              !!e &&\n              (e.algo_status === OrderStatus.FILLED ||\n                e.algo_status === OrderStatus.PARTIAL_FILLED)\n            ) {\n              (e as any).parent_algo_type = element.algo_type;\n              _data.push(e);\n            }\n          }\n        }\n      } else {\n        _data.push(element);\n      }\n    }\n\n    return _data;\n\n    // data.map((item) => {});\n  }, [data]);\n\n  return formattedData;\n};\n"]}