@kodiak-finance/orderly-ui-orders 2.8.21-rc.1 → 2.8.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +26 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +27 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -11
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/orders.script.ts","../src/utils/util.ts","../src/components/provider/symbolContext.tsx","../src/components/provider/symbolProvider.tsx","../src/components/shareButton/shareButton.ui.tsx","../src/components/shareButton/shareButton.script.tsx","../src/components/shareButton/shareButton.widget.tsx","../src/components/shareButton/index.ts","../src/components/orderList/desktop/avgPrice.tsx","../src/components/orderList/desktop/bracketOrderPrice.tsx","../src/components/orderList/orderListContext.tsx","../src/components/orderList/desktop/cancelBtn.tsx","../src/type.ts","../src/components/orderList/desktop/editOrder/confirmContent.tsx","../src/components/orderList/desktop/hooks/usePopoverState.ts","../src/components/orderList/desktop/hooks/useValidateField.ts","../src/components/orderList/desktop/components/editableCellInput.tsx","../src/components/orderList/desktop/components/previewCell.tsx","../src/components/orderList/desktop/components/activedPriceCell.tsx","../src/components/orderList/desktop/components/priceCell.tsx","../src/components/orderList/tpslOrderRowContext.tsx","../src/components/orderList/desktop/editOrder/innerInput.tsx","../src/components/orderList/desktop/components/quantityCell.tsx","../src/components/orderList/desktop/components/trailingCallbackCell.tsx","../src/components/orderList/desktop/components/triggerPriceCell.tsx","../src/components/orderList/desktop/renew.tsx","../src/components/orderList/desktop/tpslEdit.tsx","../src/components/orderList/desktop/tpslPrice.tsx","../src/components/orderList/desktop/tpslTriggerPrice.tsx","../src/components/orderList/desktop/useColumn.tsx","../src/components/orderList/mobile/items.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/bracketOrderPrice/index.ts","../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/cancelBtn/index.ts","../src/components/orderList/mobile/editBtn/editBtn.ui.tsx","../src/components/orderList/mobile/editSheet/components/editSheetContext.ts","../src/components/orderList/mobile/editSheet/components/activitedPriceInput.tsx","../src/components/orderList/mobile/editSheet/components/editDialogContent.tsx","../src/components/orderList/mobile/editSheet/components/editSheetHeader.tsx","../src/components/orderList/mobile/editSheet/components/priceInput.tsx","../src/components/orderList/mobile/editSheet/components/quantityInput.tsx","../src/components/orderList/mobile/editSheet/components/quantitySlider.tsx","../src/components/orderList/mobile/editSheet/components/trailingCallbackInput.tsx","../src/components/orderList/mobile/editSheet/components/triggerPriceInput.tsx","../src/components/orderList/mobile/editSheet/editSheet.ui.tsx","../src/components/orderList/mobile/editSheet/hooks/useEditOrderEntry.ts","../src/components/orderList/mobile/editSheet/hooks/useEditOrderMaxQty.ts","../src/components/orderList/mobile/editSheet/editSheet.script.tsx","../src/components/orderList/mobile/editSheet/editSheet.widget.tsx","../src/components/orderList/mobile/editSheet/index.ts","../src/components/orderList/mobile/editBtn/editBtn.script.tsx","../src/components/orderList/mobile/editBtn/editBtn.widget.tsx","../src/components/orderList/mobile/editBtn/index.ts","../src/components/orderList/mobile/orderCell.ui.tsx","../src/components/orderList/mobile/orderCell.script.tsx","../src/components/orderList/mobile/orderCell.widget.tsx","../src/components/orderList/mobile/index.ts","../src/components/orderList/orderListProvider.tsx","../src/components/orderList/orderList.ui.tsx","../src/components/orderList/useFormatOrderHistory.ts","../src/components/orderList/orderList.script.tsx","../src/components/orderList/orderList.widget.tsx","../src/components/orderList/index.ts","../src/components/orders.ui.tsx","../src/components/orders.widget.tsx","../src/index.ts"],"names":["status","quantity","jsx","useMemo","useSymbolsInfo","Decimal","utils","useTranslation","Text","modal","createContext","useContext","toast","memo","ThrottledButton","jsxs","useRef","useState","useEffect","order","errors","useCallback","cn","Flex","OrderType","inputFormatter","Popover","AlgoOrderType","position","CheckIcon","Input","Tooltip","OrderSide","AlgoOrderRootType","Button","commifyOptional","Fragment","PreviewCell","price","sliderValue","useMutation","data","findTPSLFromOrder","i18n","OrderStatus","estTotal","useTpslPriceChecker","Badge","CloseToLiqPriceIcon","getTrailingStopPrice","AvgPrice","side","EditIcon","BracketOrderPrice","Price","init_bracketOrderPrice","init_cancelBtn","Slider","useOrderEntryFormErrorMsg","Divider","SimpleDialog","useOrderEntity","useMaxQty","useModal","useMemoizedFn","Grid","useImperativeHandle","useLocalStorage","dateRange","React","forwardRef","TabType"],"mappings":"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","sourcesContent":["import { ForwardedRef, useImperativeHandle, useRef } from \"react\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { OrderListInstance } from \"./orderList/orderList.script\";\nimport { TabType } from \"./orders.widget\";\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\n return {\n current,\n pnlNotionalDecimalPrecision,\n orderListRef,\n sharePnLConfig,\n };\n};\n\nexport type OrdersBuilderState = ReturnType<typeof useOrdersScript>;\n","import { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport {\n AlgoOrderRootType,\n AlgoOrderType,\n API,\n OrderStatus,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\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 if (algoType === AlgoOrderRootType.TRAILING_STOP) {\n return [i18n.t(\"orderEntry.orderType.trailingStop\")];\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\nexport function getOrderStatus(record: any) {\n return (record as API.Order).status || (record as API.AlgoOrder).algo_status;\n}\n\nexport function isGrayCell(status?: string): boolean {\n return status === OrderStatus.CANCELLED;\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 // UI not show ROI, so we don't need to calculate ROI\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\nexport function areDatesEqual(date1?: Date, date2?: Date): boolean {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n\nexport function isTrailingStopOrder(order: API.AlgoOrderExt) {\n return order.algo_type === OrderType.TRAILING_STOP;\n}\n\nexport function getNotional(order: API.AlgoOrderExt, dp = 2) {\n if (order.price && order.quantity) {\n return new Decimal(order.price)\n .mul(order.quantity)\n .toFixed(dp, Decimal.ROUND_DOWN);\n }\n\n return 0;\n}\n/**\n * api order type ==> orderEntry type\n */\nexport function convertApiOrderTypeToOrderEntryType(order: API.AlgoOrderExt) {\n if (order.algo_type === OrderType.TRAILING_STOP) {\n return order.algo_type;\n }\n\n const isAlgoOrder = order.algo_order_id !== undefined;\n\n if (isAlgoOrder && order.algo_type !== AlgoOrderRootType.BRACKET) {\n return `STOP_${order.type}` as OrderType;\n }\n\n return order.type;\n}\n","import { createContext, useContext } from \"react\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\n\nexport interface 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<SymbolContextState>(\n {} as SymbolContextState,\n);\n\nexport const useSymbolContext = () => {\n return useContext<SymbolContextState>(SymbolContext);\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { SymbolContext, SymbolContextState } from \"./symbolContext\";\n\ninterface FormatterProviderProps {\n symbol: string;\n}\n\nexport const SymbolProvider: FC<PropsWithChildren<FormatterProviderProps>> = (\n props,\n) => {\n const { symbol, children } = props;\n const symbolInfo = useSymbolsInfo()[symbol];\n const memoizedValue = useMemo<SymbolContextState>(() => {\n return {\n symbol: symbol,\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 origin: symbolInfo(),\n quote_max: symbolInfo(\"quote_max\"),\n quote_min: symbolInfo(\"quote_min\"),\n };\n }, [symbol, symbolInfo]);\n return (\n <SymbolContext.Provider value={memoizedValue}>\n {children}\n </SymbolContext.Provider>\n );\n};\n","import { FC } from \"react\";\nimport { ShareIcon } from \"@kodiak-finance/orderly-ui\";\nimport { ShareButtonScriptReturn } from \"./shareButton.script\";\n\nexport const ShareButton: FC<ShareButtonScriptReturn> = (props) => {\n if (props.sharePnLConfig == null) {\n return null;\n }\n\n return (\n <button\n type=\"button\"\n onClick={(e: any) => {\n e.stopPropagation();\n props.showModal();\n }}\n >\n <ShareIcon color=\"white\" opacity={0.54} size={props.iconSize ?? 16} />\n </button>\n );\n};\n","import { useMemo } from \"react\";\nimport { useReferralInfo, useLeverageBySymbol } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\n\nexport type ShareButtonScriptReturn = ReturnType<typeof useShareButtonScript>;\n\nexport const useShareButtonScript = (props: {\n order: any;\n sharePnLConfig?: SharePnLConfig;\n modalId: string;\n iconSize?: number;\n}) => {\n const { sharePnLConfig, order, iconSize } = props;\n const { t } = useTranslation();\n const { getFirstRefCode } = useReferralInfo();\n const refCode = useMemo(() => {\n return getFirstRefCode()?.code;\n }, [getFirstRefCode]);\n const leverage = useLeverageBySymbol(order.symbol);\n\n const showModal = () => {\n modal.show(props.modalId, {\n pnl: {\n entity: {\n symbol: order.symbol,\n pnl: order.realized_pnl,\n side:\n order.side == \"BUY\"\n ? t(\"share.pnl.share.long\")\n : t(\"share.pnl.share.short\"),\n openPrice: order.average_executed_price,\n openTime: order.updated_time,\n quantity: order.quantity,\n },\n refCode,\n leverage,\n ...sharePnLConfig,\n },\n });\n };\n\n return {\n iconSize,\n sharePnLConfig,\n showModal,\n };\n};\n","import React from \"react\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { useShareButtonScript } from \"./shareButton.script\";\nimport { ShareButton } from \"./shareButton.ui\";\n\nexport const ShareButtonWidget: React.FC<{\n order: any;\n sharePnLConfig?: SharePnLConfig;\n modalId: string;\n iconSize?: number;\n}> = (props) => {\n const state = useShareButtonScript(props);\n return <ShareButton {...state} />;\n};\n","export { ShareButton } from \"./shareButton.ui\";\nexport { ShareButtonWidget } from \"./shareButton.widget\";\n","import { memo } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\ntype AvgPriceProps = {\n symbol: string;\n value: string;\n};\n\nexport const AvgPrice = memo((props: AvgPriceProps) => {\n const symbolsInfo = useSymbolsInfo();\n\n const info = symbolsInfo[props.symbol];\n\n if (!props.value) {\n return \"--\";\n }\n\n return (\n <Text.numeral\n padding={false}\n dp={info(\"quote_dp\", 2)}\n rm={Decimal.ROUND_UP}\n >\n {props.value}\n </Text.numeral>\n );\n});\n","import { useMemo } from \"react\";\nimport { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Tooltip,\n Text,\n cn,\n EditIcon,\n useModal,\n modal,\n} from \"@kodiak-finance/orderly-ui\";\nimport { calcBracketRoiAndPnL } from \"../../../utils/util\";\nimport { useSymbolContext } from \"../../provider/symbolContext\";\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 } = 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\")}:`} </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\")}:`} </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 itemAlign={\"center\"} justify={\"start\"} gap={2}>\n <Flex direction={\"column\"} justify={\"start\"} itemAlign={\"start\"}>\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 <EditBracketOrder order={order} />\n </Flex>\n </Tooltip>\n );\n};\n\nconst EditBracketOrder = (props: { order: API.AlgoOrderExt }) => {\n const { order } = props;\n\n const onEdit = () => {\n modal.show(\"EditBracketOrderDialogId\", {\n order,\n });\n };\n\n return (\n <EditIcon\n size={16}\n className=\"oui-text-base-contrast oui-cursor-pointer\"\n onClick={() => {\n onEdit();\n }}\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 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 \n </span>\n }\n >\n {value}\n </Text.numeral>\n ) : (\n <></>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { API, OrderEntity } from \"@kodiak-finance/orderly-types\";\n\nexport interface OrderListContextState {\n onCancelOrder: (order: API.Order | API.AlgoOrder) => 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","import { FC, useState } from \"react\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { ThrottledButton, toast } from \"@kodiak-finance/orderly-ui\";\nimport { useOrderListContext } from \"../orderListContext\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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","export enum EditType {\n quantity,\n price,\n triggerPrice,\n callbackValue,\n callbackRate,\n}\n","import { memo } from \"react\";\nimport { useTranslation, Trans } from \"@kodiak-finance/orderly-i18n\";\nimport { Button, CloseIcon, ThrottledButton } from \"@kodiak-finance/orderly-ui\";\nimport { commify } from \"@kodiak-finance/orderly-utils\";\nimport { EditType } from \"../../../../type\";\n\ntype ConfirmContentProps = {\n type: EditType;\n base: string;\n value: string;\n cancelPopover: () => void;\n isSubmitting: boolean;\n onConfirm: (e: any) => void;\n};\n\nexport const ConfirmContent = memo((props: ConfirmContentProps) => {\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 key=\"0\" 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 case EditType.callbackValue:\n return (\n // @ts-ignore\n <Trans i18nKey=\"order.edit.confirm.callbackValue\" {...common} />\n );\n case EditType.callbackRate:\n return (\n // @ts-ignore\n <Trans i18nKey=\"order.edit.confirm.callbackRate\" {...common} />\n );\n }\n };\n\n return (\n <div className=\"oui-relative oui-pt-5\">\n <div className=\"desktop:oui-text-sm oui-text-2xs oui-text-base-contrast-54\">\n {renderLabel()}\n </div>\n <div className=\"oui-mt-5 oui-grid oui-grid-cols-2 oui-gap-2\">\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\nConfirmContent.displayName = \"ConfirmContent\";\n","import { useCallback, useEffect, useRef, useState, MouseEvent } from \"react\";\n\ntype PopoverStateProps = {\n originValue: string;\n value: string;\n setValue: (value: string) => void;\n};\n\nexport function usePopoverState(props: PopoverStateProps) {\n const { originValue, value, setValue } = props;\n\n const [open, setOpen] = useState(false);\n const [editing, setEditing] = useState(false);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const closePopover = useCallback(() => {\n setOpen(false);\n setEditing(false);\n }, []);\n\n const cancelPopover = useCallback(() => {\n closePopover();\n setValue(originValue);\n }, [originValue]);\n\n const onClick = useCallback(\n async (event: MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n\n // if value is not changed, then don't open popover\n if (value === originValue) {\n setEditing(false);\n return;\n }\n\n setOpen(true);\n },\n [value, originValue],\n );\n\n useEffect(() => {\n const handleClickOutside = (event: any) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node) &&\n !open\n ) {\n cancelPopover();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [open, cancelPopover]);\n\n return {\n value,\n setValue,\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n };\n}\n","import { useEffect, useMemo } from \"react\";\nimport { OrderValidationResult, useOrderEntity } from \"@kodiak-finance/orderly-hooks\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport { API, OrderlyOrder, OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { convertApiOrderTypeToOrderEntryType } from \"../../../../utils/util\";\n\nexport function useValidateField(props: {\n order: API.OrderExt | API.AlgoOrderExt;\n originValue?: string;\n value: string;\n field: keyof OrderValidationResult;\n fieldValues?: Partial<OrderlyOrder>;\n}) {\n const { order, field, originValue, value, fieldValues } = props;\n const changeFields = fieldValues || { [field]: value };\n\n const orderType = useMemo(\n () => convertApiOrderTypeToOrderEntryType(order as API.AlgoOrderExt),\n [order],\n );\n\n const { errors, validate, clearErrors } = useOrderEntity({\n symbol: order.symbol,\n order_type: orderType,\n side: order.side as OrderSide,\n ...(changeFields as any),\n });\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n\n const error = useMemo(\n () => (field ? getErrorMsg(field) : undefined),\n [getErrorMsg, field],\n );\n\n useEffect(() => {\n // if value is not changed, then don't validate\n if (value === originValue) {\n clearErrors();\n return;\n }\n validate()\n .then((order) => {\n console.log(\"order\", order);\n })\n .catch((errors) => {\n console.error(`${field} validate error:`, errors);\n });\n }, [value, originValue]);\n\n return { error, errors, getErrorMsg };\n}\n","import { FC, useCallback, useEffect, useRef, MouseEvent } from \"react\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport {\n inputFormatter,\n Input,\n InputProps,\n CheckIcon,\n cn,\n Flex,\n} from \"@kodiak-finance/orderly-ui\";\n\nexport type EditableCellInputProps = {\n id?: string;\n name?: string;\n placeholder?: string;\n suffix?: React.ReactNode;\n value?: InputProps[\"value\"];\n onChange?: (value: string) => void;\n error?: string;\n formatters?: InputProps[\"formatters\"];\n overrideFormatters?: InputProps[\"formatters\"];\n classNames?: InputProps[\"classNames\"];\n readonly?: boolean;\n onClick: (e: MouseEvent) => void;\n onFocus?: (e: any) => void;\n onBlur?: (e: any) => void;\n handleKeyDown?: (e: any) => void;\n};\n\nexport const EditableCellInput: FC<EditableCellInputProps> = (props) => {\n const { onClick } = props;\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleKeyDown = useCallback(\n (event: any) => {\n if (event.key === \"Enter\") {\n onClick(event);\n }\n },\n [onClick],\n );\n\n useEffect(() => {\n const input = inputRef.current;\n if (input) {\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }\n }, [props.value]);\n\n return (\n <Input.tooltip\n ref={inputRef}\n tooltip={props.error}\n autoComplete=\"off\"\n autoFocus\n type=\"text\"\n size=\"sm\"\n placeholder={props.readonly ? \"\" : props.placeholder || \"\"}\n id={props.id}\n name={props.name}\n color={props.error ? \"danger\" : undefined}\n value={props.readonly ? \"\" : props.value || \"\"}\n onValueChange={props.onChange}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onKeyDown={props.handleKeyDown || handleKeyDown}\n inputMode=\"decimal\"\n formatters={\n props.overrideFormatters || [\n ...(props.formatters ?? EMPTY_LIST),\n inputFormatter.numberFormatter,\n inputFormatter.decimalPointFormatter,\n ]\n }\n classNames={{\n root: \"oui-bg-base-700 oui-px-2 oui-py-1 oui-rounded\",\n input: \"oui-pr-2\",\n }}\n readOnly={props.readonly}\n suffix={\n <Flex gapX={1}>\n {props.suffix}\n <button onClick={onClick} disabled={!!props.error}>\n <CheckIcon\n size={18}\n color=\"white\"\n opacity={1}\n className={cn(\n \"oui-opacity-50\",\n props.error\n ? \"oui-cursor-not-allowed\"\n : \"oui-cursor-pointer hover:oui-opacity-100\",\n )}\n />\n </button>\n </Flex>\n }\n />\n );\n};\n","import { memo } from \"react\";\nimport { cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { isGrayCell } from \"../../../../utils/util\";\n\ntype PreviewCellProps = {\n status?: string;\n value: string;\n setEditing: (isEditing: boolean) => void;\n disabled?: boolean;\n suffix?: string;\n className?: string;\n};\n\nexport const PreviewCell = memo((props: PreviewCellProps) => {\n const { status, value, disabled } = props;\n\n return (\n <div\n className={cn(\n \"oui-flex oui-items-center oui-justify-start\",\n \"oui-relative oui-max-w-[110px] oui-gap-1 oui-font-semibold\",\n isGrayCell(status) && \"oui-text-base-contrast-20\",\n props.className,\n )}\n onClick={(e) => {\n if (!disabled) {\n e.stopPropagation();\n e.preventDefault();\n props.setEditing(true);\n }\n }}\n >\n <Flex\n r=\"base\"\n className={cn(\n \"oui-h-[28px] oui-min-w-[70px]\",\n !disabled && \"oui-border oui-border-line-12 oui-bg-base-7 oui-px-2\",\n )}\n >\n <Text size=\"2xs\">\n {commifyOptional(value)}\n {props.suffix}\n </Text>\n </Flex>\n </div>\n );\n});\n","import { useCallback, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { inputFormatter, Popover, toast } from \"@kodiak-finance/orderly-ui\";\nimport { EditType } from \"../../../../type\";\nimport { getOrderStatus } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { usePopoverState } from \"../hooks/usePopoverState\";\nimport { useValidateField } from \"../hooks/useValidateField\";\nimport { EditableCellInput } from \"./editableCellInput\";\nimport { PreviewCell } from \"./previewCell\";\n\nexport const ActivedPriceCell = (props: {\n order: API.AlgoOrderExt;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const { t } = useTranslation();\n // the value before editing, initial value\n const originValue = order.activated_price?.toString() ?? \"\";\n\n const [value, setValue] = useState<string>(originValue);\n const [submitting, setSubmitting] = useState(false);\n const disabled = props.disabled || order.is_activated || order.is_triggered;\n\n const { editAlgoOrder } = useOrderListContext();\n const { base, quote_dp } = useSymbolContext();\n\n const {\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n } = usePopoverState({\n originValue,\n value,\n setValue,\n });\n\n const { error } = useValidateField({\n order,\n field: \"activated_price\",\n originValue,\n value,\n });\n\n const onConfirm = useCallback(() => {\n setSubmitting(true);\n\n const data: any = {\n algo_order_id: order.algo_order_id,\n activated_price: value,\n };\n\n editAlgoOrder(order.algo_order_id.toString(), data)\n .then((result: any) => {\n closePopover();\n setValue(value);\n })\n .catch((err: any) => {\n toast.error(err.message);\n cancelPopover();\n })\n .finally(() => setSubmitting(false));\n }, [order.algo_order_id, value, cancelPopover]);\n\n if (!order.activated_price && order.type === OrderType.MARKET) {\n return <span>{t(\"common.marketPrice\")}</span>;\n }\n\n const renderContent = () => {\n if (!editing || disabled) {\n return (\n <PreviewCell\n value={value}\n status={getOrderStatus(order)}\n setEditing={setEditing}\n disabled={disabled}\n />\n );\n }\n\n return (\n <EditableCellInput\n value={value}\n onChange={setValue}\n onClick={onClick}\n // when editing, value should not be empty\n error={value ? error : t(\"orderEntry.triggerPrice.error.required\")}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\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={value}\n cancelPopover={cancelPopover}\n isSubmitting={submitting}\n onConfirm={onConfirm}\n />\n }\n >\n <div\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n ref={containerRef}\n >\n {renderContent()}\n </div>\n </Popover>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { inputFormatter, Popover, toast } from \"@kodiak-finance/orderly-ui\";\nimport { EditType } from \"../../../../type\";\nimport { getOrderStatus } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { usePopoverState } from \"../hooks/usePopoverState\";\nimport { useValidateField } from \"../hooks/useValidateField\";\nimport { EditableCellInput } from \"./editableCellInput\";\nimport { PreviewCell } from \"./previewCell\";\n\nexport const PriceCell = (props: {\n order: API.OrderExt;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const { t } = useTranslation();\n\n const originValue = useMemo(() => {\n if (order.type === OrderType.MARKET && !order.price) {\n return \"Market\";\n }\n return order.price?.toString() ?? \"Market\";\n }, [order.price, order.type]);\n\n const [value, setValue] = useState<string>(originValue);\n\n const isAlgoOrder = order?.algo_order_id !== undefined;\n\n const [submitting, setSubmitting] = useState(false);\n\n const { editOrder, editAlgoOrder } = useOrderListContext();\n\n const { base, quote_dp } = useSymbolContext();\n\n const {\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n } = usePopoverState({\n originValue,\n value,\n setValue,\n });\n\n const { error, getErrorMsg } = useValidateField({\n order,\n field: \"order_price\",\n originValue,\n value,\n fieldValues: {\n order_price: value,\n // add order quantity to validate total\n order_quantity: order.quantity?.toString(),\n // need to pass trigger_price to validate order_price, because order_price is depend on trigger_price when type is stop limit\n trigger_price: order.trigger_price?.toString(),\n },\n });\n\n const onConfirm = () => {\n setSubmitting(true);\n\n let order_id = order.order_id;\n // if reduce only is true, edit order must add symbol, order_type, side, order_price, order_quantity, reduce_only\n let data: any = {\n symbol: order.symbol,\n order_type: order.type,\n side: order.side,\n order_quantity: order.quantity,\n order_price: value,\n };\n\n if (order.reduce_only) {\n data.reduce_only = order.reduce_only;\n }\n\n if (order.order_tag) {\n data.order_tag = order.order_tag;\n }\n\n if (order.client_order_id) {\n data.client_order_id = order.client_order_id;\n }\n\n if (isAlgoOrder) {\n order_id = order.algo_order_id as number;\n data = {\n ...data,\n order_id,\n price: value,\n algo_order_id: order_id,\n };\n }\n\n // edit order don't need to set visible quantity again\n // if (order?.visible_quantity === 0) {\n // data[\"visible_quantity\"] = 0;\n // }\n\n // TODO: remove this, because order not have this field\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((result: any) => {\n closePopover();\n setValue(value);\n })\n .catch((err: any) => {\n toast.error(err.message);\n cancelPopover();\n })\n .finally(() => setSubmitting(false));\n };\n\n const isAlgoMarketOrder = order.algo_order_id && order.type == \"MARKET\";\n\n if (isAlgoMarketOrder || value === \"Market\") {\n return <span>{t(\"common.marketPrice\")}</span>;\n }\n\n const renderContent = () => {\n if (!editing || props.disabled) {\n return (\n <PreviewCell\n value={value}\n status={getOrderStatus(order)}\n setEditing={setEditing}\n disabled={props.disabled}\n />\n );\n }\n\n return (\n <EditableCellInput\n value={value}\n onChange={setValue}\n onClick={onClick}\n error={error || getErrorMsg(\"total\")}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\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={value}\n cancelPopover={cancelPopover}\n isSubmitting={submitting}\n onConfirm={onConfirm}\n />\n }\n >\n <div\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n ref={containerRef}\n >\n {renderContent()}\n </div>\n </Popover>\n );\n};\n","import {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n unstable_serialize,\n useAccount,\n useMemoizedFn,\n useMutation,\n useSWRConfig,\n utils,\n} from \"@kodiak-finance/orderly-hooks\";\nimport {\n findTPSLOrderPriceFromOrder,\n findTPSLFromOrder,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { API, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { AlgoOrderType } from \"@kodiak-finance/orderly-types\";\nimport { useSymbolContext } from \"../provider/symbolContext\";\n\nexport type TPSLOrderRowContextState = {\n order: API.AlgoOrderExt;\n tp_trigger_price?: number;\n sl_trigger_price?: number;\n sl_order_price?: number | OrderType;\n tp_order_price?: number | OrderType;\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<TPSLOrderRowContextState>(\n {} as TPSLOrderRowContextState,\n);\n\nexport const useTPSLOrderRowContext = () => {\n return useContext(TPSLOrderRowContext);\n};\n\nexport const TPSLOrderRowProvider: FC<\n PropsWithChildren<{ order: API.AlgoOrderExt }>\n> = (props) => {\n const { order, children } = 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 = useMemoizedFn(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 = useMemoizedFn(\n async (order: API.AlgoOrderExt, params: any) => {\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\n const getRelatedPosition = useMemoizedFn(\n (symbol: string): API.PositionTPSLExt => {\n const positions = config.cache.get(positionKey);\n return positions?.data?.rows?.find(\n (p: API.PositionTPSLExt) => p.symbol === symbol,\n );\n },\n );\n\n const {\n sl_trigger_price,\n tp_trigger_price,\n tpPnL,\n slPnL,\n sl_order_price,\n tp_order_price,\n } = calcTPSLPnL({\n order: order,\n position,\n quote_dp,\n });\n\n useEffect(() => {\n if (\"algo_type\" in order || ((order as any)?.reduce_only ?? false)) {\n const position = getRelatedPosition(order.symbol);\n if (position) {\n setPosition(position);\n }\n }\n }, [order.symbol]);\n\n const memoizedValue = useMemo<TPSLOrderRowContextState>(() => {\n return {\n order: order,\n sl_trigger_price,\n tp_trigger_price,\n sl_order_price,\n tp_order_price,\n tpPnL,\n slPnL,\n position,\n onCancelOrder,\n onUpdateOrder,\n getRelatedPosition,\n };\n }, [\n order,\n sl_trigger_price,\n tp_trigger_price,\n sl_order_price,\n tp_order_price,\n tpPnL,\n slPnL,\n position,\n onCancelOrder,\n onUpdateOrder,\n getRelatedPosition,\n ]);\n\n return (\n <TPSLOrderRowContext.Provider value={memoizedValue}>\n {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 isTPSLOrder = \"algo_type\" in order && Array.isArray(order.child_orders);\n\n const { sl_trigger_price, tp_trigger_price } = isTPSLOrder\n ? findTPSLFromOrder(order)\n : {\n sl_trigger_price: undefined,\n tp_trigger_price: undefined,\n };\n const { sl_order_price, tp_order_price } = isTPSLOrder\n ? findTPSLOrderPriceFromOrder(order)\n : {\n sl_order_price: undefined,\n tp_order_price: undefined,\n };\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 sl_order_price,\n tp_order_price,\n slPnL,\n tpPnL,\n };\n}\n","import { FC, useEffect } from \"react\";\nimport { CheckIcon, Input, inputFormatter, Tooltip } from \"@kodiak-finance/orderly-ui\";\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 { FC, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useMaxQty, utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { AlgoOrderRootType } from \"@kodiak-finance/orderly-types\";\nimport {\n cn,\n Flex,\n Popover,\n toast,\n Text,\n Slider,\n Button,\n PopoverTrigger,\n PopoverRoot,\n PopoverContent,\n} from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional, Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { EditType } from \"../../../../type\";\nimport { grayCell } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { useTPSLOrderRowContext } from \"../../tpslOrderRowContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { InnerInput } from \"../editOrder/innerInput\";\n\nexport const QuantityCell = (props: {\n order: API.OrderExt | API.AlgoOrder;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const { reduce_only } = order;\n const originValue = order.quantity.toString();\n const [value, setValue] = useState(originValue);\n\n const [editing, setEditing] = useState(false);\n\n const { t } = useTranslation();\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 setValue(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 useEffect(() => {\n setQuantity(order.quantity.toString());\n }, [props.order.quantity]);\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 if (!!error) {\n return;\n }\n\n if (Number(value) === 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, value);\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: value,\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) {\n params.order_tag = order.order_tag;\n }\n\n if (order.client_order_id) {\n params.client_order_id = order.client_order_id;\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(value.toString());\n },\n (err: any) => {\n toast.error(err.message);\n setQuantity(order.quantity.toString());\n cancelPopover();\n },\n )\n .finally(() => setIsSubmitting(false));\n }, [value]);\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 renderContent = () => {\n if (!editing || props.disabled) {\n return (\n <PreviewCell\n order={order}\n value={value}\n setEditing={setEditing}\n disable={props.disabled}\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={value}\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\n return (\n <Popover\n open={open}\n onOpenChange={setOpen}\n content={\n <ConfirmContent\n type={EditType.quantity}\n base={base}\n value={value}\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 {renderContent()}\n </div>\n </Popover>\n );\n};\n\nconst PreviewCell: FC<{\n order: API.AlgoOrder | API.OrderExt;\n value: string;\n setEditing: any;\n disable?: boolean;\n}> = (props) => {\n const { order, value } = 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-relative oui-max-w-[110px]\",\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-h-[28px] oui-min-w-[70px]\",\n !props.disable &&\n \"oui-border oui-border-line-12 oui-bg-base-7 oui-px-2\",\n )}\n >\n <Text size=\"2xs\">{value}</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 setEditing,\n handleKeyDown,\n onClick,\n onClose,\n error,\n symbol,\n reduce_only,\n positionQty,\n confirmOpen,\n order,\n } = props;\n\n const maxBuyQty = useMaxQty(symbol, order.side, 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(maxBuyQty);\n }, [order.quantity, maxBuyQty, 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(maxQty)\n .abs()\n .mul(100)\n .toNumber();\n setSliderValue(sliderValue);\n }\n }, [sliderValue, maxQty, 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}`, maxQty);\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), maxQty)).toString();\n setQuantity(e, maxQty);\n if (e.endsWith(\".\")) return;\n if (Number(quantity) === 0) {\n setSliderValue(0);\n return;\n }\n const sliderValue = new Decimal(e)\n .div(maxQty)\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(maxQty)\n .abs()\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n setQuantity(quantity, maxQty);\n }}\n onValueCommit={(values) => {\n const quantity = new Decimal(values[0])\n .div(100)\n .mul(maxQty)\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(maxQty)\n .abs()\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n quantity = utils.formatNumber(quantity, base_tick) ?? quantity;\n\n setQuantity(quantity, maxQty);\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\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 { useCallback, useMemo, useState } from \"react\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Popover, toast, inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { EditType } from \"../../../../type\";\nimport { getOrderStatus } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { usePopoverState } from \"../hooks/usePopoverState\";\nimport { useValidateField } from \"../hooks/useValidateField\";\nimport { EditableCellInput } from \"./editableCellInput\";\nimport { PreviewCell } from \"./previewCell\";\n\nexport const TrailingCallbackCell = (props: {\n order: API.AlgoOrderExt;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const { callback_value, callback_rate } = order;\n\n const isCallbackValue = !!callback_value;\n const isCallbackRate = !!callback_rate;\n\n const originValue = useMemo(() => {\n return callback_rate\n ? (callback_rate * 100).toString()\n : callback_value?.toString()!;\n }, [callback_value, callback_rate]);\n\n const [value, setValue] = useState<string>(originValue!);\n const [submitting, setSubmitting] = useState(false);\n\n const disabled = props.disabled || order.is_triggered;\n\n const { editAlgoOrder } = useOrderListContext();\n\n const { base, quote_dp } = useSymbolContext();\n\n const {\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n } = usePopoverState({\n originValue,\n value,\n setValue,\n });\n\n const { error } = useValidateField({\n order,\n originValue,\n value,\n field: isCallbackValue ? \"callback_value\" : \"callback_rate\",\n fieldValues: {\n callback_value: isCallbackValue ? value : undefined,\n callback_rate: isCallbackRate ? value : undefined,\n },\n });\n\n const onConfirm = useCallback(() => {\n setSubmitting(true);\n\n const data: any = {\n algo_order_id: order.algo_order_id,\n callback_value: isCallbackValue ? value : undefined,\n callback_rate: isCallbackRate ? `${Number(value) / 100}` : undefined,\n };\n\n editAlgoOrder(order.algo_order_id.toString(), data)\n .then((result: any) => {\n closePopover();\n setValue(value);\n })\n .catch((err: any) => {\n toast.error(err.message);\n cancelPopover();\n })\n .finally(() => setSubmitting(false));\n }, [order.algo_order_id, value, cancelPopover]);\n\n const renderContent = () => {\n const suffix = isCallbackRate ? \"%\" : undefined;\n\n if (!editing || disabled) {\n return (\n <PreviewCell\n status={getOrderStatus(order)}\n value={value}\n setEditing={setEditing}\n disabled={disabled}\n suffix={suffix}\n />\n );\n }\n\n const formatters = isCallbackRate\n ? [inputFormatter.dpFormatter(1)]\n : [\n inputFormatter.currencyFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ];\n\n return (\n <EditableCellInput\n value={value}\n onChange={setValue}\n onClick={onClick}\n error={error}\n suffix={suffix}\n formatters={formatters}\n />\n );\n };\n\n return (\n <Popover\n open={open}\n onOpenChange={setOpen}\n content={\n <ConfirmContent\n type={isCallbackRate ? EditType.callbackRate : EditType.callbackValue}\n base={base}\n value={isCallbackRate ? `${value}%` : value}\n cancelPopover={cancelPopover}\n isSubmitting={submitting}\n onConfirm={onConfirm}\n />\n }\n >\n <div\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n ref={containerRef}\n >\n {renderContent()}\n </div>\n </Popover>\n );\n};\n","import { useCallback, useState } from \"react\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Popover, toast, inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { EditType } from \"../../../../type\";\nimport { getOrderStatus } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { usePopoverState } from \"../hooks/usePopoverState\";\nimport { useValidateField } from \"../hooks/useValidateField\";\nimport { EditableCellInput } from \"./editableCellInput\";\nimport { PreviewCell } from \"./previewCell\";\n\nexport const TriggerPriceCell = (props: {\n order: API.AlgoOrderExt;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const originValue = order.trigger_price?.toString();\n\n const [value, setValue] = useState<string>(originValue);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const disabled = props.disabled || order.is_triggered;\n\n const { editAlgoOrder } = useOrderListContext();\n const { base, quote_dp } = useSymbolContext();\n\n const {\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n } = usePopoverState({\n originValue,\n value,\n setValue,\n });\n\n const { error } = useValidateField({\n order,\n field: \"trigger_price\",\n originValue,\n value,\n });\n\n const onConfirm = useCallback(() => {\n setIsSubmitting(true);\n\n const data: any = {\n trigger_price: value,\n algo_order_id: order.algo_order_id,\n };\n\n editAlgoOrder(`${order.algo_order_id}`, data)\n .then((result: any) => {\n closePopover();\n setValue(value);\n })\n .catch((err: any) => {\n toast.error(err.message);\n cancelPopover();\n })\n .finally(() => setIsSubmitting(false));\n }, [order.algo_order_id, value, cancelPopover]);\n\n const renderContent = () => {\n if (!editing || disabled) {\n return (\n <PreviewCell\n value={value}\n status={getOrderStatus(order)}\n setEditing={setEditing}\n disabled={disabled}\n />\n );\n }\n\n return (\n <EditableCellInput\n value={value}\n onChange={setValue}\n onClick={onClick}\n error={error}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\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={value}\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={containerRef}\n >\n {renderContent()}\n </div>\n </Popover>\n );\n};\n","import { FC, useCallback, useState } from \"react\";\nimport { useConfig, useMutation } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderEntity } from \"@kodiak-finance/orderly-types\";\nimport { Button } from \"@kodiak-finance/orderly-ui\";\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 side: record.side,\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 if (record.order_tag) {\n data.order_tag = record.order_tag;\n }\n\n if (record.client_order_id) {\n data.client_order_id = record.client_order_id;\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 { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { PositionTPSLPopover } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { useSymbolContext } from \"../../provider/symbolContext\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\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 {\n findTPSLOrderPriceFromOrder,\n findTPSLFromOrder,\n useSymbolsInfo,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { i18n, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Text } from \"@kodiak-finance/orderly-ui\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\n\nexport const TPSLOrderPrice = () => {\n const {\n sl_trigger_price,\n tp_trigger_price,\n sl_order_price,\n tp_order_price,\n order,\n } = useTPSLOrderRowContext();\n const { t } = useTranslation();\n const symbolInfo = useSymbolsInfo()[order.symbol]();\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\")} -`} </Text>\n <TPSLOrderPriceItem\n price={tp_order_price}\n quoteDP={symbolInfo.quote_dp}\n />\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\")} -`} \n </span>\n <TPSLOrderPriceItem\n price={sl_order_price}\n quoteDP={symbolInfo.quote_dp}\n />\n </div>\n ) : null}\n </div>\n );\n};\n\nconst TPSLOrderPriceItem = ({\n price,\n quoteDP,\n}: {\n price?: number | OrderType;\n quoteDP: number;\n}) => {\n const { t } = useTranslation();\n if (!price) {\n return null;\n }\n if (price === OrderType.MARKET) {\n return <span>{t(\"common.marketPrice\")}</span>;\n }\n\n return (\n <Text.numeral\n className=\"oui-text-base-contrast-80\"\n rule={\"price\"}\n dp={quoteDP}\n >\n {price}\n </Text.numeral>\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 : 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, useMemo } from \"react\";\nimport {\n OrderValidationResult,\n useSymbolsInfo,\n useTpslPriceChecker,\n utils,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, AlgoOrderType } from \"@kodiak-finance/orderly-types\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { cn, Text, Tooltip } from \"@kodiak-finance/orderly-ui\";\nimport { CloseToLiqPriceIcon } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\n\nexport const OrderTriggerPrice = () => {\n const { sl_trigger_price, tp_trigger_price, order, position } =\n useTPSLOrderRowContext();\n\n const positionSide =\n position?.position_qty && position.position_qty > 0\n ? OrderSide.BUY\n : OrderSide.SELL;\n const slPriceError = useTpslPriceChecker({\n slPrice: sl_trigger_price?.toString() ?? undefined,\n liqPrice: position?.est_liq_price ?? null,\n side: positionSide,\n });\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 slPriceError={slPriceError}\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 slPriceError: OrderValidationResult | null;\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\")} -`} \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 \"oui-flex oui-items-center\",\n )}\n as=\"div\"\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\")} -`} \n </span>\n ) : (\n \"\"\n )\n }\n suffix={\n <CloseToLiqPriceIcon\n slPriceError={props.slPriceError}\n className=\"oui-ml-1\"\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 }, [\n props.takeProfitPrice,\n props.stopLossPrice,\n order?.symbol,\n t,\n props.slPriceError,\n ]);\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 { format } from \"date-fns\";\nimport { SymbolsInfo, utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation, i18n } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AlgoOrderRootType,\n AlgoOrderType,\n API,\n OrderSide,\n OrderStatus,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\nimport { cn, Column, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Badge } from \"@kodiak-finance/orderly-ui\";\nimport {\n SharePnLConfig,\n SharePnLDialogId,\n} from \"@kodiak-finance/orderly-ui-share\";\nimport {\n commifyOptional,\n Decimal,\n formatNum,\n getTrailingStopPrice,\n} from \"@kodiak-finance/orderly-utils\";\nimport {\n grayCell,\n parseBadgesFor,\n upperCaseFirstLetter,\n isTrailingStopOrder,\n getNotional,\n} from \"../../../utils/util\";\nimport { TabType } from \"../../orders.widget\";\nimport { useSymbolContext } from \"../../provider/symbolContext\";\nimport { ShareButtonWidget } from \"../../shareButton\";\nimport { AvgPrice } from \"./avgPrice\";\nimport { BracketOrderPrice } from \"./bracketOrderPrice\";\nimport { CancelButton } from \"./cancelBtn\";\nimport { ActivedPriceCell } from \"./components/activedPriceCell\";\nimport { PriceCell } from \"./components/priceCell\";\nimport { QuantityCell } from \"./components/quantityCell\";\nimport { TrailingCallbackCell } from \"./components/trailingCallbackCell\";\nimport { TriggerPriceCell } from \"./components/triggerPriceCell\";\nimport { Renew } from \"./renew\";\nimport { TP_SLEditButton } from \"./tpslEdit\";\nimport { TPSLOrderPrice, useTPSLOrderPrice } from \"./tpslPrice\";\nimport { OrderTriggerPrice } from \"./tpslTriggerPrice\";\n\nexport const useOrderColumn = (props: {\n _type: TabType;\n onSymbolChange?: (symbol: API.Symbol) => void;\n pnlNotionalDecimalPrecision?: number;\n sharePnLConfig?: SharePnLConfig;\n symbolsInfo?: SymbolsInfo;\n}) => {\n const {\n _type,\n onSymbolChange,\n pnlNotionalDecimalPrecision,\n sharePnLConfig,\n symbolsInfo,\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(\"common.orderPrice\"),\n disableEdit: true,\n enableSort: false,\n }),\n avgOpen({ width: 130, enableSort: false, symbolsInfo }),\n tpslTriggerPrice({ width: 130, symbolsInfo: props.symbolsInfo }),\n realizedPnL({\n width: 124,\n pnlNotionalDecimalPrecision: pnlNotionalDecimalPrecision,\n sharePnLConfig: sharePnLConfig,\n symbolsInfo: props.symbolsInfo,\n hideShare: true,\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 trailingCallback({ width: 162 }),\n triggerPrice({ width: 162, className: \"oui-pr-0\", isPending: true }),\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: 80 }),\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 }),\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(\"common.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,\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({\n width: 124,\n disableEdit: true,\n tabType: TabType.orderHistory,\n }),\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 hideShare: true,\n }),\n estTotal({ width: 124 }),\n trailingCallback({ width: 124, disableEdit: true }),\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-h-7 oui-w-1 oui-shrink-0 oui-rounded-[1px]\",\n record.side === OrderSide.BUY\n ? \"oui-bg-trade-profit\"\n : \"oui-bg-trade-loss\",\n )}\n />\n <Flex direction=\"column\" itemAlign={\"start\"}>\n <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-whitespace-nowrap oui-break-normal\"\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 <QuantityCell order={record} disabled={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 <QuantityCell 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 tabType?: TabType;\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 const isTrailingStop = isTrailingStopOrder(record);\n if (isTrailingStop) {\n // TODO: fix precision\n return option?.tabType === TabType.orderHistory\n ? i18n.t(\"common.marketPrice\")\n : getTrailingStopPrice(record) || \"--\";\n }\n return commifyOptional(record.price, {\n fallback: i18n.t(\"common.marketPrice\"),\n });\n },\n render: (value: string, record: any) => {\n const isTrailingStop = isTrailingStopOrder(record);\n if (isTrailingStop) {\n // TODO: fix precision\n return option?.tabType === TabType.orderHistory\n ? i18n.t(\"common.marketPrice\")\n : getTrailingStopPrice(record) || \"--\";\n }\n\n return <PriceCell order={record} disabled={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 symbolsInfo?: SymbolsInfo;\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 renderPlantText: (value: string, record: any) => {\n return commifyOptional(value);\n },\n render: (value: string, record: any) => {\n return <AvgPrice symbol={record.symbol} value={value} />;\n },\n };\n}\n\nfunction triggerPrice(option?: {\n enableSort?: boolean;\n width?: number;\n className?: string;\n disableEdit?: boolean;\n isPending?: boolean;\n}): Column<API.Order> {\n const { isPending } = option || {};\n const checkOrderType = (record: any) => {\n const isAlgoOrder = record?.algo_order_id !== undefined;\n const isBracketOrder = record?.algo_type === \"BRACKET\";\n return isAlgoOrder && !isBracketOrder;\n };\n\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 if (!checkOrderType(record)) {\n return \"--\";\n }\n if (isTrailingStopOrder(record) && isPending) {\n return record.activated_price\n ? commifyOptional(record.activated_price)\n : \"--\";\n }\n return commifyOptional(value);\n },\n render: (value: string, record: any) => {\n if (!checkOrderType(record)) {\n return \"--\";\n }\n\n if (isTrailingStopOrder(record) && isPending) {\n return (\n <ActivedPriceCell order={record} disabled={option?.disableEdit} />\n );\n }\n return <TriggerPriceCell order={record} disabled={option?.disableEdit} />;\n },\n };\n}\n\nfunction tpslTriggerPrice(option?: {\n enableSort?: boolean;\n width?: number;\n className?: string;\n title?: string;\n symbolsInfo?: SymbolsInfo;\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?: SymbolsInfo;\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).toNumber();\n // wraper flex\n return (\n <Flex gap={1}>\n <Text.pnl\n dp={dp}\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.pnl>\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.notional className=\"oui-break-normal oui-whitespace-nowrap oui-font-semibold\">\n {value ?? \"--\"}\n </Text.notional>\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 : `${formatNum\n .notional(new Decimal(record.mark_price).mul(record.quantity))\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 : `${formatNum\n .notional(new Decimal(record.mark_price).mul(record.quantity))\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 symbolsInfo?: SymbolsInfo;\n}): Column<API.Order> {\n return {\n title: i18n.t(\"common.avgPrice\"),\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\n return <AvgPrice symbol={record.symbol} value={value} />;\n },\n renderPlantText: (value: string, record: any) => {\n return value ? commifyOptional(value) : \"--\";\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 return getNotional(record) || \"--\";\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\nfunction trailingCallback(option?: {\n title?: string;\n width?: number;\n className?: string;\n disableEdit?: boolean;\n}): Column<API.Order> {\n return {\n title: option?.title ?? i18n.t(\"orderEntry.trailing\"),\n dataIndex: \"callback_value\",\n className: option?.className,\n width: option?.width,\n renderPlantText: (value: string, record: any) => {\n const { callback_value, callback_rate } = record;\n const val =\n callback_value || (callback_rate ? `${callback_rate * 100}%` : \"--\");\n return val?.toString();\n },\n render: (value: string, record: any) => {\n if (isTrailingStopOrder(record)) {\n return (\n <TrailingCallbackCell order={record} disabled={option?.disableEdit} />\n );\n }\n\n return \"--\";\n },\n };\n}\n","import {\n FC,\n PropsWithChildren,\n ReactNode,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { useTpslPriceChecker } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AlgoOrderRootType,\n API,\n OrderStatus,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport {\n Badge,\n cn,\n Flex,\n Statistic,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { SharePnLBottomSheetId } from \"@kodiak-finance/orderly-ui-share\";\nimport { CloseToLiqPriceIcon } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { Decimal, getTrailingStopPrice } from \"@kodiak-finance/orderly-utils\";\nimport {\n getNotional,\n parseBadgesFor,\n upperCaseFirstLetter,\n} from \"../../../utils/util\";\nimport { ShareButtonWidget } from \"../../shareButton\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\nimport { OrderCellState } from \"./orderCell.script\";\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.created_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(() => getNotional(item), [item.price, item.quantity]);\n\n const rendrerContent = () => {\n if (value) {\n return (\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 );\n }\n\n return \"--\";\n };\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 {rendrerContent()}\n </Statistic>\n );\n};\n\nexport const TriggerPrice: FC<\n OrderCellState & {\n align?: \"start\" | \"end\";\n isPending?: boolean;\n }\n> = (props) => {\n const { item, isPending } = props;\n const { t } = useTranslation();\n\n const isTrailingStop = item?.algo_type === AlgoOrderRootType.TRAILING_STOP;\n\n const rendrerContent = () => {\n if (isTrailingStop && isPending && item.activated_price) {\n return (\n <Text.numeral\n dp={props.quote_dp}\n intensity={80}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n >\n {item.activated_price}\n </Text.numeral>\n );\n }\n\n if (item.trigger_price) {\n return (\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 );\n }\n\n return \"--\";\n };\n\n return (\n <Statistic\n label={isTrailingStop ? t(\"common.trigger\") : t(\"common.triggerPrice\")}\n classNames={{\n root: \"oui-text-xs\",\n label: \"oui-text-2xs\",\n }}\n align={props.align}\n >\n {rendrerContent()}\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 isTrailingStop = item?.algo_type === AlgoOrderRootType.TRAILING_STOP;\n const isStopMarket = item?.type === \"MARKET\" && isAlgoOrder;\n\n const rendrerContent = () => {\n if (isTrailingStop) {\n return \"--\";\n }\n if (isStopMarket) {\n return <Text>{t(\"common.marketPrice\")}</Text>;\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.price ?? \"--\"}\n </Text.numeral>\n );\n };\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 {rendrerContent()}\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\")}:`} </Text>}\n suffix={<Text intensity={20}> 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, position: item } = useTPSLOrderRowContext();\n const { t } = useTranslation();\n\n const side = (item?.position_qty ?? 0) > 0 ? OrderSide.BUY : OrderSide.SELL;\n const slPriceError = useTpslPriceChecker({\n slPrice: sl_trigger_price?.toString() ?? undefined,\n liqPrice: item?.est_liq_price ?? null,\n side: side,\n });\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\")}:`} </Text>\n }\n suffix={<Text intensity={20}> 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 as=\"div\"\n rm={Decimal.ROUND_DOWN}\n color=\"sell\"\n padding={false}\n suffix={<CloseToLiqPriceIcon slPriceError={slPriceError} />}\n className={cn(\n sl_trigger_price\n ? \"oui-border-b oui-border-dashed oui-border-base-contrast-12\"\n : undefined,\n \"oui-flex oui-items-center\",\n )}\n >\n {sl_trigger_price ?? \"--\"}\n </Text.numeral>\n </MobileTooltip>\n </Statistic>\n );\n};\n\nexport const TPPrice: FC<OrderCellState> = (props) => {\n const { t } = useTranslation();\n const { tp_order_price } = useTPSLOrderRowContext();\n\n const renderOrderPrice = useMemo(() => {\n if (tp_order_price === undefined) {\n return <Text>--</Text>;\n }\n if (tp_order_price === OrderType.MARKET) {\n return <Text>{t(\"common.marketPrice\")}</Text>;\n }\n return (\n <Text.numeral\n dp={props.quote_dp}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n padding={false}\n >\n {tp_order_price}\n </Text.numeral>\n );\n }, [tp_order_price]);\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 {renderOrderPrice}\n </Statistic>\n );\n};\nexport const SLPrice: FC<OrderCellState> = (props) => {\n const { t } = useTranslation();\n const { sl_order_price } = useTPSLOrderRowContext();\n\n const renderOrderPrice = useMemo(() => {\n if (sl_order_price === undefined) {\n return <Text>--</Text>;\n }\n if (sl_order_price === OrderType.MARKET) {\n return <Text>{t(\"common.marketPrice\")}</Text>;\n }\n return (\n <Text.numeral\n dp={props.quote_dp}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n padding={false}\n >\n {sl_order_price}\n </Text.numeral>\n );\n }, [sl_order_price]);\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 {renderOrderPrice}\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.base_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(\"common.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.pnl\n dp={props.quote_dp}\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.pnl>\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\nexport const Fee: FC<OrderCellState> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex justify=\"end\" gapX={1} mt={1}>\n <Text size=\"2xs\" intensity={36}>\n {t(\"common.fee\")}:\n </Text>\n <Text size=\"2xs\" intensity={80}>\n {props.item?.total_fee ?? \"--\"}\n </Text>\n </Flex>\n );\n};\n\nexport const TrailingCallback: FC<OrderCellState> = (props) => {\n const { item } = props;\n const { t } = useTranslation();\n\n const { callback_value, callback_rate } = item;\n\n return (\n <Statistic\n label={t(\"orderEntry.trailing\")}\n align=\"end\"\n classNames={{\n root: \"oui-text-xs\",\n label: \"oui-text-2xs\",\n }}\n >\n {callback_rate ? (\n <Text intensity={80}>{`${callback_rate * 100}%`}</Text>\n ) : (\n <Text.numeral\n dp={props.quote_dp}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n padding={false}\n >\n {callback_value ?? \"--\"}\n </Text.numeral>\n )}\n </Statistic>\n );\n};\n\nexport const TrailingPrice: FC<OrderCellState> = (props) => {\n const { item } = props;\n const { t } = useTranslation();\n\n const value = useMemo(() => {\n return getTrailingStopPrice(item);\n }, [item]);\n\n return (\n <Statistic\n label={t(\"common.price\")}\n align=\"start\"\n classNames={{\n root: \"oui-text-xs\",\n label: \"oui-text-2xs\",\n }}\n >\n {value ? (\n <Text.numeral\n dp={props.quote_dp}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n padding={false}\n >\n {value}\n </Text.numeral>\n ) : (\n \"--\"\n )}\n </Statistic>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, EditIcon, Flex, Text, modal } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { MobileTooltip } from \"../items\";\nimport { BracketOrderPriceState } from \"./bracketOrderPrice.script\";\n\nexport const BracketOrderPrice: FC<BracketOrderPriceState> = (props) => {\n const { t } = useTranslation();\n\n const onEdit = () => {\n modal.show(\"EditBracketOrderSheetId\", {\n order: props.order,\n });\n };\n\n if (!props.sl_trigger_price && !props.tp_trigger_price) return <></>;\n\n return (\n <Flex gap={1} itemAlign={\"center\"} justify={\"start\"}>\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\")}:`} </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\")}:`} </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 <EditIcon\n onClick={onEdit}\n opacity={1}\n className=\"oui-cursor-pointer oui-text-base-contrast-54\"\n size={16}\n />\n </Flex>\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} `}: \n </span>\n }\n >\n {value}\n </Text.numeral>\n ) : (\n <></>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { calcBracketRoiAndPnL } from \"../../../../utils/util\";\nimport { OrderCellState } from \"../orderCell.script\";\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 } = calcBracketRoiAndPnL(order);\n\n return {\n sl_trigger_price,\n order,\n tp_trigger_price,\n pnl,\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","export { BracketOrderPrice } from \"./bracketOrderPrice.ui\";\nexport { BracketOrderPriceWidget } from \"./bracketOrderPrice.widget\";\nexport { useBracketOrderPriceScript } from \"./bracketOrderPrice.script\";\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Button, SimpleDialog, Text } from \"@kodiak-finance/orderly-ui\";\nimport { CancelBtnState } from \"./cancelBtn.script\";\n\nexport const CancelBtn: FC<CancelBtnState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Button\n variant=\"outlined\"\n fullWidth\n color=\"secondary\"\n size=\"sm\"\n className=\"oui-border-base-contrast-36\"\n onClick={(e) => props.onCancel(e)}\n >\n {t(\"common.cancel\")}\n </Button>\n );\n};\n","import { FC, useState } from \"react\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { toast } from \"@kodiak-finance/orderly-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","export { CancelBtn } from \"./cancelBtn.ui\";\nexport { CancelBtnWidget } from \"./cancelBtn.widget\";\nexport { useCancelBtnScript } from \"./cancelBtn.script\";\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Button } from \"@kodiak-finance/orderly-ui\";\nimport { EditBtnState } from \"./editBtn.script\";\n\nexport const EditBtn: FC<EditBtnState> = (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={() => {\n props.onShowEditSheet();\n }}\n >\n {t(\"common.edit\")}\n </Button>\n </>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { OrderValidationResult } from \"@kodiak-finance/orderly-hooks\";\nimport { OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { SymbolContextState } from \"../../../../provider/symbolContext\";\n\nexport type EditSheetContextState = {\n symbolInfo: SymbolContextState;\n getErrorMsg: (\n key: keyof OrderValidationResult,\n customValue?: string,\n ) => string;\n setOrderValue: (key: keyof OrderlyOrder, value: any) => void;\n};\n\nexport const EditSheetContext = createContext({} as EditSheetContextState);\n\nexport function useEditSheetContext() {\n return useContext(EditSheetContext);\n}\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype ActivitedPriceInputProps = {\n activated_price?: string | number;\n disabled?: boolean;\n};\n\nexport const ActivitedPriceInput = memo((props: ActivitedPriceInputProps) => {\n const { activated_price } = props;\n const { t } = useTranslation();\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n const { quote, quote_dp } = symbolInfo;\n\n const error = activated_price\n ? getErrorMsg(\"activated_price\")\n : t(\"orderEntry.triggerPrice.error.required\");\n\n return (\n <Input.tooltip\n prefix={\n <Text intensity={54} className=\"oui-px-3\">\n {t(\"common.trigger\")}\n </Text>\n }\n suffix={\n <Text intensity={54} className=\"oui-px-3\">\n {quote}\n </Text>\n }\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ]}\n value={activated_price}\n onValueChange={(val) => setOrderValue(\"activated_price\", val)}\n disabled={props.disabled}\n tooltip={error}\n tooltipProps={{\n content: {\n className: \"oui-bg-base-5 oui-max-w-[360px]\",\n },\n arrow: {\n className: \"oui-fill-base-5\",\n },\n }}\n classNames={{\n input: \"oui-text-base-contrast\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n});\n\nActivitedPriceInput.displayName = \"ActivitedPriceInput\";\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { Badge, Checkbox, Divider, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { parseBadgesFor } from \"../../../../../utils/util\";\nimport { EditSheetState } from \"../editSheet.script\";\n\nexport const ConfirmDialogContent: FC<EditSheetState> = (props) => {\n const { item } = props;\n const {\n formattedOrder,\n symbolInfo,\n isStopMarket,\n showTriggerPrice,\n isTrailingStop,\n } = props;\n const { t } = useTranslation();\n\n const showPrice = !isTrailingStop;\n const showActivatedPrice = isTrailingStop && formattedOrder.activated_price;\n const showTrailingCallback = isTrailingStop;\n\n const header = (\n <>\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 {item.symbol}\n </Text.formatted>\n <Flex direction={\"row\"} gap={1}>\n {parseBadgesFor(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 {item.side === OrderSide.BUY ? (\n <Badge color=\"success\" size=\"xs\">\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge color=\"danger\" size=\"xs\">\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n </>\n );\n\n const triggerPriceItem = showTriggerPrice && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"common.triggerPrice\")}</Text>\n <Text.numeral\n intensity={80}\n dp={symbolInfo.quote_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n suffix={<Text intensity={54}>{\" USDC\"}</Text>}\n >\n {formattedOrder.trigger_price ?? \"--\"}\n </Text.numeral>\n </Flex>\n );\n\n const priceItem = showPrice && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"common.price\")}</Text>\n <Text.numeral\n intensity={80}\n dp={symbolInfo.quote_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n suffix={<Text intensity={54}>{\" USDC\"}</Text>}\n placeholder={isStopMarket ? t(\"common.marketPrice\") : \"--\"}\n >\n {isStopMarket\n ? t(\"common.marketPrice\")\n : (formattedOrder.order_price ?? \"--\")}\n </Text.numeral>\n </Flex>\n );\n\n const activatedPriceItem = showActivatedPrice && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"common.triggerPrice\")}</Text>\n {formattedOrder.activated_price ? (\n <Text.numeral\n intensity={80}\n dp={symbolInfo.quote_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n suffix={<Text intensity={54}>{\" USDC\"}</Text>}\n >\n {formattedOrder.activated_price}\n </Text.numeral>\n ) : (\n t(\"common.marketPrice\")\n )}\n </Flex>\n );\n\n const trailingCallbackItem = showTrailingCallback && (\n <>\n {formattedOrder.callback_value && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"orderEntry.trailingValue\")}</Text>\n <Text.numeral\n dp={symbolInfo.quote_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n >\n {formattedOrder.callback_value}\n </Text.numeral>\n </Flex>\n )}\n {formattedOrder.callback_rate && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"orderEntry.trailingRate\")}</Text>\n <Text className=\"oui-text-base-contrast\">\n {formattedOrder.callback_rate}%\n </Text>\n </Flex>\n )}\n </>\n );\n\n const quantityItem = (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"common.qty\")}</Text>\n <Text.numeral\n color={item.side === OrderSide.BUY ? \"buy\" : \"sell\"}\n dp={symbolInfo.base_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n >\n {formattedOrder.order_quantity}\n </Text.numeral>\n </Flex>\n );\n\n const orderConfirmCheckbox = (\n <Flex className=\"oui-gap-[2px]\">\n <Checkbox\n color=\"white\"\n id=\"oui-checkbox-disableOrderConfirmation\"\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 );\n\n return (\n <div className=\"oui-pt-2\">\n {header}\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 {triggerPriceItem}\n {priceItem}\n {quantityItem}\n {activatedPriceItem}\n {trailingCallbackItem}\n </Flex>\n\n {orderConfirmCheckbox}\n </div>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { Badge, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { parseBadgesFor } from \"../../../../../utils/util\";\n\ntype EditSheetHeaderProps = {\n item: API.AlgoOrderExt;\n};\n\nexport const EditSheetHeader = (props: EditSheetHeaderProps) => {\n const { item } = props;\n const { t } = useTranslation();\n\n return (\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={e.toLocaleLowerCase() === \"position\" ? \"primary\" : \"neutral\"}\n size=\"xs\"\n >\n {e}\n </Badge>\n ))}\n {item.side === OrderSide.BUY ? (\n <Badge color=\"success\" size=\"xs\">\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge color=\"danger\" size=\"xs\">\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n );\n};\n","import { memo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype PriceInputProps = {\n order_price?: string | number;\n disabled?: boolean;\n};\n\nexport const PriceInput = memo((props: PriceInputProps) => {\n const [focus, setFocus] = useState(false);\n const { t } = useTranslation();\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n const { quote, quote_dp } = symbolInfo;\n\n const error =\n getErrorMsg(\"order_price\") || (focus ? getErrorMsg(\"total\") : \"\");\n\n return (\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 {quote}\n </Text>\n }\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ]}\n disabled={props.disabled}\n value={props.order_price}\n onValueChange={(val) => setOrderValue(\"order_price\", val)}\n onBlur={() => {\n setFocus(false);\n }}\n onFocus={() => {\n setFocus(true);\n }}\n tooltip={error}\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\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n});\n\nPriceInput.displayName = \"PriceInput\";\n","import { memo, useState } from \"react\";\nimport { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype QuantityInputProps = {\n value: string | number;\n};\n\nexport const QuantityInput = memo((props: QuantityInputProps) => {\n const [focus, setFocus] = useState(false);\n const { t } = useTranslation();\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n\n const { base_dp, base_tick, base } = symbolInfo;\n\n const error =\n getErrorMsg(\"order_quantity\") || (focus ? getErrorMsg(\"total\") : \"\");\n\n const setQuantity = (val: string) => {\n setOrderValue(\"order_quantity\", val);\n };\n\n const onBlur = (value: string) => {\n if (base_tick && base_tick > 0) {\n const formatQty = utils.formatNumber(value, base_tick) ?? value;\n setQuantity(formatQty);\n }\n };\n\n return (\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 {base}\n </Text>\n }\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(base_dp),\n // inputFormatter.rangeFormatter({ max: props.maxQty }),\n ]}\n value={props.value}\n onValueChange={setQuantity}\n onBlur={(event) => {\n onBlur(event.target.value);\n setFocus(false);\n }}\n onFocus={() => {\n setFocus(true);\n }}\n tooltip={error}\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\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n});\n\nQuantityInput.displayName = \"QuantityInput\";\n","import { memo, useMemo } from \"react\";\nimport { useThrottledCallback, utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, Slider, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype QuantitySliderProps = {\n maxQty: number;\n quantity: string | number;\n};\n\nexport const QuantitySlider = memo((props: QuantitySliderProps) => {\n const { quantity, maxQty } = props;\n const { t } = useTranslation();\n\n const { symbolInfo, setOrderValue } = useEditSheetContext();\n const { base_dp, base_tick } = symbolInfo;\n\n const sliderValue = useMemo(() => {\n if (quantity && Number(quantity) !== 0 && maxQty !== 0) {\n const value = new Decimal(quantity)\n .div(maxQty)\n .mul(100)\n .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n .toNumber();\n return value;\n }\n return 0;\n }, [quantity, maxQty]);\n\n const sliderToQuantity = useThrottledCallback(\n (value: number) => {\n const newQty = new Decimal(value)\n .div(100)\n .mul(maxQty)\n .toDecimalPlaces(base_dp, Decimal.ROUND_DOWN)\n .toNumber();\n\n setOrderValue(\"order_quantity\", utils.formatNumber(newQty, base_tick));\n },\n 50,\n {},\n );\n\n const percentages =\n props.quantity && props.maxQty\n ? Math.min(Number(props.quantity) / props.maxQty, 1)\n : undefined;\n\n return (\n <>\n <Slider\n markCount={4}\n value={[sliderValue]}\n onValueChange={(e) => {\n sliderToQuantity(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\n gap={1}\n onClick={() => {\n setOrderValue(\"order_quantity\", maxQty.toString());\n }}\n >\n <Text size=\"2xs\" color=\"primary\">\n {t(\"common.max\")}\n </Text>\n <Text.numeral intensity={54} size=\"2xs\" dp={base_dp}>\n {props.maxQty}\n </Text.numeral>\n </Flex>\n </Flex>\n </>\n );\n});\n\nQuantitySlider.displayName = \"QuantitySlider\";\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype TrailingCallbackInputProps = {\n isCallbackValue?: boolean;\n callback_value?: number;\n callback_rate?: number;\n};\n\nexport const TrailingCallbackInput = memo(\n (props: TrailingCallbackInputProps) => {\n const { isCallbackValue, callback_value, callback_rate } = props;\n const { t } = useTranslation();\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n const { quote, quote_dp } = symbolInfo;\n\n const label = isCallbackValue\n ? t(\"orderEntry.trailingValue\")\n : t(\"orderEntry.trailingRate\");\n\n const field = isCallbackValue ? \"callback_value\" : \"callback_rate\";\n\n const suffix = isCallbackValue ? (\n <Text intensity={54} className=\"oui-px-3\">\n {quote}\n </Text>\n ) : (\n \"%\"\n );\n\n const error = getErrorMsg(field);\n\n const formatters = [\n inputFormatter.numberFormatter,\n inputFormatter.decimalPointFormatter,\n ];\n\n return (\n <Input.tooltip\n prefix={\n <Text intensity={54} className=\"oui-px-3\">\n {label}\n </Text>\n }\n suffix={suffix}\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={\n isCallbackValue\n ? [\n ...formatters,\n inputFormatter.currencyFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ]\n : [...formatters, inputFormatter.dpFormatter(1)]\n }\n value={isCallbackValue ? callback_value : callback_rate}\n onValueChange={(val) => setOrderValue(field, val)}\n tooltip={error}\n tooltipProps={{\n content: {\n // mobile max width\n className: \"oui-bg-base-5 oui-max-w-[360px]\",\n },\n arrow: {\n className: \"oui-fill-base-5\",\n },\n }}\n classNames={{\n input: \"oui-text-base-contrast\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n },\n);\n\nTrailingCallbackInput.displayName = \"TrailingCallbackInput\";\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype TriggerPriceInputProps = {\n trigger_price?: string | number;\n disabled?: boolean;\n};\n\nexport const TriggerPriceInput = memo((props: TriggerPriceInputProps) => {\n const { t } = useTranslation();\n\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n const { quote, quote_dp } = symbolInfo;\n\n const error = getErrorMsg(\"trigger_price\");\n\n return (\n <Input.tooltip\n prefix={\n <Text intensity={54} className=\"oui-px-3\">\n {t(\"common.triggerPrice\")}\n </Text>\n }\n suffix={\n <Text intensity={54} className=\"oui-px-3\">\n {quote}\n </Text>\n }\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ]}\n value={props.trigger_price}\n onValueChange={(val) => setOrderValue(\"trigger_price\", val)}\n disabled={props.disabled}\n tooltip={error}\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 oui-w-full\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n});\n\nTriggerPriceInput.displayName = \"TriggerPriceInput\";\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport {\n Button,\n Divider,\n Flex,\n SimpleDialog,\n Text,\n ThrottledButton,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ActivitedPriceInput } from \"./components/activitedPriceInput\";\nimport { ConfirmDialogContent } from \"./components/editDialogContent\";\nimport { EditSheetContext } from \"./components/editSheetContext\";\nimport { EditSheetHeader } from \"./components/editSheetHeader\";\nimport { PriceInput } from \"./components/priceInput\";\nimport { QuantityInput } from \"./components/quantityInput\";\nimport { QuantitySlider } from \"./components/quantitySlider\";\nimport { TrailingCallbackInput } from \"./components/trailingCallbackInput\";\nimport { TriggerPriceInput } from \"./components/triggerPriceInput\";\nimport { EditSheetState } from \"./editSheet.script\";\n\nexport const EditSheet: FC<EditSheetState> = (props) => {\n const {\n item,\n symbolInfo,\n formattedOrder,\n isStopMarket,\n isTrailingStop,\n setOrderValue,\n errors,\n } = props;\n const { t } = useTranslation();\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors!);\n\n const disabled =\n !props.isChanged ||\n Object.keys(errors!).length > 0 ||\n // when activated price is not empty, the activated price input should not be empty\n (!!item.activated_price && !formattedOrder.activated_price);\n\n const header = <EditSheetHeader item={item} />;\n\n const lastPrice = (\n <Flex width={\"100%\"} justify={\"between\"}>\n <Text>{t(\"common.lastPrice\")}</Text>\n <Text.numeral dp={symbolInfo.quote_dp}>\n {props.markPrice ?? \"--\"}\n </Text.numeral>\n </Flex>\n );\n\n const triggerPriceInput = props.showTriggerPrice && (\n <TriggerPriceInput\n trigger_price={formattedOrder.trigger_price}\n disabled={!!item.is_triggered}\n />\n );\n\n const renderPriceInput = () => {\n if (isTrailingStop) {\n return (\n item.activated_price && (\n <ActivitedPriceInput\n activated_price={formattedOrder.activated_price}\n disabled={item.is_activated}\n />\n )\n );\n }\n\n return (\n <PriceInput\n order_price={\n isStopMarket\n ? t(\"orderEntry.orderType.market\")\n : formattedOrder.order_price\n }\n disabled={isStopMarket}\n />\n );\n };\n\n const trailingCallbackInput = isTrailingStop && (\n <TrailingCallbackInput\n isCallbackValue={!!item.callback_value}\n callback_value={formattedOrder.callback_value}\n callback_rate={formattedOrder.callback_rate}\n />\n );\n\n const quantityInput = <QuantityInput value={formattedOrder.order_quantity} />;\n\n const quantitySlider = (\n <QuantitySlider\n maxQty={props.maxQty}\n quantity={formattedOrder.order_quantity}\n />\n );\n\n const buttons = (\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={disabled}\n >\n {t(\"common.confirm\")}\n </ThrottledButton>\n </Flex>\n );\n\n const ctxValue = useMemo(() => {\n return {\n symbolInfo,\n getErrorMsg,\n setOrderValue,\n };\n }, [symbolInfo, getErrorMsg, setOrderValue]);\n\n return (\n <EditSheetContext.Provider value={ctxValue}>\n <Flex\n direction={\"column\"}\n gap={3}\n width={\"100%\"}\n itemAlign={\"start\"}\n className=\"oui-text-sm\"\n >\n {header}\n <Divider intensity={8} className=\"oui-w-full\" />\n {lastPrice}\n <Flex width={\"100%\"} direction={\"column\"} itemAlign={\"stretch\"} gap={2}>\n {triggerPriceInput}\n {renderPriceInput()}\n {trailingCallbackInput}\n {quantityInput}\n {quantitySlider}\n </Flex>\n {buttons}\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 </EditSheetContext.Provider>\n );\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useOrderEntity } from \"@kodiak-finance/orderly-hooks\";\nimport {\n API,\n OrderlyOrder,\n OrderSide,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\n\nexport const useEditOrderEntry = (props: {\n order: API.AlgoOrderExt;\n orderType: OrderType;\n maxQty: number;\n}) => {\n const { order, orderType, maxQty } = props;\n\n const [formattedOrder, setFormattedOrder] = useState({\n symbol: order.symbol,\n side: order.side as OrderSide,\n reduce_only: order.reduce_only,\n order_type: orderType,\n // TODO: trailing stop order edit price twice, order.price will be 0\n order_price: order.price || undefined,\n order_quantity: order.quantity,\n trigger_price: order.trigger_price,\n activated_price: order.activated_price,\n callback_value: order.callback_value,\n callback_rate: order.callback_rate ? order.callback_rate * 100 : undefined,\n });\n\n const { markPrice, errors, validate, clearErrors } = useOrderEntity(\n formattedOrder,\n {\n maxQty,\n },\n );\n\n const setOrderValue = useCallback((key: keyof OrderlyOrder, value: any) => {\n setFormattedOrder((oldValue) => ({\n ...oldValue,\n [key]: value,\n }));\n }, []);\n\n const {\n order_price,\n order_quantity,\n trigger_price,\n activated_price,\n callback_value,\n callback_rate,\n } = formattedOrder;\n\n const isChanged =\n (order.price && order.price != order_price) ||\n (order.quantity && order.quantity != order_quantity) ||\n (order.trigger_price && order.trigger_price != trigger_price) ||\n // trailing stop fields\n (order.activated_price && order.activated_price != activated_price) ||\n (order.callback_value && order.callback_value != callback_value) ||\n (order.callback_rate && order.callback_rate * 100 != callback_rate);\n\n useEffect(() => {\n if (isChanged) {\n validate()\n .then((order) => {\n console.log(\"validate success\", order);\n })\n .catch((err) => {\n console.log(\"validate error\", err);\n });\n } else {\n clearErrors();\n }\n }, [\n isChanged,\n order_price,\n order_quantity,\n trigger_price,\n activated_price,\n callback_value,\n callback_rate,\n ]);\n\n return {\n markPrice,\n errors,\n validate,\n setOrderValue,\n formattedOrder,\n isChanged,\n };\n};\n","import { useMemo } from \"react\";\nimport { useMaxQty } from \"@kodiak-finance/orderly-hooks\";\nimport { API, OrderSide } from \"@kodiak-finance/orderly-types\";\n\nexport function useEditOrderMaxQty(\n order: API.AlgoOrderExt,\n positionQty?: number,\n) {\n const { reduce_only } = order;\n\n const maxQty = useMaxQty(order.symbol, order.side as OrderSide, reduce_only);\n\n return useMemo(() => {\n if (reduce_only) {\n return Math.abs(positionQty ?? 0);\n }\n return order.quantity + Math.abs(maxQty);\n }, [order.quantity, maxQty, reduce_only, positionQty]);\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { API, OrderEntity, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { AlgoOrderRootType } from \"@kodiak-finance/orderly-types\";\nimport { toast, useModal } from \"@kodiak-finance/orderly-ui\";\nimport { convertApiOrderTypeToOrderEntryType } from \"../../../../utils/util\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useEditOrderEntry } from \"./hooks/useEditOrderEntry\";\nimport { useEditOrderMaxQty } from \"./hooks/useEditOrderMaxQty\";\n\nexport const useEditSheetScript = (props: {\n state: OrderCellState;\n position?: API.PositionTPSLExt;\n editAlgoOrder: (id: string, order: OrderEntity) => Promise<any>;\n editOrder: (id: string, order: OrderEntity) => Promise<any>;\n}) => {\n const { state, editAlgoOrder, editOrder, position } = props;\n const { item: order } = state;\n const { hide: onClose } = 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\n const isStopMarket = order?.type === \"MARKET\" && isAlgoOrder;\n const isTrailingStop = order.algo_type === OrderType.TRAILING_STOP;\n\n const showTriggerPrice = isAlgoOrder && !isTrailingStop;\n\n const orderType = useMemo(\n () => convertApiOrderTypeToOrderEntryType(order),\n [order],\n );\n\n const [orderConfirm, setOrderConfirm] = useLocalStorage(\n \"orderly_order_confirm\",\n true,\n );\n\n const maxQty = useEditOrderMaxQty(order, position?.position_qty);\n\n const {\n formattedOrder,\n setOrderValue,\n markPrice,\n errors,\n validate,\n isChanged,\n } = useEditOrderEntry({\n order,\n orderType,\n maxQty,\n });\n\n useEffect(() => {}, [order.price, formattedOrder.order_price]);\n\n const onCloseDialog = useCallback(() => {\n setDialogOpen(false);\n }, []);\n\n const onSubmit = useCallback(\n async (values: OrderEntity) => {\n let future;\n const 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 if (order.order_tag) {\n values.order_tag = order.order_tag;\n }\n\n if (order.client_order_id) {\n values.client_order_id = order.client_order_id;\n }\n\n if (order.algo_order_id !== undefined) {\n if (isTrailingStop) {\n if (values.callback_rate) {\n values = {\n ...values,\n callback_rate: (Number(values.callback_rate) / 100).toString(),\n };\n } else if (isStopMarket && \"order_price\" in values) {\n const { order_price, ...rest } = values;\n values = rest;\n }\n }\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, isTrailingStop],\n );\n\n const onDialogConfirm = () => {\n if (formattedOrder) {\n return onSubmit(formattedOrder as any);\n }\n return Promise.reject();\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 return {\n ...state,\n markPrice,\n isStopMarket,\n isTrailingStop,\n showTriggerPrice,\n formattedOrder,\n setOrderValue,\n maxQty,\n onClose,\n onSheetConfirm,\n errors,\n isChanged,\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","import { API, OrderEntity } from \"@kodiak-finance/orderly-types\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useEditSheetScript } from \"./editSheet.script\";\nimport { EditSheet } from \"./editSheet.ui\";\n\ntype EditSheetWidgetProps = {\n state: OrderCellState;\n editAlgoOrder: (id: string, order: OrderEntity) => Promise<any>;\n editOrder: (id: string, order: OrderEntity) => Promise<any>;\n position?: API.PositionTPSLExt;\n};\n\nexport const EditSheetWidget = (props: EditSheetWidgetProps) => {\n const state = useEditSheetScript(props);\n return <EditSheet {...state} />;\n};\n","export { EditSheet } from \"./editSheet.ui\";\nexport { EditSheetWidget } from \"./editSheet.widget\";\nexport { useEditSheetScript } from \"./editSheet.script\";\n","import { useCallback } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport { PositionTPSLSheet } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { TabType } from \"../../../orders.widget\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { useTPSLOrderRowContext } from \"../../tpslOrderRowContext\";\nimport { EditSheetWidget } from \"../editSheet\";\nimport { OrderCellState } from \"../orderCell.script\";\n\nexport const useEditBtnScript = (props: { state: OrderCellState }) => {\n const { state } = props;\n const { t } = useTranslation();\n const symbolInfo = useSymbolsInfo()[props.state.item.symbol]();\n\n const { editAlgoOrder, editOrder } = useOrderListContext();\n const { position } = useTPSLOrderRowContext();\n\n const onShowEditSheet = useCallback(() => {\n if (props.state.type === TabType.tp_sl) {\n modal\n .sheet({\n content: (\n <PositionTPSLSheet\n symbol={props.state.item.symbol}\n symbolInfo={symbolInfo}\n isEditing\n order={props.state.item}\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 state={state}\n position={position}\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 { OrderCellState } from \"../orderCell.script\";\nimport { useEditBtnScript } from \"./editBtn.script\";\nimport { EditBtn } from \"./editBtn.ui\";\n\nexport const EditBtnWidget = (props: { state: OrderCellState }) => {\n const state = useEditBtnScript(props);\n return <EditBtn {...state} />;\n};\n","export { EditBtn } from \"./editBtn.ui\";\nexport { EditBtnWidget } from \"./editBtn.widget\";\nexport { useEditBtnScript } from \"./editBtn.script\";\n","import React, { FC } from \"react\";\nimport { AlgoOrderRootType } from \"@kodiak-finance/orderly-types\";\nimport { Divider, Flex, Grid, Text } from \"@kodiak-finance/orderly-ui\";\nimport { TabType } from \"../../orders.widget\";\nimport { BracketOrderPriceWidget } from \"./bracketOrderPrice\";\nimport { CancelBtnWidget } from \"./cancelBtn\";\nimport { EditBtnWidget } from \"./editBtn\";\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 Fee,\n TrailingCallback,\n TrailingPrice,\n} from \"./items\";\nimport { OrderCellState } from \"./orderCell.script\";\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 const isTrailingStop =\n props.item?.algo_type === AlgoOrderRootType.TRAILING_STOP;\n\n if (isTrailingStop) {\n return (\n <>\n <Qty {...props} />\n <Filled {...props} />\n <EstTotal {...props} />\n <TriggerPrice {...props} isPending={true} />\n <TrailingPrice {...props} />\n <TrailingCallback {...props} />\n </>\n );\n }\n\n return (\n <>\n <Qty {...props} />\n <Filled {...props} />\n <EstTotal {...props} />\n <TriggerPrice {...props} isPending={true} />\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 {/* placeholder */}\n <div></div>\n {/* placeholder */}\n <div></div>\n <Fee {...props} />\n </>\n );\n }\n}\n","import { API } from \"@kodiak-finance/orderly-types\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { TabType } from \"../../orders.widget\";\nimport { useSymbolContext } from \"../../provider/symbolContext\";\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 // use symbolInfo replace ...symbolInfo\n symbolInfo,\n };\n};\n\nexport type OrderCellState = ReturnType<typeof useOrderCellScript>;\n","import { API } from \"@kodiak-finance/orderly-types\";\nimport { useOrderCellScript } from \"./orderCell.script\";\nimport { OrderCell } from \"./orderCell.ui\";\nimport { TabType } from \"../../orders.widget\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-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","export { OrderCell } from \"./orderCell.ui\";\nexport { OrderCellWidget } from \"./orderCell.widget\";\nexport { useOrderCellScript } from \"./orderCell.script\";\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { getMinNotional, useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useMemoizedFn } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, OrderEntity } from \"@kodiak-finance/orderly-types\";\nimport { OrderListContext, OrderListContextState } from \"./orderListContext\";\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 { cancelOrder, editOrder, cancelAlgoOrder, editAlgoOrder } = props;\n const { t } = useTranslation();\n const symbolsInfo = useSymbolsInfo();\n\n const onCancelOrder = useMemoizedFn(\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 const checkMinNotional = useMemoizedFn(\n (symbol: string, price?: string | number, qty?: string | number) => {\n const { min_notional } = symbolsInfo[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 );\n\n const memoizedValue = useMemo<OrderListContextState>(() => {\n return {\n onCancelOrder,\n editOrder,\n editAlgoOrder,\n checkMinNotional,\n };\n }, [onCancelOrder, editOrder, editAlgoOrder, checkMinNotional]);\n\n return (\n <OrderListContext.Provider value={memoizedValue}>\n {props.children}\n </OrderListContext.Provider>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Flex,\n ListView,\n Button,\n Grid,\n Picker,\n DataFilter,\n cn,\n TableFeatures,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { formatSymbol } from \"@kodiak-finance/orderly-utils\";\nimport { grayCell } from \"../../utils/util\";\nimport { TabType } from \"../orders.widget\";\nimport { SymbolProvider } from \"../provider/symbolProvider\";\nimport { useOrderColumn } from \"./desktop/useColumn\";\nimport { OrderCellWidget } from \"./mobile\";\nimport { OrdersBuilderState } from \"./orderList.script\";\nimport { OrderListProvider } from \"./orderListProvider\";\nimport { TPSLOrderRowProvider } from \"./tpslOrderRowContext\";\n\nexport const DesktopOrderList: FC<\n OrdersBuilderState & { testIds?: { tableBody?: string } }\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\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 {props.filterItems.length > 0 && (\n <DataFilter\n items={props.filterItems}\n onFilter={(value: any) => {\n props.onFilter(value);\n }}\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?: { root?: string; cell?: string; content?: string };\n showFilter?: boolean;\n onExport?: () => void;\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-w-full oui-grid-rows-[auto,1fr]\"\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\n gap={2}\n p={2}\n justify={\"between\"}\n itemAlign={\"center\"}\n className=\"oui-rounded-b-xl oui-bg-base-9\"\n >\n <Flex gap={2}>\n {props.filterItems.map((item) => {\n // not support range type\n if (item.type !== \"select\") {\n return null;\n }\n return (\n <Picker\n key={`item-${item.name}`}\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 {props.onExport && (\n <Button\n variant=\"outlined\"\n size=\"xs\"\n color=\"secondary\"\n onClick={props.onExport}\n >\n {t(\"common.export\") || \"Export CSV\"}\n </Button>\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 const { symbol } = props;\n\n const formattedSymbol = symbol ? formatSymbol(symbol, \"base\") : symbol;\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 {symbol\n ? t(\"orders.cancelAll.ofSymbol\", { symbol: formattedSymbol })\n : t(\"orders.cancelAll\")}\n </Button>\n );\n};\n","import { useMemo } from \"react\";\nimport { API, AlgoOrderRootType, OrderStatus } from \"@kodiak-finance/orderly-types\";\n\nexport const useFormatOrderHistory = (data: API.AlgoOrderExt[]) => {\n const formattedData = useMemo(() => {\n const _data: API.AlgoOrder[] = [];\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","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n ForwardedRef,\n useImperativeHandle,\n} from \"react\";\nimport { differenceInDays, setHours, subDays } from \"date-fns\";\nimport {\n useLocalStorage,\n useOrderStream,\n useSymbolsInfo,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport {\n AlgoOrderRootType,\n OrderStatus,\n OrderSide,\n API,\n} from \"@kodiak-finance/orderly-types\";\nimport { modal, usePagination, Text, Table } from \"@kodiak-finance/orderly-ui\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { areDatesEqual } from \"../../utils/util\";\nimport { TabType } from \"../orders.widget\";\nimport { useFormatOrderHistory } from \"./useFormatOrderHistory\";\n\nexport type OrderListInstance = {\n getRowCount?: () => number;\n getDataSource?: () => any[] | null;\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 {\n orderStatus,\n ordersSide,\n dateRange,\n filterItems,\n onFilter,\n filterDays,\n updateFilterDays,\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 const [\n data,\n {\n isLoading,\n loadMore,\n cancelOrder,\n updateOrder,\n cancelAlgoOrder,\n updateAlgoOrder,\n cancelAllPendingOrders,\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 sourceTypeAll: type === TabType.orderHistory,\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 isPending = props.type === TabType.pending;\n const isTPSL = props.type === TabType.tp_sl;\n\n const title = isPending\n ? t(\"orders.pending.cancelAll\")\n : isTPSL\n ? t(\"orders.tpsl.cancelAll\")\n : \"\";\n\n const getContent = (): React.ReactNode => {\n const baseMessage = isPending\n ? t(\"orders.pending.cancelAll.description\")\n : isTPSL\n ? t(\"orders.tpsl.cancelAll.description\")\n : \"\";\n\n if (!props.symbol) {\n return <Text size=\"sm\">{baseMessage}</Text>;\n }\n\n const messageWithSymbol = baseMessage.replace(\n \"?\",\n ` in ${props.symbol}?`,\n );\n return <Text size=\"sm\">{messageWithSymbol}</Text>;\n };\n\n modal.confirm({\n title: title,\n content: getContent(),\n onCancel: async () => {},\n onOk: async () => {\n try {\n // await cancelAll(null, { source_type: \"ALL\" });r\n if (type === TabType.tp_sl) {\n await cancelAllTPSLOrders(props.symbol);\n } else {\n await cancelAllPendingOrders(props.symbol);\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, props.symbol]);\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 useImperativeHandle(\n props.ref,\n () => ({\n getRowCount: () => {\n return tableInstance.current?.getRowCount?.() ?? 0;\n },\n getDataSource: () => {\n return dataSource ?? null;\n },\n }),\n [dataSource],\n );\n\n return {\n type,\n symbol: props.symbol,\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 filterDays,\n updateFilterDays,\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 /// default is 90d\n const [filterDays, setFilterDays] = useState<1 | 7 | 30 | 90 | null>(90);\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(), 89)),\n })\n : {});\n\n const [dateRange, setDateRange] = useState<{\n from?: Date;\n to?: Date;\n }>(defaultRange);\n\n const updateFilterDays = (days: 1 | 7 | 30 | 90) => {\n setFilterDays(days);\n setDateRange({\n from: offsetStartOfDay(subDays(new Date(), days - 1)),\n to: offsetEndOfDay(new Date()),\n });\n option.setPage(1);\n };\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 const newDateRange = formatDatePickerRange(filter.value);\n if (newDateRange.from && newDateRange.to) {\n const diffDays =\n Math.abs(differenceInDays(newDateRange.from, newDateRange.to)) + 1;\n const dateRangeMap: { [key: number]: { from: Date; to: Date } } = {\n 1: {\n from: offsetStartOfDay(new Date())!,\n to: offsetEndOfDay(new Date())!,\n },\n 7: {\n from: offsetStartOfDay(subDays(new Date(), 6))!,\n to: offsetEndOfDay(new Date())!,\n },\n 30: {\n from: offsetStartOfDay(subDays(new Date(), 29))!,\n to: offsetEndOfDay(new Date())!,\n },\n 90: {\n from: offsetStartOfDay(subDays(new Date(), 89))!,\n to: offsetEndOfDay(new Date())!,\n },\n };\n\n const dateRange = dateRangeMap[diffDays];\n if (\n dateRange &&\n areDatesEqual(dateRange.from, newDateRange.from) &&\n areDatesEqual(dateRange.to, newDateRange.to)\n ) {\n setFilterDays(diffDays as any);\n } else {\n setFilterDays(null);\n }\n }\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 filterDays,\n updateFilterDays,\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 React, { forwardRef } from \"react\";\nimport { OrderSide, OrderStatus, API } from \"@kodiak-finance/orderly-types\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { TabType } from \"../orders.widget\";\nimport { OrderListInstance, useOrderListScript } from \"./orderList.script\";\nimport { DesktopOrderList, MobileOrderList } from \"./orderList.ui\";\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 = React.forwardRef<\n OrderListInstance,\n {\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?: { root?: string; cell?: string; content?: string };\n showFilter?: boolean;\n filterConfig?: {\n side?: OrderSide | \"all\";\n range?: { from?: Date; to?: Date };\n };\n onExport?: () => void;\n }\n>((props, ref) => {\n const state = useOrderListScript({ ...props, enableLoadMore: true, ref });\n return (\n <MobileOrderList\n {...state}\n classNames={props.classNames}\n showFilter={props.showFilter}\n onExport={props.onExport}\n />\n );\n});\n","export { DesktopOrderList, MobileOrderList } from \"./orderList.ui\";\nexport {\n DesktopOrderListWidget,\n MobileOrderListWidget,\n} from \"./orderList.widget\";\nexport { useOrderListScript, type OrderListInstance } from \"./orderList.script\";\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderStatus } from \"@kodiak-finance/orderly-types\";\nimport { TabPanel, Tabs } from \"@kodiak-finance/orderly-ui\";\nimport type { DesktopOrderListWidgetProps } from \"./orderList/orderList.widget\";\nimport { OrdersBuilderState } from \"./orders.script\";\nimport { TabType } from \"./orders.widget\";\n\nconst LazyDesktopOrderListWidget = React.lazy(() =>\n import(\"./orderList\").then((mod) => {\n return { default: mod.DesktopOrderListWidget };\n }),\n);\n\nexport const Orders: React.FC<OrdersBuilderState> = (props) => {\n const { t } = useTranslation();\n const { pnlNotionalDecimalPrecision, orderListRef } = props;\n const commonProps: Partial<DesktopOrderListWidgetProps> = {\n pnlNotionalDecimalPrecision: pnlNotionalDecimalPrecision,\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 <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.all}\n pnlNotionalDecimalPrecision={pnlNotionalDecimalPrecision}\n sharePnLConfig={props.sharePnLConfig}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.pending} title={t(\"orders.status.pending\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.pending}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.tp_sl} title={t(\"common.tpsl\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.tp_sl}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.filled} title={t(\"orders.status.filled\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.filled}\n ordersStatus={OrderStatus.FILLED}\n pnlNotionalDecimalPrecision={pnlNotionalDecimalPrecision}\n sharePnLConfig={props.sharePnLConfig}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.cancelled} title={t(\"orders.status.canceled\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.cancelled}\n ordersStatus={OrderStatus.CANCELLED}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.rejected} title={t(\"orders.status.rejected\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.rejected}\n ordersStatus={OrderStatus.REJECTED}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n {/* <TabPanel value={TabType.orderHistory} title={t(\"orders.orderHistory\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n type={TabType.orderHistory}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel> */}\n </Tabs>\n );\n};\n// ----------------- Orders ui component end -----------------\n","import { forwardRef } from \"react\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { OrderListInstance } from \"./orderList/orderList.script\";\nimport { useOrdersScript } from \"./orders.script\";\nimport { Orders } from \"./orders.ui\";\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 return <Orders {...state} />;\n },\n);\n","export {\n OrdersWidget,\n TabType,\n} from \"./components/orders.widget\";\nexport { useOrdersScript } from \"./components/orders.script\";\nexport type { OrdersBuilderState } from \"./components/orders.script\";\n\nexport * from \"./components/orderList\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/orders.script.ts","../src/utils/util.ts","../src/components/provider/symbolContext.tsx","../src/components/provider/symbolProvider.tsx","../src/components/shareButton/shareButton.ui.tsx","../src/components/shareButton/shareButton.script.tsx","../src/components/shareButton/shareButton.widget.tsx","../src/components/shareButton/index.ts","../src/components/orderList/desktop/avgPrice.tsx","../src/components/orderList/desktop/bracketOrderPrice.tsx","../src/components/orderList/orderListContext.tsx","../src/components/orderList/desktop/cancelBtn.tsx","../src/type.ts","../src/components/orderList/desktop/editOrder/confirmContent.tsx","../src/components/orderList/desktop/hooks/usePopoverState.ts","../src/components/orderList/desktop/hooks/useValidateField.ts","../src/components/orderList/desktop/components/editableCellInput.tsx","../src/components/orderList/desktop/components/previewCell.tsx","../src/components/orderList/desktop/components/activedPriceCell.tsx","../src/components/orderList/desktop/components/priceCell.tsx","../src/components/orderList/tpslOrderRowContext.tsx","../src/components/orderList/desktop/editOrder/innerInput.tsx","../src/components/orderList/desktop/components/quantityCell.tsx","../src/components/orderList/desktop/components/trailingCallbackCell.tsx","../src/components/orderList/desktop/components/triggerPriceCell.tsx","../src/components/orderList/desktop/renew.tsx","../src/components/orderList/desktop/tpslEdit.tsx","../src/components/orderList/desktop/tpslPrice.tsx","../src/components/orderList/desktop/tpslTriggerPrice.tsx","../src/components/orderList/desktop/useColumn.tsx","../src/components/orderList/mobile/items.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/bracketOrderPrice/index.ts","../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/cancelBtn/index.ts","../src/components/orderList/mobile/editBtn/editBtn.ui.tsx","../src/components/orderList/mobile/editSheet/components/editSheetContext.ts","../src/components/orderList/mobile/editSheet/components/activitedPriceInput.tsx","../src/components/orderList/mobile/editSheet/components/editDialogContent.tsx","../src/components/orderList/mobile/editSheet/components/editSheetHeader.tsx","../src/components/orderList/mobile/editSheet/components/priceInput.tsx","../src/components/orderList/mobile/editSheet/components/quantityInput.tsx","../src/components/orderList/mobile/editSheet/components/quantitySlider.tsx","../src/components/orderList/mobile/editSheet/components/trailingCallbackInput.tsx","../src/components/orderList/mobile/editSheet/components/triggerPriceInput.tsx","../src/components/orderList/mobile/editSheet/editSheet.ui.tsx","../src/components/orderList/mobile/editSheet/hooks/useEditOrderEntry.ts","../src/components/orderList/mobile/editSheet/hooks/useEditOrderMaxQty.ts","../src/components/orderList/mobile/editSheet/editSheet.script.tsx","../src/components/orderList/mobile/editSheet/editSheet.widget.tsx","../src/components/orderList/mobile/editSheet/index.ts","../src/components/orderList/mobile/editBtn/editBtn.script.tsx","../src/components/orderList/mobile/editBtn/editBtn.widget.tsx","../src/components/orderList/mobile/editBtn/index.ts","../src/components/orderList/mobile/orderCell.ui.tsx","../src/components/orderList/mobile/orderCell.script.tsx","../src/components/orderList/mobile/orderCell.widget.tsx","../src/components/orderList/mobile/index.ts","../src/components/orderList/orderListProvider.tsx","../src/components/orderList/orderList.ui.tsx","../src/components/orderList/useFormatOrderHistory.ts","../src/components/orderList/orderList.script.tsx","../src/components/orderList/orderList.widget.tsx","../src/components/orderList/index.ts","../src/components/orders.ui.tsx","../src/components/orders.widget.tsx","../src/index.ts"],"names":["status","quantity","jsx","useMemo","useSymbolsInfo","Decimal","utils","useTranslation","Text","modal","createContext","useContext","toast","memo","ThrottledButton","jsxs","useRef","useState","useEffect","order","errors","useCallback","cn","Flex","OrderType","inputFormatter","Popover","AlgoOrderType","position","CheckIcon","Input","Tooltip","OrderSide","AlgoOrderRootType","Button","commifyOptional","Fragment","PreviewCell","price","sliderValue","useMutation","data","findTPSLFromOrder","i18n","OrderStatus","estTotal","useTpslPriceChecker","Badge","CloseToLiqPriceIcon","getTrailingStopPrice","AvgPrice","side","EditIcon","BracketOrderPrice","Price","init_bracketOrderPrice","init_cancelBtn","Slider","useOrderEntryFormErrorMsg","Divider","SimpleDialog","useOrderEntity","useMaxQty","useModal","useMemoizedFn","Grid","useImperativeHandle","useLocalStorage","dateRange","React","forwardRef","TabType"],"mappings":";;;;;;;;;;;AAAA,SAAuB,qBAAqB,cAAc;AAA1D,IAYa;AAZb;AAAA;AAAA;AAYO,IAAM,kBAAkB,CAAC,UAAkC;AAChE,YAAM,EAAE,SAAS,6BAA6B,eAAe,IAAI;AAEjE,YAAM,eAAe,OAA0B,IAAI;AAEnD,0BAAoB,MAAM,KAAK,OAAO,CAAC,EAAE;AAEzC,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACzBA,SAAS,aAAa;AACtB,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAe;AAajB,SAAS,eAAe,QAAmC;AAChE,QAAM,YAAY,OAAO;AACzB,QAAM,WAAW,OAAO;AACxB,MAAI,OAAO,cAAc,aAAa;AACpC,UAAM,OAAiB,CAAC;AAExB,QAAI,CAAC,CAAC,OAAO,kBAAkB;AAC7B,UAAI,aAAa,cAAc,WAAW;AACxC,cAAM,QACJ,cAAc,UAAU,iBACpB,CAAC,KAAK,EAAE,iBAAiB,GAAG,KAAK,EAAE,SAAS,CAAC,IAC7C,CAAC,KAAK,EAAE,SAAS,CAAC;AACxB,aAAK,KAAK,GAAG,KAAK;AAAA,MACpB;AAEA,UAAI,aAAa,cAAc,aAAa;AAC1C,cAAM,QACJ,cAAc,UAAU,iBACpB,CAAC,KAAK,EAAE,iBAAiB,GAAG,KAAK,EAAE,SAAS,CAAC,IAC7C,CAAC,KAAK,EAAE,SAAS,CAAC;AACxB,aAAK,KAAK,GAAG,KAAK;AAAA,MACpB;AAEA,aAAO;AAAA,IACT;AAEA,UAAM,OACJ,OAAO,cAAc,WAAW,UAAU,QAAQ,UAAU,EAAE,IAAI;AAGpE,QAAI,CAAC,UAAU,KAAK,UAAU,GAAG,EAAE,SAAS,SAAS,GAAG;AACtD,aAAO,CAAC,KAAK,EAAE,4BAA4B,CAAC;AAAA,IAC9C;AAEA,QACE,OAAO,kBAAkB,UACxB,OAAO,iBAAiB,aAAa,WACtC;AACA,YAAM,UAAU;AAAA,QACd,CAAC,UAAU,KAAK,GAAG,KAAK,EAAE,4BAA4B;AAAA,QACtD,CAAC,UAAU,MAAM,GAAG,KAAK,EAAE,6BAA6B;AAAA,QACxD,CAAC,UAAU,SAAS,GAAG,KAAK,EAAE,+BAA+B;AAAA,QAC7D,CAAC,UAAU,GAAG,GAAG,KAAK,EAAE,0BAA0B;AAAA,QAClD,CAAC,UAAU,GAAG,GAAG,KAAK,EAAE,0BAA0B;AAAA,MACpD;AAEA,aAAO;AAAA,QACL,QAAQ,IAA4B,KAAK,qBAAqB,IAAI;AAAA,MACpE;AAAA,IACF;AAEA,QAAI,aAAa,kBAAkB,eAAe;AAChD,aAAO,CAAC,KAAK,EAAE,mCAAmC,CAAC;AAAA,IACrD;AAGA,QAAI,MAAM;AACR,YAAM,UAAU;AAAA,QACd,CAAC,UAAU,KAAK,GAAG,KAAK,EAAE,gCAAgC;AAAA,QAC1D,CAAC,UAAU,MAAM,GAAG,KAAK,EAAE,iCAAiC;AAAA,MAC9D;AACA,aAAO,CAAC,QAAQ,IAA4B,KAAK,IAAI;AAAA,IACvD;AAAA,EACF;AAEA,MAAI,OAAO,aAAa,aAAa;AACnC,UAAM,OAAiB,CAAC;AAExB,QAAI,aAAa,kBAAkB,kBAAkB;AACnD,WAAK,KAAK,KAAK,EAAE,iBAAiB,CAAC;AAAA,IACrC;AAEA,UAAM,UAAU,QAAQ,cAAc;AAAA,MACpC,CAAC,UACC,MAAM,cAAc,cAAc,eAAe,CAAC,CAAC,MAAM;AAAA,IAC7D;AAEA,UAAM,UAAU,QAAQ,cAAc;AAAA,MACpC,CAAC,UACC,MAAM,cAAc,cAAc,aAAa,CAAC,CAAC,MAAM;AAAA,IAC3D;AAEA,QAAI,WAAW,SAAS;AACtB,WAAK;AAAA,QACH,WAAW,UACP,KAAK,EAAE,aAAa,IACpB,UACE,KAAK,EAAE,SAAS,IAChB,KAAK,EAAE,SAAS;AAAA,MACxB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,SAAS,QAAsB;AAC7C,SACG,OAAqB,WAAW,YAAY,aAC5C,OAAyB,gBAAgB,YAAY;AAE1D;AAEO,SAAS,eAAe,QAAa;AAC1C,SAAQ,OAAqB,UAAW,OAAyB;AACnE;AAEO,SAAS,WAAWA,SAA0B;AACnD,SAAOA,YAAW,YAAY;AAChC;AAEA,SAAS,qBAAqB,OAAyB;AACrD,MAAI,MAAM,cAAc,kBAAkB,SAAS;AACjD,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,aAAa,MAAM,eAAe,CAAC;AACzC,MAAI,CAAC;AACH,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAEF,QAAM,UAAU,YAAY,cAAc;AAAA,IACxC,CAAC,SAAS,KAAK,cAAc,cAAc;AAAA,EAC7C;AAEA,QAAM,UAAU,YAAY,cAAc;AAAA,IACxC,CAAC,SAAS,KAAK,cAAc,cAAc;AAAA,EAC7C;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,qBAAqB,OAAyB;AAC5D,QAAM,kBAAkB;AAAA,IACtB,KAAK;AAAA,MACH,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAKF;AACA,QAAM,EAAE,SAAS,QAAQ,IAAI,qBAAqB,KAAK;AACvD,MAAI,CAAC,WAAW,CAAC;AAAS,WAAO;AAEjC,MAAI,OAAO,MAAM,UAAU,UAAa,CAAC,MAAM;AAAO,WAAO;AAE7D,QAAMC,YACJ,MAAM,SAAS,UAAU,MAAM,MAAM,WAAW,MAAM,WAAW;AAEnE,QAAM,QACJ,SAAS,iBACT,MAAM,WAAW;AAAA,IACf,KAAKA;AAAA,IACL,OAAO,SAAS;AAAA,IAChB,YAAY,MAAM;AAAA;AAAA,IAElB,WAAW,MAAM;AAAA;AAAA,IAEjB,WAAW,QAAQ;AAAA,EACrB,CAAC;AACH,QAAM,QACJ,SAAS,iBACT,MAAM,WAAW;AAAA,IACf,KAAKA;AAAA;AAAA,IAEL,OAAO,SAAS;AAAA;AAAA,IAEhB,YAAY,MAAM;AAAA;AAAA,IAElB,WAAW,MAAM;AAAA;AAAA,IAEjB,WAAW,QAAQ;AAAA,EACrB,CAAC;AAkBH,SAAO;AAAA,IACL,KAAK;AAAA,MACH;AAAA,MACA;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKF;AACF;AAEO,SAAS,cAAc,OAAc,OAAuB;AACjE,MAAI,CAAC,SAAS,CAAC;AAAO,WAAO;AAC7B,SACE,MAAM,YAAY,MAAM,MAAM,YAAY,KAC1C,MAAM,SAAS,MAAM,MAAM,SAAS,KACpC,MAAM,QAAQ,MAAM,MAAM,QAAQ;AAEtC;AAEO,SAAS,oBAAoB,OAAyB;AAC3D,SAAO,MAAM,cAAc,UAAU;AACvC;AAEO,SAAS,YAAY,OAAyB,KAAK,GAAG;AAC3D,MAAI,MAAM,SAAS,MAAM,UAAU;AACjC,WAAO,IAAI,QAAQ,MAAM,KAAK,EAC3B,IAAI,MAAM,QAAQ,EAClB,QAAQ,IAAI,QAAQ,UAAU;AAAA,EACnC;AAEA,SAAO;AACT;AAIO,SAAS,oCAAoC,OAAyB;AAC3E,MAAI,MAAM,cAAc,UAAU,eAAe;AAC/C,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,cAAc,MAAM,kBAAkB;AAE5C,MAAI,eAAe,MAAM,cAAc,kBAAkB,SAAS;AAChE,WAAO,QAAQ,MAAM,IAAI;AAAA,EAC3B;AAEA,SAAO,MAAM;AACf;AAlRA,IAYa;AAZb;AAAA;AAAA;AAYO,IAAM,uBAAuB,CAAC,QAAgB;AACnD,UAAI,QAAQ;AAAW,eAAO;AAC9B,UAAI,IAAI,WAAW;AAAG,eAAO;AAC7B,UAAI,IAAI,WAAW;AAAG,eAAO,IAAI,OAAO,CAAC,EAAE,YAAY;AACvD,aAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,YAAY,EAAE,MAAM,CAAC;AAAA,IAChE;AAAA;AAAA;;;ACjBA,SAAS,eAAe,kBAAkB;AAA1C,IAgBa,eAIA;AApBb;AAAA;AAAA;AAgBO,IAAM,gBAAgB;AAAA,MAC3B,CAAC;AAAA,IACH;AAEO,IAAM,mBAAmB,MAAM;AACpC,aAAO,WAA+B,aAAa;AAAA,IACrD;AAAA;AAAA;;;ACtBA,SAAgC,eAAe;AAC/C,SAAS,sBAAsB;AA2B3B;AA5BJ,IAQa;AARb;AAAA;AAAA;AAEA;AAMO,IAAM,iBAAgE,CAC3E,UACG;AACH,YAAM,EAAE,QAAQ,SAAS,IAAI;AAC7B,YAAM,aAAa,eAAe,EAAE,MAAM;AAC1C,YAAM,gBAAgB,QAA4B,MAAM;AACtD,eAAO;AAAA,UACL;AAAA,UACA,SAAS,WAAW,SAAS;AAAA,UAC7B,UAAU,WAAW,UAAU;AAAA,UAC/B,WAAW,WAAW,WAAW;AAAA,UACjC,YAAY,WAAW,YAAY;AAAA,UACnC,MAAM,WAAW,MAAM;AAAA,UACvB,OAAO,WAAW,OAAO;AAAA,UACzB,QAAQ,WAAW;AAAA,UACnB,WAAW,WAAW,WAAW;AAAA,UACjC,WAAW,WAAW,WAAW;AAAA,QACnC;AAAA,MACF,GAAG,CAAC,QAAQ,UAAU,CAAC;AACvB,aACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,eAC5B,UACH;AAAA,IAEJ;AAAA;AAAA;;;AC/BA,SAAS,iBAAiB;AAgBpB,gBAAAC,YAAA;AAjBN,IAIa;AAJb;AAAA;AAAA;AAIO,IAAM,cAA2C,CAAC,UAAU;AACjE,UAAI,MAAM,kBAAkB,MAAM;AAChC,eAAO;AAAA,MACT;AAEA,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,CAAC,MAAW;AACnB,cAAE,gBAAgB;AAClB,kBAAM,UAAU;AAAA,UAClB;AAAA,UAEA,0BAAAA,KAAC,aAAU,OAAM,SAAQ,SAAS,MAAM,MAAM,MAAM,YAAY,IAAI;AAAA;AAAA,MACtE;AAAA,IAEJ;AAAA;AAAA;;;ACpBA,SAAS,WAAAC,gBAAe;AACxB,SAAS,iBAAiB,2BAA2B;AACrD,SAAS,sBAAsB;AAC/B,SAAS,aAAa;AAHtB,IAQa;AARb;AAAA;AAAA;AAQO,IAAM,uBAAuB,CAAC,UAK/B;AACJ,YAAM,EAAE,gBAAgB,OAAO,SAAS,IAAI;AAC5C,YAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,YAAM,EAAE,gBAAgB,IAAI,gBAAgB;AAC5C,YAAM,UAAUA,SAAQ,MAAM;AAC5B,eAAO,gBAAgB,GAAG;AAAA,MAC5B,GAAG,CAAC,eAAe,CAAC;AACpB,YAAM,WAAW,oBAAoB,MAAM,MAAM;AAEjD,YAAM,YAAY,MAAM;AACtB,cAAM,KAAK,MAAM,SAAS;AAAA,UACxB,KAAK;AAAA,YACH,QAAQ;AAAA,cACN,QAAQ,MAAM;AAAA,cACd,KAAK,MAAM;AAAA,cACX,MACE,MAAM,QAAQ,QACV,EAAE,sBAAsB,IACxB,EAAE,uBAAuB;AAAA,cAC/B,WAAW,MAAM;AAAA,cACjB,UAAU,MAAM;AAAA,cAChB,UAAU,MAAM;AAAA,YAClB;AAAA,YACA;AAAA,YACA;AAAA,YACA,GAAG;AAAA,UACL;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACpCS,gBAAAD,YAAA;AAZT,IAKa;AALb;AAAA;AAAA;AAEA;AACA;AAEO,IAAM,oBAKR,CAAC,UAAU;AACd,YAAM,QAAQ,qBAAqB,KAAK;AACxC,aAAO,gBAAAA,KAAC,eAAa,GAAG,OAAO;AAAA,IACjC;AAAA;AAAA;;;ACbA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;;;ACDA,SAAS,YAAY;AACrB,SAAS,kBAAAE,uBAAsB;AAC/B,SAAS,YAAY;AACrB,SAAS,WAAAC,gBAAe;AAiBpB,gBAAAH,YAAA;AApBJ,IAUa;AAVb;AAAA;AAAA;AAUO,IAAM,WAAW,KAAK,CAAC,UAAyB;AACrD,YAAM,cAAcE,gBAAe;AAEnC,YAAM,OAAO,YAAY,MAAM,MAAM;AAErC,UAAI,CAAC,MAAM,OAAO;AAChB,eAAO;AAAA,MACT;AAEA,aACE,gBAAAF;AAAA,QAAC,KAAK;AAAA,QAAL;AAAA,UACC,SAAS;AAAA,UACT,IAAI,KAAK,YAAY,CAAC;AAAA,UACtB,IAAIG,SAAQ;AAAA,UAEX,gBAAM;AAAA;AAAA,MACT;AAAA,IAEJ,CAAC;AAAA;AAAA;;;AC5BD,SAAS,WAAAF,gBAAe;AACxB,SAAS,SAAAG,cAAa;AACtB,SAAS,kBAAAC,uBAAsB;AAE/B;AAAA,EACE;AAAA,EACA;AAAA,EACA,QAAAC;AAAA,EACA;AAAA,EACA;AAAA,EAEA,SAAAC;AAAA,OACK;AA+BS,SAsFZ,UApFkB,OAAAP,MAFN;AA3ChB,IAgBa,mBAiEP,kBAoBA;AArGN;AAAA;AAAA;AAaA;AACA;AAEO,IAAM,oBAAoB,CAAC,UAAuC;AACvE,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,EAAE,UAAU,QAAQ,IAAI,iBAAiB;AAC/C,YAAM,EAAE,EAAE,IAAIK,gBAAe;AAE7B,YAAM,EAAE,kBAAkB,iBAAiB,IAAIJ,SAAQ,MAAM;AAC3D,YAAI,EAAE,eAAe,UAAU,CAAC,MAAM,QAAQ,MAAM,YAAY,GAAG;AACjE,iBAAO,CAAC;AAAA,QACV;AACA,eAAOG,OAAM,kBAAkB,MAAM,MAAM,aAAa,CAAC,CAAC;AAAA,MAC5D,GAAG,CAAC,MAAM,KAAK,CAAC;AAEhB,YAAM,EAAE,IAAI,IAAI,qBAAqB,KAAK;AAE1C,UAAI,CAAC,oBAAoB,CAAC,kBAAkB;AAC1C,eAAO;AAAA,MACT;AAEA,aACE,gBAAAJ;AAAA,QAAC;AAAA;AAAA,UAEC,SACE,qBAAC,QAAK,WAAW,UAAU,WAAW,SAAS,KAAK,GACjD;AAAA,mBAAO,IAAI,UAAU,eACpB,gBAAAA;AAAA,cAACM,MAAK;AAAA,cAAL;AAAA,gBAEC,QACE,qBAACA,OAAA,EAAK,WAAW,IAAK;AAAA,qBAAG,EAAE,YAAY,CAAC;AAAA,kBAAI;AAAA,mBAAO;AAAA,gBAErD,QAAQ,gBAAAN,KAACM,OAAA,EAAK,WAAW,IAAK,mBAAQ;AAAA,gBACtC,IAAI;AAAA,gBACJ,OAAM;AAAA,gBACN,gBAAc;AAAA,gBAEb,cAAI;AAAA;AAAA,YACP;AAAA,YAED,OAAO,IAAI,UAAU,eACpB,gBAAAN;AAAA,cAACM,MAAK;AAAA,cAAL;AAAA,gBAEC,QACE,qBAACA,OAAA,EAAK,WAAW,IAAK;AAAA,qBAAG,EAAE,YAAY,CAAC;AAAA,kBAAI;AAAA,mBAAO;AAAA,gBAErD,QAAQ,gBAAAN,KAACM,OAAA,EAAK,WAAW,IAAK,mBAAQ;AAAA,gBACtC,IAAI;AAAA,gBACJ,OAAM;AAAA,gBAEL,cAAI;AAAA;AAAA,YACP;AAAA,aAEJ;AAAA,UAEF,WAAU;AAAA,UAEV,+BAAC,QAAK,WAAW,UAAU,SAAS,SAAS,KAAK,GAChD;AAAA,iCAAC,QAAK,WAAW,UAAU,SAAS,SAAS,WAAW,SACtD;AAAA,8BAAAN,KAAC,SAAM,MAAK,MAAK,OAAO,kBAAkB,UAAoB;AAAA,cAC9D,gBAAAA,KAAC,SAAM,MAAK,MAAK,OAAO,kBAAkB,UAAoB;AAAA,eAChE;AAAA,YACA,gBAAAA,KAAC,oBAAiB,OAAc;AAAA,aAClC;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,IAAM,mBAAmB,CAAC,UAAuC;AAC/D,YAAM,EAAE,MAAM,IAAI;AAElB,YAAM,SAAS,MAAM;AACnB,QAAAO,OAAM,KAAK,4BAA4B;AAAA,UACrC;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aACE,gBAAAP;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,UACV,SAAS,MAAM;AACb,mBAAO;AAAA,UACT;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,IAAM,QAAQ,CAAC,UAIT;AACJ,YAAM,EAAE,MAAM,OAAO,SAAS,IAAI;AAClC,YAAM,EAAE,EAAE,IAAIK,gBAAe;AAE7B,aAAO,QACL,gBAAAL;AAAA,QAACM,MAAK;AAAA,QAAL;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,SAAS,OAAO,0BAA0B;AAAA,UAC5C;AAAA,UAEA,MAAK;AAAA,UACL,IAAI;AAAA,UAEJ,QACE,qBAAC,UAAK,WAAW,6BACd;AAAA,qBAAS,OAAO,GAAG,EAAE,SAAS,CAAC,OAAO,GAAG,EAAE,SAAS,CAAC;AAAA,YAAK;AAAA,aAE7D;AAAA,UAGD;AAAA;AAAA,QAXI;AAAA,MAYP,IAEA,gBAAAN,KAAA,YAAE;AAAA,IAEN;AAAA;AAAA;;;ACnIA,SAAS,iBAAAQ,gBAAe,cAAAC,mBAAkB;AAA1C,IAca,kBAIA;AAlBb;AAAA;AAAA;AAcO,IAAM,mBAAmBD;AAAA,MAC9B,CAAC;AAAA,IACH;AAEO,IAAM,sBAAsB,MAAM;AACvC,aAAOC,YAAW,gBAAgB;AAAA,IACpC;AAAA;AAAA;;;ACpBA,SAAa,gBAAgB;AAE7B,SAAS,iBAAiB,SAAAC,cAAa;AAEvC,SAAS,kBAAAL,uBAAsB;AAY3B,gBAAAL,YAAA;AAhBJ,IAMa;AANb;AAAA;AAAA;AAGA;AAGO,IAAM,eAER,CAAC,UAAU;AACd,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,EAAE,EAAE,IAAIK,gBAAe;AAE7B,YAAM,EAAE,cAAc,IAAI,oBAAoB;AAC9C,YAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,UACP,SAAS,CAAC,UAAU;AAClB,gBAAI,CAAC;AAAe;AACpB,kBAAM,eAAe;AACrB,kBAAM,gBAAgB;AACtB,yBAAa,IAAI;AACjB,0BAAc,KAAK,EAChB;AAAA,cACC,CAAC,QAAa;AAAA,cACd,CAAC,UAAe;AACd,gBAAAU,OAAM,MAAM,MAAM,OAAO;AAAA,cAC3B;AAAA,YACF,EACC,QAAQ,MAAM;AACb,2BAAa,KAAK;AAAA,YACpB,CAAC;AAAA,UACL;AAAA,UACA,SAAS;AAAA,UAER,YAAE,eAAe;AAAA;AAAA,MACpB;AAAA,IAEJ;AAAA;AAAA;;;ACzCA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,QAAAC,aAAY;AACrB,SAAS,kBAAAN,iBAAgB,aAAa;AACtC,SAAS,QAAQ,WAAW,mBAAAO,wBAAuB;AACnD,SAAS,eAAe;AAmBL,gBAAAZ,MAqCb,QAAAa,aArCa;AAtBnB,IAea;AAfb;AAAA;AAAA;AAIA;AAWO,IAAM,iBAAiBF,MAAK,CAAC,UAA+B;AACjE,YAAM,EAAE,MAAM,MAAM,OAAO,eAAe,cAAc,UAAU,IAAI;AACtE,YAAM,EAAE,EAAE,IAAIN,gBAAe;AAE7B,YAAM,cAAc,MAAM;AACxB,cAAM,SAAS;AAAA,UACb,QAAQ,EAAE,MAAM,OAAO,QAAQ,KAAK,EAAE;AAAA,UACtC,YAAY,CAAC,gBAAAL,KAAC,UAAa,WAAU,6BAAd,GAAwC,CAAE;AAAA,QACnE;AAEA,gBAAQ,MAAM;AAAA,UACZ;AACE;AAAA;AAAA,cAEE,gBAAAA,KAAC,SAAM,SAAQ,+BAA+B,GAAG,QAAQ;AAAA;AAAA,UAE7D;AACE;AAAA;AAAA,cAEE,gBAAAA,KAAC,SAAM,SAAQ,4BAA4B,GAAG,QAAQ;AAAA;AAAA,UAE1D;AACE;AAAA;AAAA,cAEE,gBAAAA,KAAC,SAAM,SAAQ,mCAAmC,GAAG,QAAQ;AAAA;AAAA,UAEjE;AACE;AAAA;AAAA,cAEE,gBAAAA,KAAC,SAAM,SAAQ,oCAAoC,GAAG,QAAQ;AAAA;AAAA,UAElE;AACE;AAAA;AAAA,cAEE,gBAAAA,KAAC,SAAM,SAAQ,mCAAmC,GAAG,QAAQ;AAAA;AAAA,QAEnE;AAAA,MACF;AAEA,aACE,gBAAAa,MAAC,SAAI,WAAU,yBACb;AAAA,wBAAAb,KAAC,SAAI,WAAU,8DACZ,sBAAY,GACf;AAAA,QACA,gBAAAa,MAAC,SAAI,WAAU,+CACb;AAAA,0BAAAb;AAAA,YAAC;AAAA;AAAA,cACC,OAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,UAAU;AAAA,cAET,YAAE,eAAe;AAAA;AAAA,UACpB;AAAA,UACA,gBAAAA,KAACY,kBAAA,EAAgB,MAAM,MAAM,SAAS,cAAc,SAAS,WAC1D,YAAE,gBAAgB,GACrB;AAAA,WACF;AAAA,QACA,gBAAAZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAS;AAAA,YAET,0BAAAA,KAAC,aAAU,MAAM,IAAI,OAAM,SAAQ,SAAS,GAAG;AAAA;AAAA,QACjD;AAAA,SACF;AAAA,IAEJ,CAAC;AAED,mBAAe,cAAc;AAAA;AAAA;;;AClF7B,SAAS,aAAa,WAAW,UAAAc,SAAQ,YAAAC,iBAA4B;AAQ9D,SAAS,gBAAgB,OAA0B;AACxD,QAAM,EAAE,aAAa,OAAO,SAAS,IAAI;AAEzC,QAAM,CAAC,MAAM,OAAO,IAAIA,UAAS,KAAK;AACtC,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAE5C,QAAM,eAAeD,QAA8B,IAAI;AAEvD,QAAM,eAAe,YAAY,MAAM;AACrC,YAAQ,KAAK;AACb,eAAW,KAAK;AAAA,EAClB,GAAG,CAAC,CAAC;AAEL,QAAM,gBAAgB,YAAY,MAAM;AACtC,iBAAa;AACb,aAAS,WAAW;AAAA,EACtB,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,UAAU;AAAA,IACd,OAAO,UAAsB;AAC3B,YAAM,gBAAgB;AACtB,YAAM,eAAe;AAGrB,UAAI,UAAU,aAAa;AACzB,mBAAW,KAAK;AAChB;AAAA,MACF;AAEA,cAAQ,IAAI;AAAA,IACd;AAAA,IACA,CAAC,OAAO,WAAW;AAAA,EACrB;AAEA,YAAU,MAAM;AACd,UAAM,qBAAqB,CAAC,UAAe;AACzC,UACE,aAAa,WACb,CAAC,aAAa,QAAQ,SAAS,MAAM,MAAc,KACnD,CAAC,MACD;AACA,sBAAc;AAAA,MAChB;AAAA,IACF;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AAEzD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAxEA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,aAAAE,YAAW,WAAAf,gBAAe;AACnC,SAAgC,sBAAsB;AACtD,SAAS,iCAAiC;AAInC,SAAS,iBAAiB,OAM9B;AACD,QAAM,EAAE,OAAO,OAAO,aAAa,OAAO,YAAY,IAAI;AAC1D,QAAM,eAAe,eAAe,EAAE,CAAC,KAAK,GAAG,MAAM;AAErD,QAAM,YAAYA;AAAA,IAChB,MAAM,oCAAoC,KAAyB;AAAA,IACnE,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,EAAE,QAAQ,UAAU,YAAY,IAAI,eAAe;AAAA,IACvD,QAAQ,MAAM;AAAA,IACd,YAAY;AAAA,IACZ,MAAM,MAAM;AAAA,IACZ,GAAI;AAAA,EACN,CAAC;AACD,QAAM,EAAE,YAAY,IAAI,0BAA0B,MAAM;AAExD,QAAM,QAAQA;AAAA,IACZ,MAAO,QAAQ,YAAY,KAAK,IAAI;AAAA,IACpC,CAAC,aAAa,KAAK;AAAA,EACrB;AAEA,EAAAe,WAAU,MAAM;AAEd,QAAI,UAAU,aAAa;AACzB,kBAAY;AACZ;AAAA,IACF;AACA,aAAS,EACN,KAAK,CAACC,WAAU;AAAA,IAEjB,CAAC,EACA,MAAM,CAACC,YAAW;AAAA,IAEnB,CAAC;AAAA,EACL,GAAG,CAAC,OAAO,WAAW,CAAC;AAEvB,SAAO,EAAE,OAAO,QAAQ,YAAY;AACtC;AAlDA;AAAA;AAAA;AAIA;AAAA;AAAA;;;ACJA,SAAa,eAAAC,cAAa,aAAAH,YAAW,UAAAF,eAA0B;AAC/D,SAAS,kBAAkB;AAC3B;AAAA,EACE;AAAA,EACA;AAAA,EAEA;AAAA,EACA,MAAAM;AAAA,EACA,QAAAC;AAAA,OACK;AA4EC,SAGI,OAAArB,MAHJ,QAAAa,aAAA;AArFR,IA6Ba;AA7Bb;AAAA;AAAA;AA6BO,IAAM,oBAAgD,CAAC,UAAU;AACtE,YAAM,EAAE,QAAQ,IAAI;AACpB,YAAM,WAAWC,QAAyB,IAAI;AAE9C,YAAM,gBAAgBK;AAAA,QACpB,CAAC,UAAe;AACd,cAAI,MAAM,QAAQ,SAAS;AACzB,oBAAQ,KAAK;AAAA,UACf;AAAA,QACF;AAAA,QACA,CAAC,OAAO;AAAA,MACV;AAEA,MAAAH,WAAU,MAAM;AACd,cAAM,QAAQ,SAAS;AACvB,YAAI,OAAO;AACT,gBAAM,SAAS,MAAM,MAAM;AAC3B,gBAAM,kBAAkB,QAAQ,MAAM;AAAA,QACxC;AAAA,MACF,GAAG,CAAC,MAAM,KAAK,CAAC;AAEhB,aACE,gBAAAhB;AAAA,QAAC,MAAM;AAAA,QAAN;AAAA,UACC,KAAK;AAAA,UACL,SAAS,MAAM;AAAA,UACf,cAAa;AAAA,UACb,WAAS;AAAA,UACT,MAAK;AAAA,UACL,MAAK;AAAA,UACL,aAAa,MAAM,WAAW,KAAK,MAAM,eAAe;AAAA,UACxD,IAAI,MAAM;AAAA,UACV,MAAM,MAAM;AAAA,UACZ,OAAO,MAAM,QAAQ,WAAW;AAAA,UAChC,OAAO,MAAM,WAAW,KAAK,MAAM,SAAS;AAAA,UAC5C,eAAe,MAAM;AAAA,UACrB,SAAS,CAAC,MAAM;AACd,cAAE,gBAAgB;AAClB,cAAE,eAAe;AAAA,UACnB;AAAA,UACA,SAAS,MAAM;AAAA,UACf,QAAQ,MAAM;AAAA,UACd,WAAW,MAAM,iBAAiB;AAAA,UAClC,WAAU;AAAA,UACV,YACE,MAAM,sBAAsB;AAAA,YAC1B,GAAI,MAAM,cAAc;AAAA,YACxB,eAAe;AAAA,YACf,eAAe;AAAA,UACjB;AAAA,UAEF,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA,UAAU,MAAM;AAAA,UAChB,QACE,gBAAAa,MAACQ,OAAA,EAAK,MAAM,GACT;AAAA,kBAAM;AAAA,YACP,gBAAArB,KAAC,YAAO,SAAkB,UAAU,CAAC,CAAC,MAAM,OAC1C,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM;AAAA,gBACN,OAAM;AAAA,gBACN,SAAS;AAAA,gBACT,WAAWoB;AAAA,kBACT;AAAA,kBACA,MAAM,QACF,2BACA;AAAA,gBACN;AAAA;AAAA,YACF,GACF;AAAA,aACF;AAAA;AAAA,MAEJ;AAAA,IAEJ;AAAA;AAAA;;;ACxGA,SAAS,QAAAT,aAAY;AACrB,SAAS,MAAAS,KAAI,QAAAC,OAAM,QAAAf,aAAY;AAC/B,SAAS,uBAAuB;AA+B1B,gBAAAN,MAOE,QAAAa,aAPF;AAjCN,IAca;AAdb;AAAA;AAAA;AAGA;AAWO,IAAM,cAAcF,MAAK,CAAC,UAA4B;AAC3D,YAAM,EAAE,QAAAb,SAAQ,OAAO,SAAS,IAAI;AAEpC,aACE,gBAAAE;AAAA,QAAC;AAAA;AAAA,UACC,WAAWoB;AAAA,YACT;AAAA,YACA;AAAA,YACA,WAAWtB,OAAM,KAAK;AAAA,YACtB,MAAM;AAAA,UACR;AAAA,UACA,SAAS,CAAC,MAAM;AACd,gBAAI,CAAC,UAAU;AACb,gBAAE,gBAAgB;AAClB,gBAAE,eAAe;AACjB,oBAAM,WAAW,IAAI;AAAA,YACvB;AAAA,UACF;AAAA,UAEA,0BAAAE;AAAA,YAACqB;AAAA,YAAA;AAAA,cACC,GAAE;AAAA,cACF,WAAWD;AAAA,gBACT;AAAA,gBACA,CAAC,YAAY;AAAA,cACf;AAAA,cAEA,0BAAAP,MAACP,OAAA,EAAK,MAAK,OACR;AAAA,gCAAgB,KAAK;AAAA,gBACrB,MAAM;AAAA,iBACT;AAAA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,IAEJ,CAAC;AAAA;AAAA;;;AC/CD,SAAS,eAAAa,cAAa,YAAAJ,iBAAgB;AACtC,SAAS,kBAAAV,uBAAsB;AAC/B,SAAc,aAAAiB,kBAAiB;AAC/B,SAAS,kBAAAC,iBAAgB,SAAS,SAAAb,cAAa;AAsEpC,gBAAAV,aAAA;AAzEX,IAca;AAdb;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAM,mBAAmB,CAAC,UAG3B;AACJ,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,EAAE,EAAE,IAAIK,gBAAe;AAE7B,YAAM,cAAc,MAAM,iBAAiB,SAAS,KAAK;AAEzD,YAAM,CAAC,OAAO,QAAQ,IAAIU,UAAiB,WAAW;AACtD,YAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,KAAK;AAClD,YAAM,WAAW,MAAM,YAAY,MAAM,gBAAgB,MAAM;AAE/D,YAAM,EAAE,cAAc,IAAI,oBAAoB;AAC9C,YAAM,EAAE,MAAM,SAAS,IAAI,iBAAiB;AAE5C,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,EAAE,MAAM,IAAI,iBAAiB;AAAA,QACjC;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,YAAYI,aAAY,MAAM;AAClC,sBAAc,IAAI;AAElB,cAAM,OAAY;AAAA,UAChB,eAAe,MAAM;AAAA,UACrB,iBAAiB;AAAA,QACnB;AAEA,sBAAc,MAAM,cAAc,SAAS,GAAG,IAAI,EAC/C,KAAK,CAAC,WAAgB;AACrB,uBAAa;AACb,mBAAS,KAAK;AAAA,QAChB,CAAC,EACA,MAAM,CAAC,QAAa;AACnB,UAAAT,OAAM,MAAM,IAAI,OAAO;AACvB,wBAAc;AAAA,QAChB,CAAC,EACA,QAAQ,MAAM,cAAc,KAAK,CAAC;AAAA,MACvC,GAAG,CAAC,MAAM,eAAe,OAAO,aAAa,CAAC;AAE9C,UAAI,CAAC,MAAM,mBAAmB,MAAM,SAASY,WAAU,QAAQ;AAC7D,eAAO,gBAAAtB,MAAC,UAAM,YAAE,oBAAoB,GAAE;AAAA,MACxC;AAEA,YAAM,gBAAgB,MAAM;AAC1B,YAAI,CAAC,WAAW,UAAU;AACxB,iBACE,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,QAAQ,eAAe,KAAK;AAAA,cAC5B;AAAA,cACA;AAAA;AAAA,UACF;AAAA,QAEJ;AAEA,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YAEA,OAAO,QAAQ,QAAQ,EAAE,wCAAwC;AAAA,YACjE,YAAY,CAACuB,gBAAe,YAAY,QAAQ,CAAC;AAAA;AAAA,QACnD;AAAA,MAEJ;AAEA,aACE,gBAAAvB;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,cAAc;AAAA,UACd,SACE,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,cAAc;AAAA,cACd;AAAA;AAAA,UACF;AAAA,UAGF,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,CAAC,MAAM;AACd,kBAAE,gBAAgB;AAClB,kBAAE,eAAe;AAAA,cACnB;AAAA,cACA,KAAK;AAAA,cAEJ,wBAAc;AAAA;AAAA,UACjB;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA;AAAA;;;AC9HA,SAAS,WAAAC,UAAS,YAAAc,iBAAgB;AAClC,SAAS,kBAAAV,uBAAsB;AAE/B,SAAS,aAAAiB,kBAAiB;AAC1B,SAAS,kBAAAC,iBAAgB,WAAAC,UAAS,SAAAd,cAAa;AAqIpC,gBAAAV,aAAA;AAzIX,IAea;AAfb;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAM,YAAY,CAAC,UAGpB;AACJ,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,EAAE,EAAE,IAAIK,gBAAe;AAE7B,YAAM,cAAcJ,SAAQ,MAAM;AAChC,YAAI,MAAM,SAASqB,WAAU,UAAU,CAAC,MAAM,OAAO;AACnD,iBAAO;AAAA,QACT;AACA,eAAO,MAAM,OAAO,SAAS,KAAK;AAAA,MACpC,GAAG,CAAC,MAAM,OAAO,MAAM,IAAI,CAAC;AAE5B,YAAM,CAAC,OAAO,QAAQ,IAAIP,UAAiB,WAAW;AAEtD,YAAM,cAAc,OAAO,kBAAkB;AAE7C,YAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,KAAK;AAElD,YAAM,EAAE,WAAW,cAAc,IAAI,oBAAoB;AAEzD,YAAM,EAAE,MAAM,SAAS,IAAI,iBAAiB;AAE5C,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,EAAE,OAAO,YAAY,IAAI,iBAAiB;AAAA,QAC9C;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,aAAa;AAAA,UACX,aAAa;AAAA;AAAA,UAEb,gBAAgB,MAAM,UAAU,SAAS;AAAA;AAAA,UAEzC,eAAe,MAAM,eAAe,SAAS;AAAA,QAC/C;AAAA,MACF,CAAC;AAED,YAAM,YAAY,MAAM;AACtB,sBAAc,IAAI;AAElB,YAAI,WAAW,MAAM;AAErB,YAAI,OAAY;AAAA,UACd,QAAQ,MAAM;AAAA,UACd,YAAY,MAAM;AAAA,UAClB,MAAM,MAAM;AAAA,UACZ,gBAAgB,MAAM;AAAA,UACtB,aAAa;AAAA,QACf;AAEA,YAAI,MAAM,aAAa;AACrB,eAAK,cAAc,MAAM;AAAA,QAC3B;AAEA,YAAI,MAAM,WAAW;AACnB,eAAK,YAAY,MAAM;AAAA,QACzB;AAEA,YAAI,MAAM,iBAAiB;AACzB,eAAK,kBAAkB,MAAM;AAAA,QAC/B;AAEA,YAAI,aAAa;AACf,qBAAW,MAAM;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH;AAAA,YACA,OAAO;AAAA,YACP,eAAe;AAAA,UACjB;AAAA,QACF;AASA,YAAI,MAAM,QAAQ,QAAW;AAE3B,eAAK,WAAW,IAAI,MAAM;AAAA,QAC5B;AAEA,YAAI;AACJ,YAAI,MAAM,kBAAkB,QAAW;AACrC,mBAAS,cAAc,MAAM,cAAc,SAAS,GAAG,IAAI;AAAA,QAC7D,OAAO;AACL,mBAAS,UAAU,MAAM,SAAS,SAAS,GAAG,IAAI;AAAA,QACpD;AAEA,eACG,KAAK,CAAC,WAAgB;AACrB,uBAAa;AACb,mBAAS,KAAK;AAAA,QAChB,CAAC,EACA,MAAM,CAAC,QAAa;AACnB,UAAAL,OAAM,MAAM,IAAI,OAAO;AACvB,wBAAc;AAAA,QAChB,CAAC,EACA,QAAQ,MAAM,cAAc,KAAK,CAAC;AAAA,MACvC;AAEA,YAAM,oBAAoB,MAAM,iBAAiB,MAAM,QAAQ;AAE/D,UAAI,qBAAqB,UAAU,UAAU;AAC3C,eAAO,gBAAAV,MAAC,UAAM,YAAE,oBAAoB,GAAE;AAAA,MACxC;AAEA,YAAM,gBAAgB,MAAM;AAC1B,YAAI,CAAC,WAAW,MAAM,UAAU;AAC9B,iBACE,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,QAAQ,eAAe,KAAK;AAAA,cAC5B;AAAA,cACA,UAAU,MAAM;AAAA;AAAA,UAClB;AAAA,QAEJ;AAEA,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA,OAAO,SAAS,YAAY,OAAO;AAAA,YACnC,YAAY,CAACuB,gBAAe,YAAY,QAAQ,CAAC;AAAA;AAAA,QACnD;AAAA,MAEJ;AAEA,aACE,gBAAAvB;AAAA,QAACwB;AAAA,QAAA;AAAA,UACC;AAAA,UACA,cAAc;AAAA,UACd,SACE,gBAAAxB;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,cAAc;AAAA,cACd;AAAA;AAAA,UACF;AAAA,UAGF,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,CAAC,MAAM;AACd,kBAAE,gBAAgB;AAClB,kBAAE,eAAe;AAAA,cACnB;AAAA,cACA,KAAK;AAAA,cAEJ,wBAAc;AAAA;AAAA,UACjB;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA;AAAA;;;AC7LA;AAAA,EACE,iBAAAQ;AAAA,EAGA,cAAAC;AAAA,EACA,aAAAO;AAAA,EACA,WAAAf;AAAA,EACA,YAAAc;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAAX;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAGP,SAAS,iBAAAqB,sBAAqB;AA4H1B,gBAAAzB,aAAA;AAMJ,SAAS,YAAY,OAIlB;AACD,QAAM,EAAE,OAAO,UAAU,SAAS,IAAI;AAEtC,MAAI,CAAC;AACH,WAAO;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAEF,QAAM,cAAc,eAAe,SAAS,MAAM,QAAQ,MAAM,YAAY;AAE5E,QAAM,EAAE,kBAAkB,iBAAiB,IAAI,cAC3C,kBAAkB,KAAK,IACvB;AAAA,IACE,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EACpB;AACJ,QAAM,EAAE,gBAAgB,eAAe,IAAI,cACvC,4BAA4B,KAAK,IACjC;AAAA,IACE,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AAEJ,MAAID,YAAW,MAAM;AAErB,MAAIA,cAAa,GAAG;AAClB,QAAI,MAAM,eAAe,CAAC,EAAE,SAAS,kBAAkB;AACrD,MAAAA,YAAW,SAAS;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,eAAe,SAAS;AAC9B,QAAM,QACJ,OAAOA,cAAa,YACpB,OAAO,qBAAqB,YAC5B,OAAO,iBAAiB,WACpBK,OAAM;AAAA,IACJ;AAAA,MACE,KAAKL;AAAA,MACL,OAAO;AAAA,MACP,YAAY,SAAS;AAAA,MACrB,WAAW,MAAM;AAAA,MACjB,WAAW0B,eAAc;AAAA,IAC3B;AAAA,IACA,EAAE,QAAQ,EAAE,SAAS,EAAE;AAAA,EACzB,IACA;AAEN,QAAM,QACJ,OAAO1B,cAAa,YACpB,OAAO,qBAAqB,YAC5B,OAAO,iBAAiB,WACpBK,OAAM;AAAA,IACJ;AAAA,MACE,KAAKL;AAAA,MACL,OAAO;AAAA,MACP,YAAY,SAAS;AAAA,MACrB,WAAW,MAAM;AAAA,MACjB,WAAW0B,eAAc;AAAA,IAC3B;AAAA,IACA,EAAE,QAAQ,EAAE,SAAS,EAAE;AAAA,EACzB,IACA;AAEN,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAxOA,IA2Ca,qBAIA,wBAIA;AAnDb;AAAA;AAAA;AAwBA;AAmBO,IAAM,sBAAsBjB;AAAA,MACjC,CAAC;AAAA,IACH;AAEO,IAAM,yBAAyB,MAAM;AAC1C,aAAOC,YAAW,mBAAmB;AAAA,IACvC;AAEO,IAAM,uBAET,CAAC,UAAU;AACb,YAAM,EAAE,OAAO,SAAS,IAAI;AAC5B,YAAM,EAAE,SAAS,IAAI,iBAAiB;AACtC,YAAM,CAAC,UAAU,WAAW,IAAIM,UAA8B;AAE9D,YAAM,CAAC,aAAa,IAAI,YAAY,kBAAkB,QAAQ;AAC9D,YAAM,CAAC,aAAa,IAAI,YAAY,kBAAkB,KAAK;AAE3D,YAAM,SAAS,aAAa;AAC5B,YAAM,EAAE,MAAM,IAAI,WAAW;AAE7B,YAAM,cAAcd,SAAQ,MAAM;AAChC,eAAO,mBAAmB,MAAM,CAAC,iBAAiB,MAAM,SAAS,CAAC;AAAA,MACpE,GAAG,CAAC,MAAM,SAAS,CAAC;AAEpB,YAAM,gBAAgB,cAAc,OAAOgB,WAA4B;AACrE,eAAO,cAAc,MAAM;AAAA,UACzB,UAAUA,OAAM;AAAA,UAChB,QAAQA,OAAM;AAAA,QAChB,CAAC;AAAA,MACH,CAAC;AAED,YAAM,gBAAgB;AAAA,QACpB,OAAOA,QAAyB,WAAgB;AAC9C,iBAAO,cAAc;AAAA,YACnB,UAAUA,OAAM;AAAA,YAChB,cAAcA,OAAM,aAAa,IAAI,CAACA,YAAW;AAAA,cAC/C,UAAUA,OAAM;AAAA,cAChB,UAAU,OAAO;AAAA,YACnB,EAAE;AAAA,UACJ,CAAC;AAAA,QACH;AAAA,MACF;AAEA,YAAM,qBAAqB;AAAA,QACzB,CAAC,WAAwC;AACvC,gBAAM,YAAY,OAAO,MAAM,IAAI,WAAW;AAC9C,iBAAO,WAAW,MAAM,MAAM;AAAA,YAC5B,CAAC,MAA2B,EAAE,WAAW;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AAEA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,YAAY;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,MAAAD,WAAU,MAAM;AACd,YAAI,eAAe,UAAW,OAAe,eAAe,QAAQ;AAClE,gBAAMU,YAAW,mBAAmB,MAAM,MAAM;AAChD,cAAIA,WAAU;AACZ,wBAAYA,SAAQ;AAAA,UACtB;AAAA,QACF;AAAA,MACF,GAAG,CAAC,MAAM,MAAM,CAAC;AAEjB,YAAM,gBAAgBzB,SAAkC,MAAM;AAC5D,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,aACE,gBAAAD,MAAC,oBAAoB,UAApB,EAA6B,OAAO,eAClC,UACH;AAAA,IAEJ;AAAA;AAAA;;;ACvJA,SAAa,aAAAgB,kBAAiB;AAC9B,SAAS,aAAAW,YAAW,SAAAC,QAAO,kBAAAL,iBAAgB,WAAAM,gBAAe;AAmF9C,gBAAA7B,aAAA;AApFZ,IAGa;AAHb;AAAA;AAAA;AAGO,IAAM,aAaR,CAAC,UAAU;AACd,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AAEJ,MAAAgB,WAAU,MAAM;AACd,cAAM,QAAQ,SAAS;AACvB,YAAI,OAAO;AACT,gBAAM,SAAS,MAAM,MAAM;AAC3B,gBAAM,kBAAkB,QAAQ,MAAM;AAAA,QACxC;AACA,mBAAW,IAAI;AAAA,MACjB,GAAG,CAAC,CAAC;AACL,YAAM,QAAQ,UAAU,UAAU,KAAK;AACvC,aACE,gBAAAhB,MAAC6B,UAAA,EAAQ,SAAS,UAAU,MAC1B,0BAAA7B;AAAA,QAAC4B;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,YAAY;AAAA,YACVL,gBAAe;AAAA,YACfA,gBAAe,YAAY,EAAE;AAAA,YAC7BA,gBAAe;AAAA,UACjB;AAAA,UACA;AAAA,UACA,eAAe,CAAC,MAAM,SAAS,CAAC;AAAA,UAChC,UAAU;AAAA,UACV,SAAS,CAAC,MAAM;AACd,cAAE,gBAAgB;AAClB,cAAE,eAAe;AAAA,UACnB;AAAA,UACA,cAAa;AAAA,UACb;AAAA,UACA;AAAA,UACA,WAAW;AAAA,UACX,WAAS;AAAA,UACT,OAAO,OAAO,WAAW;AAAA,UACzB,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAcA,QACE,gBAAAvB,MAAC,YAAO,SACN,0BAAAA;AAAA,YAAC2B;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,OAAM;AAAA,cACN,SAAS;AAAA,cACT,WAAU;AAAA;AAAA,UACZ,GACF;AAAA;AAAA,MAEJ,GACF;AAAA,IAEJ;AAAA;AAAA;;;AC/FA,SAAa,eAAAR,cAAa,aAAAH,YAAW,WAAAf,UAAS,UAAAa,SAAQ,YAAAC,iBAAgB;AACtE,SAAS,WAAW,SAAAX,cAAa;AACjC,SAAS,kBAAAC,uBAAsB;AAC/B,SAAc,aAAAyB,kBAAiB;AAC/B,SAAS,qBAAAC,0BAAyB;AAClC;AAAA,EACE,MAAAX;AAAA,EACA,QAAAC;AAAA,EACA,WAAAG;AAAA,EACA,SAAAd;AAAA,EACA,QAAAJ;AAAA,EACA;AAAA,EACA,UAAA0B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,mBAAAC,kBAAiB,WAAA9B,gBAAe;AAoNjC,SAiGA,YAAA+B,WAjGA,OAAAlC,OAiGA,QAAAa,aAjGA;AArOR,IA0Ba,cA+QPsB,cAiDA,WAwLA;AAlhBN;AAAA;AAAA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAM,eAAe,CAAC,UAGvB;AACJ,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,EAAE,YAAY,IAAI;AACxB,YAAM,cAAc,MAAM,SAAS,SAAS;AAC5C,YAAM,CAAC,OAAO,QAAQ,IAAIpB,UAAS,WAAW;AAE9C,YAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAE5C,YAAM,EAAE,EAAE,IAAIV,gBAAe;AAE7B,YAAM,CAAC,MAAM,OAAO,IAAIU,UAAS,KAAK;AACtC,YAAM,CAAC,OAAO,QAAQ,IAAIA,UAAiB;AAE3C,YAAM,EAAE,WAAW,eAAe,iBAAiB,IAAI,oBAAoB;AAC3E,YAAM,EAAE,eAAe,mBAAmB,SAAS,IACjD,uBAAuB;AAEzB,YAAM,EAAE,SAAS,MAAM,UAAU,IAAI,iBAAiB;AAEtD,YAAM,cAAc,OAAO,KAAa,WAAmC;AACzE,iBAAS,GAAG;AACZ,cAAM,cAAc,KAAK,IAAI,UAAU,gBAAgB,CAAC;AAExD,YAAI,YAAY,eAAe,OAAO,GAAG,IAAI,aAAa;AACxD;AAAA,YACE,EAAE,oCAAoC;AAAA,cACpC,UAAU;AAAA,YACZ,CAAC;AAAA,UACH;AAAA,QACF,OAAO;AACL,gBAAMhB,YAAW,OAAO,GAAG;AAC3B,cAAI,UAAUA,YAAW,QAAQ;AAC/B;AAAA,cACE,EAAE,4BAA4B;AAAA,gBAC5B,UAAUkC,iBAAgB,QAAQ;AAAA,kBAChC,KAAK;AAAA,gBACP,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,UACF,OAAO;AACL,qBAAS,MAAS;AAAA,UACpB;AAAA,QACF;AACA,eAAO,QAAQ,QAAQ;AAAA,MACzB;AAEA,MAAAjB,WAAU,MAAM;AACd,oBAAY,MAAM,SAAS,SAAS,CAAC;AAAA,MACvC,GAAG,CAAC,MAAM,MAAM,QAAQ,CAAC;AAEzB,YAAM,eAAe,MAAM;AACzB,gBAAQ,KAAK;AACb,mBAAW,KAAK;AAAA,MAClB;AACA,YAAM,gBAAgB,MAAM;AAC1B,gBAAQ,KAAK;AACb,oBAAY,MAAM,SAAS,SAAS,CAAC;AACrC,mBAAW,KAAK;AAAA,MAClB;AACA,YAAM,CAAC,cAAc,eAAe,IAAID,UAAS,KAAK;AAEtD,YAAM,WAAWD,QAAyB,IAAI;AAE9C,YAAM,eAAe,MAAM;AACzB,YAAI,CAAC,CAAC,OAAO;AACX;AAAA,QACF;AAEA,YAAI,OAAO,KAAK,MAAM,OAAO,MAAM,QAAQ,GAAG;AAC5C,qBAAW,KAAK;AAChB;AAAA,QACF;AAEA,cAAMsB,SACJ,MAAM,kBAAkB,SAAY,MAAM,gBAAgB,MAAM;AAClE,YAAIA,WAAU,QAAQ,MAAM,gBAAgB,MAAM;AAChD,gBAAM,eAAe,iBAAiB,MAAM,QAAQA,QAAO,KAAK;AAChE,cAAI,cAAc;AAChB,YAAA1B,OAAM,MAAM,YAAY;AACxB,4BAAgB,KAAK;AACrB,0BAAc;AACd;AAAA,UACF;AAAA,QACF;AAEA,gBAAQ,IAAI;AAAA,MACd;AAEA,YAAM,UAAU,CAAC,UAAe;AAC9B,eAAO,gBAAgB;AACvB,eAAO,eAAe;AAEtB,qBAAa;AAAA,MACf;AAEA,YAAM,gBAAgB,CAAC,UAAe;AACpC,YAAI,MAAM,QAAQ,SAAS;AACzB,iBAAO,gBAAgB;AACvB,iBAAO,eAAe;AACtB,uBAAa;AAAA,QACf;AAAA,MACF;AAEA,YAAM,YAAYS,aAAY,MAAM;AAClC,wBAAgB,IAAI;AAEpB,YAAI,SAAc;AAAA,UAChB,QAAQ,MAAM;AAAA,UACd,YAAY,MAAM;AAAA,UAClB,MAAM,MAAM;AAAA,UACZ,aAAa,MAAM;AAAA,UACnB,gBAAgB;AAAA;AAAA,UAEhB,eAAe,MAAM;AAAA,QACvB;AAEA,YACE,OAAO,OAAO,kBAAkB,eAChC,OAAO,eAAe,UACtB;AAEA,gBAAM,EAAE,aAAa,GAAG,KAAK,IAAI;AACjC,mBAAS;AAAA,QACX;AAEA,YAAI,OAAO,MAAM,gBAAgB,aAAa;AAC5C,iBAAO,cAAc,MAAM;AAAA,QAC7B;AAEA,YAAI,MAAM,WAAW;AACnB,iBAAO,YAAY,MAAM;AAAA,QAC3B;AAEA,YAAI,MAAM,iBAAiB;AACzB,iBAAO,kBAAkB,MAAM;AAAA,QACjC;AAEA,YAAI,OAAO,qBAAqB,GAAG;AACjC,iBAAO,kBAAkB,IAAI;AAAA,QAC/B;AAGA,YAAI,OAAO,QAAQ,QAAW;AAE5B,iBAAO,WAAW,IAAI,MAAM;AAAA,QAC9B;AAEA,YAAI;AAEJ,YAAI,eAAe,SAAS,MAAM,cAAcY,mBAAkB,OAAO;AACvE,mBAAS,kBAAkB,OAA2B,MAAM;AAAA,QAC9D,OAAO;AACL,cAAI,MAAM,kBAAkB,QAAW;AACrC,qBAAS,cAAc,MAAM,cAAc,SAAS,GAAG,MAAM;AAAA,UAC/D,OAAO;AACL,qBAAS,UAAW,MAAuB,SAAS,SAAS,GAAG,MAAM;AAAA,UACxE;AAAA,QACF;AAEA,eACG;AAAA,UACC,CAAC,WAAgB;AACf,yBAAa;AACb,wBAAY,MAAM,SAAS,CAAC;AAAA,UAC9B;AAAA,UACA,CAAC,QAAa;AACZ,YAAArB,OAAM,MAAM,IAAI,OAAO;AACvB,wBAAY,MAAM,SAAS,SAAS,CAAC;AACrC,0BAAc;AAAA,UAChB;AAAA,QACF,EACC,QAAQ,MAAM,gBAAgB,KAAK,CAAC;AAAA,MACzC,GAAG,CAAC,KAAK,CAAC;AAEV,YAAM,eAAeI,QAA8B,IAAI;AACvD,YAAM,oBAAoBA,QAA8B,IAAI;AAE5D,YAAM,qBAAqB,CAAC,UAAe;AACzC,YACE,aAAa,WACb,kBAAkB,WAClB,CAAC,aAAa,QAAQ,SAAS,MAAM,MAAc,KACnD,CAAC,kBAAkB,QAAQ,SAAS,MAAM,MAAc,KACxD,CAAC,MACD;AACA,wBAAc;AAAA,QAChB;AAAA,MACF;AAEA,MAAAE,WAAU,MAAM;AACd,iBAAS,iBAAiB,aAAa,kBAAkB;AAEzD,eAAO,MAAM;AACX,mBAAS,oBAAoB,aAAa,kBAAkB;AAAA,QAC9D;AAAA,MACF,GAAG,CAAC,MAAM,MAAM,QAAQ,CAAC;AAEzB,YAAM,gBAAgB,MAAM;AAC1B,YAAI,CAAC,WAAW,MAAM,UAAU;AAC9B,iBACE,gBAAAhB;AAAA,YAACmC;AAAA,YAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA,SAAS,MAAM;AAAA;AAAA,UACjB;AAAA,QAEJ;AAEA,eACE,gBAAAnC;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT,QAAQ,MAAM;AAAA,YACd;AAAA,YACA,aAAa,UAAU;AAAA,YACvB;AAAA,YACA,aAAa;AAAA,YACb,MAAM,MAAM;AAAA,YACZ;AAAA,YACA;AAAA;AAAA,QACF;AAAA,MAEJ;AAEA,aACE,gBAAAA;AAAA,QAACwB;AAAA,QAAA;AAAA,UACC;AAAA,UACA,cAAc;AAAA,UACd,SACE,gBAAAxB;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA,UAEF,cAAc;AAAA,YACZ,iBAAiB,CAAC,MAAM;AAAA,YAGxB;AAAA,UACF;AAAA,UAEA,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,CAAC,MAAM;AACd,kBAAE,gBAAgB;AAClB,kBAAE,eAAe;AAAA,cACnB;AAAA,cACA,KAAK;AAAA,cAEJ,wBAAc;AAAA;AAAA,UACjB;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,IAAMmC,eAKD,CAAC,UAAU;AACd,YAAM,EAAE,OAAO,MAAM,IAAI;AAEzB,YAAM,WAAY,MAAuB;AAEzC,aACE,gBAAAtB;AAAA,QAACQ;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,SAAS;AAAA,UACT,KAAK;AAAA,UACL,WAAWD;AAAA,YACT;AAAA,YACA,MAAM,SAASU,WAAU,OAAO;AAAA,YAChC,MAAM,SAASA,WAAU,QAAQ;AAAA,YACjC,SAAS,KAAK,KAAK;AAAA,UACrB;AAAA,UACA,SAAS,CAAC,MAAM;AACd,cAAE,gBAAgB;AAClB,cAAE,eAAe;AACjB,kBAAM,WAAW,IAAI;AAAA,UACvB;AAAA,UAEC;AAAA,2BAAe,SAChB,MAAM,cAAcC,mBAAkB,QAAQ,OAC5C,gBAAAlB,MAAAqB,WAAA,EACE;AAAA,8BAAAlC,MAAC,UAAM,oBAAS;AAAA,cAChB,gBAAAA,MAAC,UAAK,eAAC;AAAA,eACT;AAAA,YAGF,gBAAAA;AAAA,cAACqB;AAAA,cAAA;AAAA,gBACC,GAAE;AAAA,gBACF,WAAWD;AAAA,kBACT;AAAA,kBACA,CAAC,MAAM,WACL;AAAA,gBACJ;AAAA,gBAEA,0BAAApB,MAACM,OAAA,EAAK,MAAK,OAAO,iBAAM;AAAA;AAAA,YAC1B;AAAA;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,IAAM,YAoBD,CAAC,UAAU;AACd,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAAP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AAEJ,YAAM,YAAY,UAAU,QAAQ,MAAM,MAAM,MAAM,WAAW;AAEjE,YAAM,SAASE,SAAQ,MAAM;AAC3B,YAAI,aAAa;AACf,iBAAO,KAAK,IAAI,eAAe,CAAC;AAAA,QAClC;AACA,eAAO,MAAM,WAAW,KAAK,IAAI,SAAS;AAAA,MAC5C,GAAG,CAAC,MAAM,UAAU,WAAW,aAAa,WAAW,CAAC;AAExD,YAAM,CAAC,aAAa,cAAc,IAAIc,UAA6B,MAAS;AAE5E,MAAAC,WAAU,MAAM;AACd,YAAI,gBAAgB,QAAW;AAC7B,gBAAMqB,eAAc,IAAIlC,SAAQJ,SAAQ,EACrC,IAAI,MAAM,EACV,IAAI,EACJ,IAAI,GAAG,EACP,SAAS;AACZ,yBAAesC,YAAW;AAAA,QAC5B;AAAA,MACF,GAAG,CAAC,aAAa,QAAQtC,SAAQ,CAAC;AAElC,YAAM,iBAAiB,OAAO,SAAyC;AACrE,YAAI,YAAY,GAAG;AACjB,iBAAOK,OAAM,aAAa,MAAM,SAAS,KAAK;AAAA,QAChD;AACA,eAAO,YAAY,GAAG,IAAI,IAAI,MAAM;AAAA,MACtC;AAEA,aACE,gBAAAS,MAAC,eAAY,MAAM,CAAC,aAClB;AAAA,wBAAAb,MAAC,kBACC,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,IAAI;AAAA,YACJ,OAAOD;AAAA,YACP,UAAU,CAAC,MAAc;AACvB,oBAAMA,YAAW,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC,EAAE,SAAS;AAChE,0BAAY,GAAG,MAAM;AACrB,kBAAI,EAAE,SAAS,GAAG;AAAG;AACrB,kBAAI,OAAOA,SAAQ,MAAM,GAAG;AAC1B,+BAAe,CAAC;AAChB;AAAA,cACF;AACA,oBAAMsC,eAAc,IAAIlC,SAAQ,CAAC,EAC9B,IAAI,MAAM,EACV,IAAI,GAAG,EACP,gBAAgB,GAAGA,SAAQ,UAAU,EACrC,SAAS;AACZ,6BAAe,KAAK,IAAI,KAAKkC,YAAW,CAAC;AAAA,YAC3C;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ,CAAC,MAAM;AACb,6BAAe,EAAE,OAAO,KAAK;AAAA,YAC/B;AAAA,YACA,UAAU;AAAA;AAAA,QACZ,GACF;AAAA,QACA,gBAAArC;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAM;AAAA,YACN,MAAK;AAAA,YACL,iBAAiB,CAAC,UAAU;AAE1B,oBAAM,eAAe;AAAA,YACvB;AAAA,YAEA,0BAAAa;AAAA,cAACQ;AAAA,cAAA;AAAA,gBACC,GAAG;AAAA,gBACH,KAAK;AAAA,gBACL,OAAO;AAAA,gBACP,WAAW;AAAA,gBACX,KAAK;AAAA,gBAEL;AAAA,kCAAArB;AAAA,oBAACM,MAAK;AAAA,oBAAL;AAAA,sBACC,MAAK;AAAA,sBACL,WAAW;AAAA,sBACX,WAAU;AAAA,sBACV,IAAI;AAAA,sBACJ,SAAS;AAAA,sBACT,MAAK;AAAA,sBACL,IAAIH,SAAQ;AAAA,sBAEX,aAAG,WAAW;AAAA;AAAA,kBACjB;AAAA,kBACA,gBAAAU;AAAA,oBAACQ;AAAA,oBAAA;AAAA,sBACC,WAAW;AAAA,sBACX,OAAO;AAAA,sBACP,KAAK;AAAA,sBACL,WAAU;AAAA,sBAEV;AAAA,wCAAArB;AAAA,0BAAC;AAAA;AAAA,4BACC,WAAW;AAAA,4BACX,OAAO,CAAC,eAAe,CAAC;AAAA,4BACxB,eAAe,CAAC,MAAM;AACpB,oCAAM,SAAS,MAAM,KAAK,EAAE,OAAO,CAAC;AACpC,6CAAe,OAAO,CAAC,CAAC;AACxB,oCAAMD,YAAW,IAAII,SAAQ,OAAO,CAAC,CAAC,EACnC,IAAI,GAAG,EACP,IAAI,MAAM,EACV,IAAI,EACJ,QAAQ,SAASA,SAAQ,UAAU;AACtC,0CAAYJ,WAAU,MAAM;AAAA,4BAC9B;AAAA,4BACA,eAAe,CAAC,WAAW;AACzB,oCAAMA,YAAW,IAAII,SAAQ,OAAO,CAAC,CAAC,EACnC,IAAI,GAAG,EACP,IAAI,MAAM,EACV,IAAI,EACJ,QAAQ,SAASA,SAAQ,UAAU;AACtC,6CAAeJ,SAAQ,EAAE,QAAQ,MAAM;AACrC,yCAAS,QAAQ,MAAM;AAAA,8BACzB,CAAC;AAAA,4BACH;AAAA;AAAA,wBACF;AAAA,wBACA,gBAAAC;AAAA,0BAAC;AAAA;AAAA,4BACC,SAAS,CAAC,UAAU;AAClB,6CAAe,QAAQ,GAAG;AAC1B,kCAAID,YAAW,IAAII,SAAQ,KAAK,EAC7B,IAAI,MAAM,EACV,IAAI,EACJ,QAAQ,SAASA,SAAQ,UAAU;AACtC,8BAAAJ,YAAWK,OAAM,aAAaL,WAAU,SAAS,KAAKA;AAEtD,0CAAYA,WAAU,MAAM;AAC5B,yCAAW,MAAM;AACf,yCAAS,QAAQ,MAAM;AACvB,yCAAS,QAAQ;AAAA,kCACfA,UAAS;AAAA,kCACTA,UAAS;AAAA,gCACX;AAAA,8BACF,GAAG,GAAG;AAAA,4BACR;AAAA;AAAA,wBACF;AAAA;AAAA;AAAA,kBACF;AAAA;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA,SACF;AAAA,IAEJ;AAEA,IAAM,UAAU,CAAC,UAAgD;AAC/D,YAAM,EAAE,EAAE,IAAIM,gBAAe;AAC7B,YAAM,OAAO;AAAA,QACX;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO,EAAE,YAAY;AAAA,UACrB,OAAO;AAAA,QACT;AAAA,MACF;AAEA,aACE,gBAAAL,MAACqB,OAAA,EAAK,KAAK,GAAG,OAAO,QAClB,eAAK,IAAI,CAAC,MAAM,UAAU;AACzB,eACE,gBAAArB;AAAA,UAACgC;AAAA,UAAA;AAAA,YAEC,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,MAAK;AAAA,YACL,SAAS,CAAC,MAAM;AACd,gBAAE,gBAAgB;AAClB,gBAAE,eAAe;AACjB,oBAAM,QAAQ,KAAK,KAAK;AAAA,YAC1B;AAAA,YACA,WAAU;AAAA,YAET,eAAK;AAAA;AAAA,UAXD;AAAA,QAYP;AAAA,MAEJ,CAAC,GACH;AAAA,IAEJ;AAAA;AAAA;;;ACjkBA,SAAS,eAAAb,cAAa,WAAAlB,UAAS,YAAAc,iBAAgB;AAE/C,SAAS,WAAAS,UAAS,SAAAd,QAAO,kBAAAa,uBAAsB;AAwFvC,gBAAAvB,aAAA;AA1FR,IAaa;AAbb;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAM,uBAAuB,CAAC,UAG/B;AACJ,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,EAAE,gBAAgB,cAAc,IAAI;AAE1C,YAAM,kBAAkB,CAAC,CAAC;AAC1B,YAAM,iBAAiB,CAAC,CAAC;AAEzB,YAAM,cAAcC,SAAQ,MAAM;AAChC,eAAO,iBACF,gBAAgB,KAAK,SAAS,IAC/B,gBAAgB,SAAS;AAAA,MAC/B,GAAG,CAAC,gBAAgB,aAAa,CAAC;AAElC,YAAM,CAAC,OAAO,QAAQ,IAAIc,UAAiB,WAAY;AACvD,YAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,KAAK;AAElD,YAAM,WAAW,MAAM,YAAY,MAAM;AAEzC,YAAM,EAAE,cAAc,IAAI,oBAAoB;AAE9C,YAAM,EAAE,MAAM,SAAS,IAAI,iBAAiB;AAE5C,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,EAAE,MAAM,IAAI,iBAAiB;AAAA,QACjC;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,kBAAkB,mBAAmB;AAAA,QAC5C,aAAa;AAAA,UACX,gBAAgB,kBAAkB,QAAQ;AAAA,UAC1C,eAAe,iBAAiB,QAAQ;AAAA,QAC1C;AAAA,MACF,CAAC;AAED,YAAM,YAAYI,aAAY,MAAM;AAClC,sBAAc,IAAI;AAElB,cAAM,OAAY;AAAA,UAChB,eAAe,MAAM;AAAA,UACrB,gBAAgB,kBAAkB,QAAQ;AAAA,UAC1C,eAAe,iBAAiB,GAAG,OAAO,KAAK,IAAI,GAAG,KAAK;AAAA,QAC7D;AAEA,sBAAc,MAAM,cAAc,SAAS,GAAG,IAAI,EAC/C,KAAK,CAAC,WAAgB;AACrB,uBAAa;AACb,mBAAS,KAAK;AAAA,QAChB,CAAC,EACA,MAAM,CAAC,QAAa;AACnB,UAAAT,OAAM,MAAM,IAAI,OAAO;AACvB,wBAAc;AAAA,QAChB,CAAC,EACA,QAAQ,MAAM,cAAc,KAAK,CAAC;AAAA,MACvC,GAAG,CAAC,MAAM,eAAe,OAAO,aAAa,CAAC;AAE9C,YAAM,gBAAgB,MAAM;AAC1B,cAAM,SAAS,iBAAiB,MAAM;AAEtC,YAAI,CAAC,WAAW,UAAU;AACxB,iBACE,gBAAAV;AAAA,YAAC;AAAA;AAAA,cACC,QAAQ,eAAe,KAAK;AAAA,cAC5B;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA,QAEJ;AAEA,cAAM,aAAa,iBACf,CAACuB,gBAAe,YAAY,CAAC,CAAC,IAC9B;AAAA,UACEA,gBAAe;AAAA,UACfA,gBAAe,YAAY,QAAQ;AAAA,QACrC;AAEJ,eACE,gBAAAvB;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,MAEJ;AAEA,aACE,gBAAAA;AAAA,QAACwB;AAAA,QAAA;AAAA,UACC;AAAA,UACA,cAAc;AAAA,UACd,SACE,gBAAAxB;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN;AAAA,cACA,OAAO,iBAAiB,GAAG,KAAK,MAAM;AAAA,cACtC;AAAA,cACA,cAAc;AAAA,cACd;AAAA;AAAA,UACF;AAAA,UAGF,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,CAAC,MAAM;AACd,kBAAE,gBAAgB;AAClB,kBAAE,eAAe;AAAA,cACnB;AAAA,cACA,KAAK;AAAA,cAEJ,wBAAc;AAAA;AAAA,UACjB;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA;AAAA;;;ACjJA,SAAS,eAAAmB,cAAa,YAAAJ,iBAAgB;AAEtC,SAAS,WAAAS,UAAS,SAAAd,QAAO,kBAAAa,uBAAsB;AAuEvC,gBAAAvB,aAAA;AAzER,IAaa;AAbb;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAM,mBAAmB,CAAC,UAG3B;AACJ,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,cAAc,MAAM,eAAe,SAAS;AAElD,YAAM,CAAC,OAAO,QAAQ,IAAIe,UAAiB,WAAW;AACtD,YAAM,CAAC,cAAc,eAAe,IAAIA,UAAS,KAAK;AAEtD,YAAM,WAAW,MAAM,YAAY,MAAM;AAEzC,YAAM,EAAE,cAAc,IAAI,oBAAoB;AAC9C,YAAM,EAAE,MAAM,SAAS,IAAI,iBAAiB;AAE5C,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,EAAE,MAAM,IAAI,iBAAiB;AAAA,QACjC;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,YAAYI,aAAY,MAAM;AAClC,wBAAgB,IAAI;AAEpB,cAAM,OAAY;AAAA,UAChB,eAAe;AAAA,UACf,eAAe,MAAM;AAAA,QACvB;AAEA,sBAAc,GAAG,MAAM,aAAa,IAAI,IAAI,EACzC,KAAK,CAAC,WAAgB;AACrB,uBAAa;AACb,mBAAS,KAAK;AAAA,QAChB,CAAC,EACA,MAAM,CAAC,QAAa;AACnB,UAAAT,OAAM,MAAM,IAAI,OAAO;AACvB,wBAAc;AAAA,QAChB,CAAC,EACA,QAAQ,MAAM,gBAAgB,KAAK,CAAC;AAAA,MACzC,GAAG,CAAC,MAAM,eAAe,OAAO,aAAa,CAAC;AAE9C,YAAM,gBAAgB,MAAM;AAC1B,YAAI,CAAC,WAAW,UAAU;AACxB,iBACE,gBAAAV;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,QAAQ,eAAe,KAAK;AAAA,cAC5B;AAAA,cACA;AAAA;AAAA,UACF;AAAA,QAEJ;AAEA,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA,YAAY,CAACuB,gBAAe,YAAY,QAAQ,CAAC;AAAA;AAAA,QACnD;AAAA,MAEJ;AAEA,aACE,gBAAAvB;AAAA,QAACwB;AAAA,QAAA;AAAA,UACC;AAAA,UACA,cAAc;AAAA,UACd,SACE,gBAAAxB;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA,UAGF,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,CAAC,MAAM;AACd,kBAAE,gBAAgB;AAClB,kBAAE,eAAe;AAAA,cACnB;AAAA,cACA,KAAK;AAAA,cAEJ,wBAAc;AAAA;AAAA,UACjB;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA;AAAA;;;ACvHA,SAAa,eAAAmB,cAAa,YAAAJ,iBAAgB;AAC1C,SAAS,WAAW,eAAAuB,oBAAmB;AACvC,SAAS,kBAAAjC,uBAAsB;AAE/B,SAAS,UAAA2B,eAAc;AA6CnB,gBAAAhC,aAAA;AAjDJ,IAMa;AANb;AAAA;AAAA;AAMO,IAAM,QAA6B,CAAC,UAAU;AACnD,YAAM,EAAE,OAAO,IAAI;AACnB,YAAM,CAAC,MAAM,OAAO,IAAIe,UAAS,KAAK;AACtC,YAAM,CAAC,eAAe,EAAE,MAAM,OAAO,OAAO,WAAW,CAAC,IAAIuB,aAG1D,WAAW;AAEb,YAAM,EAAE,EAAE,IAAIjC,gBAAe;AAE7B,YAAM,WAAW,UAAU,UAAU;AACrC,YAAM,WAAWc,aAAY,MAAM;AACjC,gBAAQ,KAAK;AACb,cAAMoB,QAAoB;AAAA,UACxB,QAAQ,OAAO;AAAA,UACf,YAAY,OAAO;AAAA,UACnB,aAAa,OAAO;AAAA,UACpB,gBAAgB,OAAO;AAAA,UACvB,cAAc,OAAO;AAAA,UACrB,MAAM,OAAO;AAAA,UACb,WAAW;AAAA,QACb;AAEA,YAAI,OAAO,OAAO,gBAAgB,IAAI,OAAO,OAAO,QAAQ,GAAG;AAC7D,UAAAA,MAAK,mBAAmB;AAAA,QAC1B;AAEA,YAAI,OAAO,OAAO,gBAAgB,aAAa;AAC7C,UAAAA,MAAK,cAAc,OAAO;AAAA,QAC5B;AAEA,YAAI,OAAO,WAAW;AACpB,UAAAA,MAAK,YAAY,OAAO;AAAA,QAC1B;AAEA,YAAI,OAAO,iBAAiB;AAC1B,UAAAA,MAAK,kBAAkB,OAAO;AAAA,QAChC;AAEA,sBAAcA,KAAI;AAAA,MACpB,GAAG,CAAC,CAAC;AAEL,aACE,gBAAAvC;AAAA,QAACgC;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,SAAS;AAAA,UACT,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,UACV,SAAS,CAAC,UAAU;AAClB,gBAAI;AAAY;AAChB,kBAAM,eAAe;AACrB,kBAAM,gBAAgB;AACtB,qBAAS;AAAA,UACX;AAAA,UAEC,YAAE,sBAAsB;AAAA;AAAA,MAC3B;AAAA,IAEJ;AAAA;AAAA;;;ACjEA,SAAS,kBAAA3B,uBAAsB;AAE/B,SAAS,2BAA2B;AAUhC,gBAAAL,aAAA;AAZJ,IAMa;AANb;AAAA;AAAA;AAGA;AACA;AAEO,IAAM,kBAAkB,CAAC,UAAgC;AAC9D,YAAM,EAAE,UAAU,MAAM,IAAI,uBAAuB;AACnD,YAAM,EAAE,UAAU,QAAQ,IAAI,iBAAiB;AAC/C,YAAM,EAAE,EAAE,IAAIK,gBAAe;AAE7B,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,OAAO,EAAE,aAAa;AAAA,UACtB,WAAS;AAAA;AAAA,MACX;AAAA,IAEJ;AAAA;AAAA;;;ACrBA;AAAA,EAEE,qBAAAwC;AAAA,EACA,kBAAAtC;AAAA,OACK;AACP,SAAS,QAAAuC,OAAM,kBAAApC,wBAAsB;AACrC,SAAS,aAAAiB,kBAAiB;AAC1B,SAAS,QAAAhB,aAAY;AAiBX,SACA,OAAAN,OADA,QAAAa,aAAA;AAgDH,SAAS,kBAAkB,OAAY;AAE5C,QAAM,EAAE,kBAAkB,iBAAiB,IACzC,EAAE,eAAe,UAAU,CAAC,MAAM,QAAQ,MAAM,YAAY,IACxD,CAAC,IACD2B,mBAAkB,KAAK;AAE7B,QAAM,iBAAiB,mBACnB,GAAGC,MAAK,EAAE,SAAS,CAAC,MAAMA,MAAK,EAAE,oBAAoB,CAAC,KACtD;AACJ,QAAM,iBAAiB,mBACnB,GAAGA,MAAK,EAAE,SAAS,CAAC,MAAMA,MAAK,EAAE,oBAAoB,CAAC,KACtD;AAEJ,SAAO,EAAE,gBAAgB,eAAe;AAC1C;AAvFA,IAUa,gBAoCP;AA9CN;AAAA;AAAA;AAQA;AAEO,IAAM,iBAAiB,MAAM;AAClC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,uBAAuB;AAC3B,YAAM,EAAE,EAAE,IAAIpC,iBAAe;AAC7B,YAAM,aAAaH,gBAAe,EAAE,MAAM,MAAM,EAAE;AAClD,aACE,gBAAAW,MAAC,SACE;AAAA,SAAC,CAAC,mBACD,gBAAAA,MAAC,SAAI,WAAW,mDACd;AAAA,0BAAAA,MAACP,OAAA,EAAK,WAAW,IAAK;AAAA,eAAG,EAAE,SAAS,CAAC;AAAA,YAAK;AAAA,aAAM;AAAA,UAChD,gBAAAN;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,cACP,SAAS,WAAW;AAAA;AAAA,UACtB;AAAA,WACF,IACE;AAAA,QACH,CAAC,CAAC,mBACD,gBAAAa,MAAC,SAAI,WAAW,mDACd;AAAA,0BAAAA,MAAC,UAAK,WAAW,6BACd;AAAA,eAAG,EAAE,SAAS,CAAC;AAAA,YAAK;AAAA,aACvB;AAAA,UACA,gBAAAb;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,cACP,SAAS,WAAW;AAAA;AAAA,UACtB;AAAA,WACF,IACE;AAAA,SACN;AAAA,IAEJ;AAEA,IAAM,qBAAqB,CAAC;AAAA,MAC1B,OAAAoC;AAAA,MACA;AAAA,IACF,MAGM;AACJ,YAAM,EAAE,EAAE,IAAI/B,iBAAe;AAC7B,UAAI,CAAC+B,QAAO;AACV,eAAO;AAAA,MACT;AACA,UAAIA,WAAUd,WAAU,QAAQ;AAC9B,eAAO,gBAAAtB,MAAC,UAAM,YAAE,oBAAoB,GAAE;AAAA,MACxC;AAEA,aACE,gBAAAA;AAAA,QAACM,MAAK;AAAA,QAAL;AAAA,UACC,WAAU;AAAA,UACV,MAAM;AAAA,UACN,IAAI;AAAA,UAEH,UAAA8B;AAAA;AAAA,MACH;AAAA,IAEJ;AAAA;AAAA;;;ACtEA,SAAa,WAAAnC,gBAAe;AAC5B;AAAA,EAEE,kBAAAC;AAAA,EACA;AAAA,EACA,SAAAE;AAAA,OACK;AACP,SAAS,kBAAAC,wBAAsB;AAC/B,SAAc,iBAAAoB,sBAAqB;AACnC,SAAS,aAAAK,kBAAiB;AAC1B,SAAS,MAAAV,KAAI,QAAAd,OAAM,WAAAuB,gBAAe;AAClC,SAAS,2BAA2B;AAkBhC,gBAAA7B,OA+FU,QAAAa,aA/FV;AA7BJ,IAca,mBA2BA,kBA2KP;AApNN;AAAA;AAAA;AAYA;AAEO,IAAM,oBAAoB,MAAM;AACrC,YAAM,EAAE,kBAAkB,kBAAkB,OAAO,SAAS,IAC1D,uBAAuB;AAEzB,YAAM,eACJ,UAAU,gBAAgB,SAAS,eAAe,IAC9CiB,WAAU,MACVA,WAAU;AAChB,YAAM,eAAe,oBAAoB;AAAA,QACvC,SAAS,kBAAkB,SAAS,KAAK;AAAA,QACzC,UAAU,UAAU,iBAAiB;AAAA,QACrC,MAAM;AAAA,MACR,CAAC;AAED,aACE,gBAAA9B;AAAA,QAAC;AAAA;AAAA,UACC,eAAe;AAAA,UACf,iBAAiB;AAAA,UACjB,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAO;AAAA;AAAA,MACT;AAAA,IAEJ;AAEO,IAAM,mBASR,CAAC,UAAU;AACd,YAAM,EAAE,YAAY,OAAO,OAAO,SAAS,IAAI;AAE/C,YAAM,aAAaE,gBAAe;AAClC,YAAM,EAAE,EAAE,IAAIG,iBAAe;AAE7B,YAAM,MAAMJ,SAAQ,MAAM;AACxB,cAAM,OAAO,CAAC;AAEd,YAAI,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC;AAAU;AAE3C,YAAIF,YAAW,MAAM;AAErB,YAAIA,cAAa,GAAG;AAClB,cAAI,MAAM,eAAe,CAAC,EAAE,SAAS,kBAAkB;AACrD,YAAAA,YAAW,SAAS;AAAA,UACtB;AAAA,QACF;AAEA,YAAI,CAAC,CAAC,MAAM,iBAAiB;AAC3B,eAAK;AAAA,YACH,gBAAAC;AAAA,cAAC;AAAA;AAAA,gBAEC,KAAKD;AAAA,gBACL,OAAO,MAAM;AAAA,gBACb,YAAY,SAAS;AAAA,gBACrB,WAAW,MAAM;AAAA,gBACjB,WAAW0B,eAAc;AAAA,gBACzB,YAAY,WAAW,MAAM,MAAM,EAAE;AAAA;AAAA,cANhC;AAAA,YAOP;AAAA,UACF;AAAA,QACF;AAEA,YAAI,CAAC,CAAC,MAAM,eAAe;AACzB,eAAK;AAAA,YACH,gBAAAzB;AAAA,cAAC;AAAA;AAAA,gBAEC,KAAKD;AAAA,gBACL,OAAO,MAAM;AAAA,gBACb,YAAY,SAAS;AAAA,gBACrB,WAAW,MAAM;AAAA,gBACjB,WAAW0B,eAAc;AAAA,gBACzB,YAAY,WAAW,MAAM,MAAM,EAAE;AAAA;AAAA,cANhC;AAAA,YAOP;AAAA,UACF;AAAA,QACF;AAEA,eAAO,gBAAAzB,MAAC,SAAK,gBAAK;AAAA,MACpB,GAAG;AAAA,QACD,MAAM;AAAA,QACN,MAAM;AAAA,QACN,UAAU;AAAA,QACV,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,MACT,CAAC;AAED,YAAM,QAAQC,SAAQ,MAAM;AAC1B,cAAM,WAAW,CAAC;AAElB,YAAI,CAAC,OAAO;AAAQ,iBAAO,gBAAAD,MAAC,UAAK,eAAC;AAClC,YAAI,MAAM,iBAAiB;AACzB,mBAAS;AAAA,YACP,gBAAAA;AAAA,cAACM,MAAK;AAAA,cAAL;AAAA,gBACC,WAAWc;AAAA,kBACT;AAAA,gBACF;AAAA,gBAEA,MAAK;AAAA,gBACL,IAAI,WAAW,MAAO,MAAM,EAAE,YAAY,CAAC;AAAA,gBAC3C,UAAU,MAAM;AAAA,gBAEhB,QACE,CAAC,MAAM,iBAAiB,cAAc,WACpC,gBAAAP,MAAC,UAAK,WAAW,6BACd;AAAA,qBAAG,EAAE,SAAS,CAAC;AAAA,kBAAK;AAAA,mBACvB,IAEA;AAAA;AAAA,cAXC;AAAA,YAcP;AAAA,UACF;AAAA,QACF;AACA,YAAI,MAAM,eAAe;AACvB,mBAAS;AAAA,YACP,gBAAAb;AAAA,cAACM,MAAK;AAAA,cAAL;AAAA,gBAEC,WAAWc;AAAA,kBACT;AAAA,kBACA;AAAA,gBACF;AAAA,gBACA,IAAG;AAAA,gBACH,MAAM;AAAA,gBACN,IAAI,WAAW,MAAO,MAAM,EAAE,YAAY,CAAC;AAAA,gBAC3C,UAAU,MAAM;AAAA,gBAEhB,QACE,CAAC,MAAM,mBAAmB,cAAc,WACtC,gBAAAP,MAAC,UAAK,WAAW,6BACd;AAAA,qBAAG,EAAE,SAAS,CAAC;AAAA,kBAAK;AAAA,mBACvB,IAEA;AAAA,gBAGJ,QACE,gBAAAb;AAAA,kBAAC;AAAA;AAAA,oBACC,cAAc,MAAM;AAAA,oBACpB,WAAU;AAAA;AAAA,gBACZ;AAAA;AAAA,cAvBG;AAAA,YAyBP;AAAA,UACF;AAAA,QACF;AAEA,YAAI,SAAS,WAAW;AAAG,iBAAO,gBAAAA,MAAC,UAAK,eAAC;AAEzC,YAAI,SAAS,WAAW,KAAK,cAAc,OAAO;AAChD,mBAAS,OAAO,GAAG,GAAG,gBAAAA,MAAC,UAAmB,iBAAT,OAAU,CAAO;AAAA,QACpD;AAEA,eAAO;AAAA,MACT,GAAG;AAAA,QACD,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP;AAAA,QACA,MAAM;AAAA,MACR,CAAC;AAED,YAAM,UACJ,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAWoB;AAAA,YACT;AAAA,YACA,MAAM,cAAc,WAChB,iBACA;AAAA,YACJ,MAAM;AAAA,UACR;AAAA,UAEC;AAAA;AAAA,MACH;AAGF,UAAI,MAAM,SAAS;AAEjB,eACE,gBAAApB;AAAA,UAAC6B;AAAA,UAAA;AAAA,YAEC,SAAS;AAAA,YACT,WAAU;AAAA,YACV,OAAO,EAAE,WAAW,kBAAkB;AAAA,YAErC;AAAA;AAAA,QACH;AAAA,MAEJ;AAEA,aAAO;AAAA,IACT;AAEA,IAAM,mBAOD,CAAC,UAAU;AACd,YAAM,EAAE,KAAK,OAAAO,QAAO,YAAY,WAAW,WAAW,WAAW,IAAI;AACrE,YAAM,EAAE,EAAE,IAAI/B,iBAAe;AAE7B,YAAM,MAAMD,OAAM;AAAA,QAChB;AAAA,UACE;AAAA,UACA,OAAAgC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAEA,YAAM,OAAO,cAAcX,eAAc,cAAc,OAAO;AAC9D,YAAM,QAAQ,SAAS,OAAO,GAAG,EAAE,YAAY,CAAC,MAAM,GAAG,EAAE,YAAY,CAAC;AAIxE,aACE,gBAAAZ,MAAC,SAAI,WAAU,6BACb;AAAA,wBAAAb,MAAC,UAAK,WAAU,sCAAsC,iBAAM;AAAA,QAC5D,gBAAAA;AAAA,UAACM,MAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,IAAI,WAAW;AAAA,YACf,SAAS;AAAA,YACT,WACE,QAAQ,IACJ,8BACA,MAAM,IACJ,oCACA;AAAA,YAGR;AAAA;AAAA,cAEE,gBAAAN,MAAC,UAAM,kBAAQ,IAAI,KAAK,MAAM,IAAI,MAAM,KAAI;AAAA;AAAA,YAE9C,QACE,gBAAAA,MAAC,UAAK,WAAU,sCAAqC,kBAAI;AAAA,YAE3D,aAAG,KAAK,IAAI,GAAG,CAAC;AAAA;AAAA,QAAG;AAAA,SACvB;AAAA,IAEJ;AAAA;AAAA;;;AC1QA,SAAS,WAAAC,iBAAe;AACxB,SAAS,cAAc;AACvB,SAAsB,SAAAG,cAAa;AACnC,SAAS,kBAAAC,kBAAgB,QAAAoC,aAAY;AACrC;AAAA,EACE,qBAAAV;AAAA,EACA,iBAAAN;AAAA,EAEA,aAAAK;AAAA,EACA,eAAAY;AAAA,EACA,aAAApB;AAAA,OACK;AACP,SAAS,MAAAF,KAAY,QAAAC,OAAM,QAAAf,aAAY;AACvC,SAAS,aAAa;AACtB;AAAA,EAEE;AAAA,OACK;AACP;AAAA,EACE,mBAAA2B;AAAA,EACA,WAAA9B;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAsRG,gBAAAH,OAQA,QAAAa,aARA;AA/BV,SAAS,WAAW,QAKE;AACpB,SAAO;AAAA,IACL,OAAO4B,MAAK,EAAE,eAAe;AAAA,IAC7B,WAAW;AAAA,IACX,OAAO;AAAA;AAAA,IAEP,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ,aACZ,CAAC,IAAI,OAAO;AACV,aAAO,GAAG,OAAO,cAAc,GAAG,MAAM;AAAA,IAK1C,IACA;AAAA,IACJ,iBAAiB,CAAC,OAAe,WAAW;AAC1C,YAAM,SAAS,eAAe,MAAM,GAAG,KAAK,GAAG;AAC/C,YAAM,gBAAgB,QAAQ,SAAS,KAAK,MAAM,MAAM;AACxD,aAAO,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,QAAQ,aAAa;AAAA,IACpD;AAAA,IACA,QAAQ,CAAC,OAAe,WAAW;AACjC,YAAM,WAAW,SAAS,MAAM;AAEhC,aACE,gBAAA5B,MAACQ,OAAA,EAAK,KAAK,GACT;AAAA,wBAAArB;AAAA,UAAC;AAAA;AAAA,YACC,WAAWoB;AAAA,cACT;AAAA,cACA,OAAO,SAASU,WAAU,MACtB,wBACA;AAAA,YACN;AAAA;AAAA,QACF;AAAA,QACA,gBAAAjB,MAACQ,OAAA,EAAK,WAAU,UAAS,WAAW,SAClC;AAAA,0BAAArB;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cAEC,MAAK;AAAA,cACL,WAAU;AAAA,cACV,SAAS,CAAC,MAAM;AACd,wBAAQ,iBAAiB,EAAE,QAAQ,MAAM,CAAe;AACxD,kBAAE,gBAAgB;AAClB,kBAAE,eAAe;AAAA,cACnB;AAAA,cAEC,aAAG,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA;AAAA,UACzB;AAAA,UAEC,QAAQ,YACP,gBAAAN,MAACqB,OAAA,EAAK,WAAW,OAAO,KAAK,GAC1B,yBAAe,MAAM,GAAG,IAAI,CAAC,GAAG,UAC/B,gBAAArB;AAAA,YAAC;AAAA;AAAA,cAEC,OACE,EAAE,kBAAkB,MAAM,aACtB,WACE,YACA,YACF;AAAA,cAEN,MAAK;AAAA,cACL,WAAU;AAAA,cAET;AAAA;AAAA,YAXI;AAAA,UAYP,CACD,GACH;AAAA,WAEJ;AAAA,SACF;AAAA,IAEJ;AAAA,EACF;AACF;AAEA,SAAS,KAAK,QAIQ;AACpB,SAAO;AAAA,IACL,OAAOyC,MAAK,EAAE,aAAa;AAAA,IAC3B,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA;AAAA,IAEf,QAAQ,QAAQ,aACZ,CAAC,IAAI,IAAI,cAAc;AACrB,aAAO,GAAG,KAAK,cAAc,GAAG,IAAI;AAAA,IAKtC,IACA;AAAA,IACJ,iBAAiB,CAAC,OAAe,WAAW,qBAAqB,KAAK;AAAA,IACtE,QAAQ,CAAC,OAAe,WAAW;AACjC,YAAM,UAAU,SAAS,MAAM,IAC3B,8BACA,UAAUX,WAAU,MAClB,0BACA;AACN,aACE,gBAAA9B,MAAC,UAAK,WAAWoB,IAAG,qBAAqB,OAAO,GAC7C,+BAAqB,KAAK,GAC7B;AAAA,IAEJ;AAAA,EACF;AACF;AAmCA,SAAS,gBAAgB,QAKI;AAC3B,SAAO;AAAA,IACL,OAAOqB,MAAK,EAAE,6BAA6B;AAAA,IAC3C,WAAW;AAAA,IACX,WAAW,QAAQ;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf,QACG,QAAQ,cAAc,QACnB,CAAC,GAAG,MAAM;AACR,YAAM,aACH,EAAE,cAAcV,mBAAkB,mBAC/B,IACA,EAAE,aAAa;AACrB,YAAM,aACH,EAAE,cAAcA,mBAAkB,mBAC/B,IACA,EAAE,aAAa;AAErB,aAAO,eAAe,WAAW,SAAS;AAAA,IAM5C,IACA;AAAA,IAEN,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,UACE,OAAO,SAAST,WAAU,kBAC1B,OAAO,WAAWoB,aAAY,QAC9B;AACA,eAAOD,MAAK,EAAE,qBAAqB;AAAA,MACrC;AAEA,YAAM,WAAY,OAAwB;AAC1C,YAAM,QACJ,eAAe,UAAU,OAAO,cAAcV,mBAAkB,QAC5D,KACA,GAAG,QAAQ;AACjB,aAAO,QAAQ,GAAG,OAAO,QAAQ;AAAA,IACnC;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB;AACtC,UACE,OAAO,SAAST,WAAU,kBAC1B,OAAO,WAAWoB,aAAY,QAC9B;AACA,eAAOD,MAAK,EAAE,qBAAqB;AAAA,MACrC;AACA,aAAO,gBAAAzC,MAAC,gBAAa,OAAO,QAAQ,UAAU,QAAQ,aAAa;AAAA,IAErE;AAAA,EACF;AACF;AAEA,SAAS,SAAS,QAIW;AAC3B,SAAO;AAAA,IACL,OAAOyC,MAAK,EAAE,iBAAiB;AAAA,IAC/B,WAAW,QAAQ;AAAA,IACnB,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,QACG,QAAQ,cAAc,QACnB,CAAC,GAAG,MAAM;AACR,YAAM,aACH,EAAE,cAAcV,mBAAkB,mBAC/B,IACA,EAAE,aAAa;AACrB,YAAM,aACH,EAAE,cAAcA,mBAAkB,mBAC/B,IACA,EAAE,aAAa;AACrB,aAAO,eAAe,WAAW,SAAS;AAAA,IAK5C,IACA;AAAA,IACN,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,UAAI,OAAO,cAAcA,mBAAkB,kBAAkB;AAC3D,eAAOU,MAAK,EAAE,qBAAqB;AAAA,MACrC;AAEA,YAAM,WAAY,OAAwB;AAC1C,YAAM,QACJ,eAAe,UAAU,OAAO,cAAcV,mBAAkB,QAC5D,KACA,GAAG,QAAQ;AACjB,aAAO,QAAQ,GAAG,OAAO,QAAQ;AAAA,IACnC;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB;AACtC,UAAI,OAAO,cAAcA,mBAAkB,kBAAkB;AAC3D,eAAOU,MAAK,EAAE,qBAAqB;AAAA,MACrC;AACA,aAAO,gBAAAzC,MAAC,gBAAa,OAAO,QAAQ;AAAA,IAEtC;AAAA,EACF;AACF;AAEA,SAAS,MAAM,QAOO;AACpB,SAAO;AAAA,IACL,OAAO,QAAQ,SAASyC,MAAK,EAAE,cAAc;AAAA,IAC7C,WAAW;AAAA,IACX,WAAW,QAAQ;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf,QACG,QAAQ,cAAc,QACnB,CAAC,GAAG,GAAG,SAAS;AACd,aAAO,eAAe,EAAE,SAAS,GAAG,EAAE,SAAS,CAAC;AAAA,IAClD,IACA;AAAA,IACN,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,YAAM,iBAAiB,oBAAoB,MAAM;AACjD,UAAI,gBAAgB;AAElB,eAAO,QAAQ,gDACXA,MAAK,EAAE,oBAAoB,IAC3B,qBAAqB,MAAM,KAAK;AAAA,MACtC;AACA,aAAOR,iBAAgB,OAAO,OAAO;AAAA,QACnC,UAAUQ,MAAK,EAAE,oBAAoB;AAAA,MACvC,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB;AACtC,YAAM,iBAAiB,oBAAoB,MAAM;AACjD,UAAI,gBAAgB;AAElB,eAAO,QAAQ,gDACXA,MAAK,EAAE,oBAAoB,IAC3B,qBAAqB,MAAM,KAAK;AAAA,MACtC;AAEA,aAAO,gBAAAzC,MAAC,aAAU,OAAO,QAAQ,UAAU,QAAQ,aAAa;AAAA,IAClE;AAAA,EACF;AACF;AAEA,SAAS,UAAU,QAMG;AACpB,SAAO;AAAA,IACL,OAAO,QAAQ,SAASyC,MAAK,EAAE,cAAc;AAAA,IAC7C,WAAW;AAAA,IACX,WAAW,QAAQ;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,YAAM,EAAE,gBAAgB,eAAe,IAAI,kBAAkB,MAAM;AACnE,YAAM,WAAW,GAAG,kBAAkB,EAAE,GACtC,iBAAiB,GAAG,iBAAiB,OAAO,EAAE,GAAG,cAAc,KAAK,EACtE;AAEA,aAAO,SAAS,SAAS,IAAI,WAAW;AAAA,IAC1C;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB;AACtC,aAAO,gBAAAzC,MAAC,kBAAe;AAAA,IACzB;AAAA,EACF;AACF;AAEA,SAAS,SAAS,QAMI;AACpB,SAAO;AAAA,IACL,OAAOyC,MAAK,EAAE,iBAAiB;AAAA,IAC/B,WAAW;AAAA,IACX,WAAW,QAAQ;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,aAAOR,iBAAgB,KAAK;AAAA,IAC9B;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB;AACtC,aAAO,gBAAAjC,MAAC,YAAS,QAAQ,OAAO,QAAQ,OAAc;AAAA,IACxD;AAAA,EACF;AACF;AAEA,SAAS,aAAa,QAMA;AACpB,QAAM,EAAE,UAAU,IAAI,UAAU,CAAC;AACjC,QAAM,iBAAiB,CAAC,WAAgB;AACtC,UAAM,cAAc,QAAQ,kBAAkB;AAC9C,UAAM,iBAAiB,QAAQ,cAAc;AAC7C,WAAO,eAAe,CAAC;AAAA,EACzB;AAEA,SAAO;AAAA,IACL,OAAOyC,MAAK,EAAE,gBAAgB;AAAA,IAC9B,WAAW,QAAQ;AAAA,IACnB,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,UAAI,CAAC,eAAe,MAAM,GAAG;AAC3B,eAAO;AAAA,MACT;AACA,UAAI,oBAAoB,MAAM,KAAK,WAAW;AAC5C,eAAO,OAAO,kBACVR,iBAAgB,OAAO,eAAe,IACtC;AAAA,MACN;AACA,aAAOA,iBAAgB,KAAK;AAAA,IAC9B;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB;AACtC,UAAI,CAAC,eAAe,MAAM,GAAG;AAC3B,eAAO;AAAA,MACT;AAEA,UAAI,oBAAoB,MAAM,KAAK,WAAW;AAC5C,eACE,gBAAAjC,MAAC,oBAAiB,OAAO,QAAQ,UAAU,QAAQ,aAAa;AAAA,MAEpE;AACA,aAAO,gBAAAA,MAAC,oBAAiB,OAAO,QAAQ,UAAU,QAAQ,aAAa;AAAA,IACzE;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,QAMJ;AACpB,SAAO;AAAA,IACL,OAAO,QAAQ,SAASyC,MAAK,EAAE,gBAAgB;AAAA,IAC/C,WAAW,QAAQ;AAAA,IACnB,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,YAAM,OAAO,QAAQ,cAAc,OAAO,MAAM;AAChD,YAAM,WAAW,OAAO,UAAU;AAElC,YAAM,EAAE,kBAAkB,iBAAiB,IACzC,EAAE,eAAe,WAAW,CAAC,MAAM,QAAQ,OAAO,YAAY,IAC1D,CAAC,IACDrC,OAAM,kBAAkB,MAAM;AAEpC,YAAM,YACH,oBAAoB,OACjB,GAAGqC,MAAK,EAAE,SAAS,CAAC,KAAKR,iBAAgB,kBAAkB;AAAA,QACzD,KAAK;AAAA,QACL,QAAQ;AAAA,MACV,CAAC,CAAC,KACF,OACH,oBAAoB,OACjB,GAAG,mBAAmB,OAAO,EAAE,GAAGQ,MAAK;AAAA,QACrC;AAAA,MACF,CAAC,KAAKR,iBAAgB,kBAAkB;AAAA,QACtC,KAAK;AAAA,QACL,QAAQ;AAAA,MACV,CAAC,CAAC,KACF;AACN,aAAO,SAAS,SAAS,IAAI,WAAW;AAAA,IAC1C;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB,gBAAAjC,MAAC,qBAAkB;AAAA,EAC7D;AACF;AAEA,SAAS,kBAAkB,QAIxB;AACD,SAAO;AAAA,IACL,OAAOyC,MAAK,EAAE,aAAa;AAAA,IAC3B,WAAW,QAAQ;AAAA,IACnB,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,YAAM,sBAAsB,MAGvB;AACH,YAAI,EAAE,eAAe,WAAW,CAAC,MAAM,QAAQ,OAAO,YAAY,GAAG;AACnE,iBAAO,CAAC;AAAA,QACV;AACA,eAAOrC,OAAM,kBAAkB,OAAO,aAAa,CAAC,CAAC;AAAA,MACvD;AAEA,YAAM,EAAE,kBAAkB,iBAAiB,IAAI,oBAAoB;AAEnE,YAAM,YACH,oBAAoB,OACjB,GAAGqC,MAAK,EAAE,SAAS,CAAC,KAAK,gBAAgB,KACzC,OACH,oBAAoB,OACjB,GAAG,mBAAmB,OAAO,EAAE,GAAGA,MAAK;AAAA,QACrC;AAAA,MACF,CAAC,KAAK,gBAAgB,KACtB;AACN,aAAO,SAAS,SAAS,IAAI,WAAW;AAAA,IAC1C;AAAA,IACA,QAAQ,CAAC,OAAe,WACtB,gBAAAzC,MAAC,qBAAkB,OAAO,QAAQ;AAAA,EAEtC;AACF;AAEA,SAAS,SAAS,QAKI;AACpB,SAAO;AAAA,IACL,OAAOyC,MAAK,EAAE,iBAAiB;AAAA,IAC/B,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,QACG,QAAQ,cAAc,QACnB,CAAC,GAAG,GAAG,SAAS;AACd,YAAM,SACJ,EAAE,SAASnB,WAAU,kBACrB,EAAE,WAAWoB,aAAY,SACrB,IACA,EAAE,4BAA4B,KAC5B,OAAO,MAAM,EAAE,sBAAsB,KACrC,EAAE,2BAA2B,OAC7B,IACA,EAAE,0BAA0B,EAAE;AACtC,YAAM,SACJ,EAAE,SAASpB,WAAU,kBACrB,EAAE,WAAWoB,aAAY,SACrB,IACA,EAAE,4BAA4B,KAC5B,OAAO,MAAM,EAAE,sBAAsB,KACrC,EAAE,2BAA2B,OAC7B,IACA,EAAE,0BAA0B,EAAE;AACtC,aAAO,eAAe,QAAQ,MAAM;AAAA,IAKtC,IACA;AAAA,IACN,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,YAAMC,YAAW,cAAc,QAAQ,QAAQ,aAAa,KAAK;AAEjE,UAAIA,cAAa,mBAAmB;AAClC,eAAOF,MAAK,EAAE,qBAAqB;AAAA,MACrC;AAEA,aAAOR;AAAA,QACL,cAAc,QAAQ,QAAQ,aAAa,KAAK;AAAA,QAChD,EAAE,KAAK,EAAE;AAAA,MACX;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB;AACtC,YAAMU,YAAW,cAAc,QAAQ,QAAQ,aAAa,KAAK;AAEjE,UAAIA,cAAa,mBAAmB;AAClC,eAAOF,MAAK,EAAE,qBAAqB;AAAA,MACrC;AAEA,aACE,gBAAAzC,MAACM,MAAK,SAAL,EAAa,IAAIH,SAAQ,YAAY,IAAI,GACvC,UAAAwC,WACH;AAAA,IAEJ;AAAA,EACF;AACF;AAEA,SAAS,YAAY,QAQC;AACpB,SAAO;AAAA,IACL,OAAOF,MAAK,EAAE,oBAAoB;AAAA,IAClC,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,iBAAiB,CAAC,QAAgB,WAAgB;AAChD,YAAM,OAAO,QAAQ,cAAc,OAAO,MAAM;AAChD,YAAM,WAAW,OAAO,UAAU;AAClC,YAAM,KAAK,QAAQ,+BAA+B;AAClD,YAAM,QAAQ,IAAItC,SAAQ,UAAU,CAAC,EAClC,gBAAgB,IAAIA,SAAQ,UAAU,EACtC,SAAS;AAEZ,YAAM,cAAc8B,iBAAgB,KAAK;AAEzC,aAAO,QAAQ,IAAI,IAAI,WAAW,KAAK;AAAA,IACzC;AAAA,IACA,QAAQ,CAAC,QAA4B,WAAgB;AACnD,YAAM,EAAE,SAAS,IAAI,iBAAiB;AACtC,YAAM,KAAK,QAAQ,+BAA+B;AAClD,YAAM,QAAQ,IAAI9B,SAAQ,UAAU,CAAC,EAAE,SAAS;AAEhD,aACE,gBAAAU,MAACQ,OAAA,EAAK,KAAK,GACT;AAAA,wBAAArB;AAAA,UAACM,MAAK;AAAA,UAAL;AAAA,YACC;AAAA,YACA,IAAIH,SAAQ;AAAA,YACZ,SAAS;AAAA,YACT,YAAY,SAAS,MAAM,IAAI,KAAK;AAAA,YACpC,iBAAiB,SAAS,KAAK;AAAA,YAC/B,WAAW,SAAS,MAAM;AAAA,YAEzB,mBAAS;AAAA;AAAA,QACZ;AAAA,QACC,CAAC,QAAQ,aACR,gBAAAH;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,YACP,gBAAgB,QAAQ;AAAA,YACxB,SAAS;AAAA;AAAA,QACX;AAAA,SAEJ;AAAA,IAEJ;AAAA,EACF;AACF;AAEA,SAAS,WAAW,QAIE;AACpB,SAAO;AAAA,IACL,OAAOyC,MAAK,EAAE,uBAAuB;AAAA,IACrC,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,aAAO,QAAQA,MAAK,EAAE,YAAY,IAAIA,MAAK,EAAE,WAAW;AAAA,IAC1D;AAAA,IACA,QAAQ,CAAC,UAAmB;AAC1B,aAAO,gBAAAzC,MAACM,OAAA,EAAM,kBAAQmC,MAAK,EAAE,YAAY,IAAIA,MAAK,EAAE,WAAW,GAAE;AAAA,IACnE;AAAA,EACF;AACF;AAEA,SAAS,OAAO,QAIM;AACpB,SAAO;AAAA,IACL,OAAOA,MAAK,EAAE,sBAAsB;AAAA,IACpC,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,aAAO,UAAU,IAAIA,MAAK,EAAE,WAAW,IAAIA,MAAK,EAAE,YAAY;AAAA,IAChE;AAAA,IACA,QAAQ,CAAC,OAAe,WAAW;AACjC,aACE,gBAAAzC,MAACM,OAAA,EACE,iBAAO,qBAAqB,IACzBmC,MAAK,EAAE,WAAW,IAClBA,MAAK,EAAE,YAAY,GACzB;AAAA,IAEJ;AAAA,EACF;AACF;AAEA,SAAS,UAAU,QAKG;AACpB,SAAO;AAAA,IACL,OAAOA,MAAK,EAAE,yBAAyB;AAAA,IACvC,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,WAAW,QAAQ;AAAA,IACnB,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,YAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,YAAM,gBAAgB,OAAO,MAAM,qBAAqB;AACxD,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,CAAC,UACP,gBAAAzC;AAAA,MAACM,MAAK;AAAA,MAAL;AAAA,QACC,MAAM;AAAA,QACN,cAAc,QAAQ,gBAAgB;AAAA,QACtC,WAAU;AAAA,QAET;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,SAAS,IAAI,QAIS;AACpB,SAAO;AAAA,IACL,OAAOmC,MAAK,EAAE,YAAY;AAAA,IAC1B,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,WAAW,QAAQ;AAAA,EACrB;AACF;AAwBA,SAAS,aAAa,QAIA;AACpB,SAAO;AAAA,IACL,OAAOA,MAAK,EAAE,iBAAiB;AAAA,IAC/B,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,WAAW,QAAQ;AAAA,IACnB,iBAAiB,CAAC,OAAY,WAAgB;AAC5C,UAAI,OAAO,cAAcV,mBAAkB,kBAAkB;AAC3D,eAAOU,MAAK,EAAE,qBAAqB;AAAA,MACrC;AACA,aAAOR;AAAA,QACL,OAAO,aAAa,IAChB,OACA,GAAG,UACA,SAAS,IAAI9B,SAAQ,OAAO,UAAU,EAAE,IAAI,OAAO,QAAQ,CAAC,GAC3D,SAAS,CAAC;AAAA,MACpB;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,OAAY,WAAgB;AACnC,UAAI,OAAO,cAAc4B,mBAAkB,kBAAkB;AAC3D,eAAOU,MAAK,EAAE,qBAAqB;AAAA,MACrC;AAEA,aACE,gBAAAzC,MAACM,MAAK,SAAL,EAAa,WAAU,4DACrB,iBAAO,aAAa,IACjB,OACA,GAAG,UACA,SAAS,IAAIH,SAAQ,OAAO,UAAU,EAAE,IAAI,OAAO,QAAQ,CAAC,GAC3D,SAAS,CAAC,IACpB;AAAA,IAEJ;AAAA,EACF;AACF;AAEA,SAAS,OAAO,QAIM;AACpB,QAAM,YAAY;AAAA,IAChB,CAACuC,aAAY,GAAG,GAAGD,MAAK,EAAE,uBAAuB;AAAA,IACjD,CAACC,aAAY,MAAM,GAAGD,MAAK,EAAE,sBAAsB;AAAA,IACnD,CAACC,aAAY,cAAc,GAAGD,MAAK,EAAE,6BAA6B;AAAA,IAClE,CAACC,aAAY,SAAS,GAAGD,MAAK,EAAE,wBAAwB;AAAA,IACxD,CAACC,aAAY,QAAQ,GAAGD,MAAK,EAAE,wBAAwB;AAAA,IACvD,CAACC,aAAY,UAAU,GAAGD,MAAK,EAAE,0BAA0B;AAAA,IAC3D,CAACC,aAAY,SAAS,GAAGD,MAAK,EAAE,yBAAyB;AAAA,EAC3D;AACA,SAAO;AAAA,IACL,OAAOA,MAAK,EAAE,eAAe;AAAA,IAC7B,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,WAAW,QAAQ;AAAA,IACnB,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,YAAM3C,UAAS,SAAS,OAAO;AAC/B,aACE,UAAUA,OAAgC,KAC1C,qBAAqBA,OAAM;AAAA,IAE/B;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB;AACtC,YAAMA,UAAS,SAAS,OAAO;AAC/B,aACE,UAAUA,OAAgC,KAC1C,qBAAqBA,OAAM;AAAA,IAE/B;AAAA,EACF;AACF;AAEA,SAAS,QAAQ,QAKK;AACpB,SAAO;AAAA,IACL,OAAO2C,MAAK,EAAE,iBAAiB;AAAA,IAC/B,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,QACG,QAAQ,cAAc,QACnB,CAAC,GAAG,MAAM;AACR,aAAO;AAAA,QACL,EAAE,0BAA0B;AAAA,QAC5B,EAAE,0BAA0B;AAAA,MAC9B;AAAA,IACF,IACA;AAAA,IACN,WAAW,QAAQ;AAAA,IACnB,QAAQ,CAAC,OAAe,WAAW;AACjC,UAAI,OAAO,SAASnB,WAAU,UAAU,CAAC,OAAO;AAC9C,eAAO;AAAA,MACT;AAEA,aAAO,gBAAAtB,MAAC,YAAS,QAAQ,OAAO,QAAQ,OAAc;AAAA,IACxD;AAAA,IACA,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,aAAO,QAAQiC,iBAAgB,KAAK,IAAI;AAAA,IAC1C;AAAA,EACF;AACF;AAEA,SAAS,UAAU,QAGG;AACpB,SAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ,CAAC,GAAW,WAAgB;AAClC,UAAI,OAAO,WAAWS,aAAY,WAAW;AAC3C,eAAO,gBAAA1C,MAAC,SAAM,QAAgB;AAAA,MAChC;AAEA,UACE,OAAO,WAAW0C,aAAY,OAC9B,OAAO,gBAAgBA,aAAY,KACnC;AACA,eAAO,gBAAA1C,MAAC,gBAAa,OAAO,QAAQ;AAAA,MACtC;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,QAGP;AACpB,SAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ,CAAC,GAAW,WAAgB;AAClC,aAAO,gBAAAA,MAAC,gBAAa,OAAO,QAAQ;AAAA,IACtC;AAAA,EACF;AACF;AAEA,SAAS,WAAW,QAGE;AACpB,SAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ,CAAC,GAAW,WAAgB;AAClC,aACE,gBAAAa,MAACQ,OAAA,EAAK,KAAK,GACT;AAAA,wBAAArB,MAAC,mBAAgB,OAAO,QAAQ;AAAA,QAChC,gBAAAA,MAAC,gBAAa,OAAO,QAAQ;AAAA,SAC/B;AAAA,IAEJ;AAAA,EACF;AACF;AAEA,SAAS,eAAe,GAAW,GAAmB;AACpD,MAAI,IAAI;AAAG,WAAO;AAClB,MAAI,IAAI;AAAG,WAAO;AAClB,SAAO;AACT;AAGA,SAAS,cAAc,QAAa,WAA4B;AAC9D,MAAI,WAAW;AACb,WAAO,YAAY,MAAM,KAAK;AAAA,EAChC;AAEA,MACE,OAAO,SAASsB,WAAU,kBAC1B,OAAO,WAAWoB,aAAY,QAC9B;AACA,WAAOD,MAAK,EAAE,qBAAqB;AAAA,EACrC;AAEA,SAAO,OAAO,4BAA4B,KACxC,OAAO,MAAM,OAAO,sBAAsB,KAC1C,OAAO,2BAA2B,OAChC,OACA,GAAG,OAAO,0BAA0B,OAAO,sBAAsB;AACvE;AAEA,SAAS,iBAAiB,QAKJ;AACpB,SAAO;AAAA,IACL,OAAO,QAAQ,SAASA,MAAK,EAAE,qBAAqB;AAAA,IACpD,WAAW;AAAA,IACX,WAAW,QAAQ;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf,iBAAiB,CAAC,OAAe,WAAgB;AAC/C,YAAM,EAAE,gBAAgB,cAAc,IAAI;AAC1C,YAAM,MACJ,mBAAmB,gBAAgB,GAAG,gBAAgB,GAAG,MAAM;AACjE,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IACA,QAAQ,CAAC,OAAe,WAAgB;AACtC,UAAI,oBAAoB,MAAM,GAAG;AAC/B,eACE,gBAAAzC,MAAC,wBAAqB,OAAO,QAAQ,UAAU,QAAQ,aAAa;AAAA,MAExE;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAlsCA,IA+Ca;AA/Cb;AAAA;AAAA;AAwBA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAM,iBAAiB,CAAC,UAMzB;AACJ,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAE7B,YAAM,UAAUJ,UAAQ,MAAM;AAC5B,gBAAQ,OAAO;AAAA,UACb;AACE,mBAAO;AAAA,cACL,WAAW;AAAA,gBACT,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV;AAAA,gBACA,YAAY;AAAA,cACd,CAAC;AAAA,cACD,KAAK,EAAE,OAAO,IAAI,CAAC;AAAA,cACnB,gBAAgB;AAAA,gBACd,OAAO;AAAA,gBACP,aAAa;AAAA,gBACb,WAAW;AAAA,gBACX,YAAY;AAAA,cACd,CAAC;AAAA,cACD,MAAM;AAAA,gBACJ,OAAO;AAAA,gBACP,OAAO,EAAE,mBAAmB;AAAA,gBAC5B,aAAa;AAAA,gBACb,YAAY;AAAA,cACd,CAAC;AAAA,cACD,QAAQ,EAAE,OAAO,KAAK,YAAY,OAAO,YAAY,CAAC;AAAA,cACtD,iBAAiB,EAAE,OAAO,KAAK,aAAa,MAAM,YAAY,CAAC;AAAA,cAC/D,YAAY;AAAA,gBACV,OAAO;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA,aAAa,MAAM;AAAA,gBACnB,WAAW;AAAA,cACb,CAAC;AAAA,cACD,SAAS,EAAE,OAAO,KAAK,YAAY,MAAM,CAAC;AAAA,cAC1C,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,cAClB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,cACzB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,UAAU,EAAE,OAAO,IAAI,CAAC;AAAA,cACxB,UAAU,EAAE,OAAO,KAAK,YAAY,MAAM,CAAC;AAAA,YAC7C;AAAA,UACF;AACE,mBAAO;AAAA,cACL,WAAW;AAAA,gBACT,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV;AAAA,gBACA,YAAY;AAAA,cACd,CAAC;AAAA;AAAA,cAED,gBAAgB;AAAA,gBACd,OAAO;AAAA,gBACP,WAAW;AAAA,gBACX,YAAY;AAAA,cACd,CAAC;AAAA,cACD,MAAM,EAAE,OAAO,KAAK,WAAW,YAAY,YAAY,MAAM,CAAC;AAAA,cAC9D,iBAAiB,EAAE,OAAO,IAAI,CAAC;AAAA,cAC/B,aAAa,EAAE,OAAO,KAAK,WAAW,YAAY,WAAW,KAAK,CAAC;AAAA,cACnE,kBAAkB,EAAE,OAAO,IAAI,CAAC;AAAA,cAChC,SAAS,EAAE,OAAO,KAAK,WAAW,KAAK,CAAC;AAAA,cACxC,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,cACzB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,UAAU,EAAE,OAAO,KAAK,YAAY,MAAM,CAAC;AAAA,cAC3C,oBAAoB,EAAE,OAAO,GAAG,CAAC;AAAA,YACnC;AAAA,UACF;AACE,mBAAO;AAAA,cACL,WAAW;AAAA,gBACT,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV;AAAA,gBACA,YAAY;AAAA,cACd,CAAC;AAAA;AAAA,cAED,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,cACvB,iBAAiB,EAAE,OAAO,KAAK,YAAY,CAAC;AAAA,cAC5C,UAAU,EAAE,OAAO,KAAK,aAAa,KAAK,CAAC;AAAA,cAC3C,aAAa,EAAE,OAAO,IAAI,CAAC;AAAA,cAC3B,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,cACzB,UAAU,EAAE,OAAO,KAAK,YAAY,MAAM,CAAC;AAAA,cAC3C,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,YAC3B;AAAA,UACF;AACE,mBAAO;AAAA,cACL,WAAW;AAAA,gBACT,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP;AAAA,cACF,CAAC;AAAA;AAAA;AAAA,cAGD,gBAAgB;AAAA,gBACd,OAAO;AAAA,gBACP,aAAa;AAAA,gBACb,WAAW;AAAA,cACb,CAAC;AAAA,cACD,MAAM;AAAA,gBACJ,OAAO;AAAA,gBACP,OAAO,EAAE,mBAAmB;AAAA,gBAC5B,aAAa;AAAA,cACf,CAAC;AAAA,cACD,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,cACvB,aAAa,EAAE,OAAO,KAAK,aAAa,KAAK,CAAC;AAAA,cAC9C,YAAY;AAAA,gBACV,OAAO;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,WAAW;AAAA,cACb,CAAC;AAAA,cACD,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,cACvB,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,cAClB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,cACzB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,UAAU,EAAE,OAAO,IAAI,CAAC;AAAA,YAC1B;AAAA,UACF;AACE,mBAAO;AAAA,cACL,WAAW;AAAA,gBACT,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP;AAAA,gBACA,YAAY;AAAA,cACd,CAAC;AAAA;AAAA,cAED,gBAAgB;AAAA,gBACd,OAAO;AAAA,gBACP,aAAa;AAAA,gBACb,WAAW;AAAA,gBACX,YAAY;AAAA,cACd,CAAC;AAAA,cACD,MAAM,EAAE,OAAO,KAAK,aAAa,MAAM,YAAY,MAAM,CAAC;AAAA,cAC1D,QAAQ,EAAE,OAAO,KAAK,YAAY,MAAM,CAAC;AAAA,cACzC,aAAa,EAAE,OAAO,KAAK,aAAa,KAAK,CAAC;AAAA,cAC9C,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,cACvB,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,cAClB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,cACzB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,YACvB;AAAA,UACF;AACE,mBAAO;AAAA,cACL,WAAW;AAAA,gBACT,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP;AAAA,cACF,CAAC;AAAA;AAAA,cAED,gBAAgB;AAAA,gBACd,OAAO;AAAA,gBACP,aAAa;AAAA,gBACb,WAAW;AAAA,cACb,CAAC;AAAA,cACD,MAAM,EAAE,OAAO,KAAK,aAAa,KAAK,CAAC;AAAA,cACvC,QAAQ,EAAE,OAAO,IAAI,CAAC;AAAA,cACtB,aAAa,EAAE,OAAO,KAAK,aAAa,KAAK,CAAC;AAAA,cAC9C,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,cACvB,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,cAClB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,cACzB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,UAAU,EAAE,OAAO,IAAI,CAAC;AAAA,YAC1B;AAAA,UACF;AACE,mBAAO;AAAA,cACL,WAAW;AAAA,gBACT,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP;AAAA,cACF,CAAC;AAAA;AAAA,cAED,gBAAgB;AAAA,gBACd,OAAO;AAAA,gBACP,aAAa;AAAA,gBACb,WAAW;AAAA,cACb,CAAC;AAAA,cACD,MAAM;AAAA,gBACJ,OAAO;AAAA,gBACP,aAAa;AAAA,gBACb;AAAA,cACF,CAAC;AAAA,cACD,QAAQ,EAAE,OAAO,IAAI,CAAC;AAAA,cACtB,aAAa,EAAE,OAAO,KAAK,aAAa,KAAK,CAAC;AAAA,cAC9C,YAAY;AAAA,gBACV,OAAO;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA,aAAa,MAAM;AAAA,gBACnB,WAAW;AAAA,cACb,CAAC;AAAA,cACD,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,cACvB,iBAAiB,EAAE,OAAO,KAAK,aAAa,KAAK,CAAC;AAAA,cAClD,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,cAClB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,cACzB,OAAO,EAAE,OAAO,IAAI,CAAC;AAAA,cACrB,UAAU,EAAE,OAAO,IAAI,CAAC;AAAA,cACxB,UAAU,EAAE,OAAO,GAAG,CAAC;AAAA,YACzB;AAAA,QACJ;AAAA,MACF,GAAG,CAAC,OAAO,6BAA6B,gBAAgB,CAAC,CAAC;AAE1D,aAAO;AAAA,IAGT;AAAA;AAAA;;;AC5QA;AAAA,EAIE,eAAAkB;AAAA,EACA,WAAAlB;AAAA,EACA,YAAAc;AAAA,OACK;AACP,SAAS,uBAAA6B,4BAA2B;AACpC,SAAS,kBAAAvC,wBAAsB;AAC/B;AAAA,EACE,qBAAA0B;AAAA,EAEA,eAAAW;AAAA,EACA,aAAApB;AAAA,OACK;AACP,SAAS,aAAAQ,kBAAiB;AAC1B;AAAA,EACE,SAAAe;AAAA,EACA,MAAAzB;AAAA,EACA,QAAAC;AAAA,EACA;AAAA,EACA,QAAAf;AAAA,EACA,WAAAuB;AAAA,OACK;AACP,SAAS,6BAA6B;AACtC,SAAS,uBAAAiB,4BAA2B;AACpC,SAAS,WAAA3C,UAAS,wBAAA4C,6BAA4B;AAuBtC,gBAAA/C,OAsJA,QAAAa,aAtJA;AAlDR,IAqCa,aA2BA,eA+BA,WAeA,YA0BA,KA6BA,QA0DA,UA2CA,cAuDA,WAyBA,YAyCA,WAkDA,WA6DA,SAmCA,SAoCA,cAuCAmC,WA4BA,YA6BA,aAyCA,eA0BA,KAcA,kBA+BA;AAzwBb;AAAA;AAAA;AA4BA;AAKA;AACA;AAGO,IAAM,cAAkC,CAAC,UAAU;AACxD,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,QAAQ,KAAK,SAASlB,WAAU;AACtC,YAAM,EAAE,EAAE,IAAIzB,iBAAe;AAE7B,aACE,gBAAAL;AAAA,QAACM,MAAK;AAAA,QAAL;AAAA,UACC,WAAW;AAAA,UACX,MAAK;AAAA,UACL,cAAa;AAAA,UACb,MAAK;AAAA,UAEL,QACE,gBAAAN,MAAC6C,QAAA,EAAM,OAAO,QAAQ,YAAY,UAAU,MAAK,MAC9C,kBAAQ,EAAE,YAAY,IAAI,EAAE,aAAa,GAC5C;AAAA,UAEF,SAAS,MAAM;AACb,kBAAM,iBAAiB,EAAE,QAAQ,KAAK,OAAO,CAAe;AAAA,UAC9D;AAAA,UAGC,eAAK;AAAA;AAAA,MACR;AAAA,IAEJ;AAEO,IAAM,gBAAoC,CAAC,UAAU;AAC1D,YAAM,EAAE,KAAK,IAAI;AAEjB,YAAM,YAAY1B,aAAY,MAAM;AAClC,cAAM,OACJ,OAAO,KAAK,SAAS,WACjB,KAAK,KAAK,QAAQ,UAAU,EAAE,EAAE,YAAY,IAC5C,KAAK;AACX,cAAM,cACJ,KAAK,iBAAiB,KAAK,cAAcY,mBAAkB;AAC7D,YAAI,aAAa;AACf,iBAAO,QAAQ,IAAI;AAAA,QACrB;AACA,eAAO,qBAAqB,KAAK,IAAI;AAAA,MACvC,GAAG,CAAC,IAAI,CAAC;AAET,aACE,gBAAA/B,MAACqB,OAAA,EAAK,WAAW,OAAO,KAAK,GAC1B,yBAAe,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,UACnC,gBAAArB;AAAA,QAAC6C;AAAA,QAAA;AAAA,UAEC,OAAO,EAAE,kBAAkB,MAAM,aAAa,YAAY;AAAA,UAC1D,MAAK;AAAA,UAEJ;AAAA;AAAA,QAJI;AAAA,MAKP,CACD,GACH;AAAA,IAEJ;AAEO,IAAM,YAAgC,CAAC,UAAU;AACtD,YAAM,EAAE,KAAK,IAAI;AAEjB,aACE,gBAAA7C;AAAA,QAACM,MAAK;AAAA,QAAL;AAAA,UACC,MAAM;AAAA,UACN,cAAa;AAAA,UACb,WAAW;AAAA,UACX,MAAK;AAAA,UAEJ,eAAK;AAAA;AAAA,MACR;AAAA,IAEJ;AAEO,IAAM,aAAiC,CAAC,UAAU;AACvD,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAID,iBAAe;AAE7B,YAAMP,UAAS,KAAK,UAAU,KAAK;AAEnC,YAAM,YAAYG,UAAQ,MAAM;AAC9B,eAAO;AAAA,UACL,CAACyC,aAAY,GAAG,GAAG,EAAE,uBAAuB;AAAA,UAC5C,CAACA,aAAY,MAAM,GAAG,EAAE,sBAAsB;AAAA,UAC9C,CAACA,aAAY,cAAc,GAAG,EAAE,6BAA6B;AAAA,UAC7D,CAACA,aAAY,SAAS,GAAG,EAAE,wBAAwB;AAAA,UACnD,CAACA,aAAY,QAAQ,GAAG,EAAE,wBAAwB;AAAA,UAClD,CAACA,aAAY,UAAU,GAAG,EAAE,0BAA0B;AAAA,UACtD,CAACA,aAAY,SAAS,GAAG,EAAE,yBAAyB;AAAA,QACtD;AAAA,MACF,GAAG,CAAC,CAAC,CAAC;AAEN,aACE,gBAAA1C,MAACM,MAAK,WAAL,EAAe,WAAW,IAAI,MAAK,OACjC,oBAAUR,OAAgC,KACzC,qBAAqBA,OAAM,GAC/B;AAAA,IAEJ;AAEO,IAAM,MAA0B,CAAC,UAAU;AAChD,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAIO,iBAAe;AAC7B,YAAM,mBACJ,KAAK,SAASiB,WAAU;AAAA,MAExB,MAAM,WAAWoB,aAAY;AAE/B,aACE,gBAAA1C;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,YAAY;AAAA,UACrB,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEA,0BAAAA;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,SAAS;AAAA,cACT,UAAQ;AAAA,cACR,aAAa,EAAE,qBAAqB;AAAA,cACpC,WAAW;AAAA,cAEV,6BAAmB,EAAE,qBAAqB,IAAI,KAAK;AAAA;AAAA,UACtD;AAAA;AAAA,MACF;AAAA,IAEJ;AAEO,IAAM,SAA6B,CAAC,UAAU;AACnD,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAID,iBAAe;AAE7B,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,gBAAAA,MAACM,OAAA,EAAM,YAAE,sBAAsB,GAAE;AAAA,UACxC,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEA,0BAAAN;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,WAAW;AAAA,cACX,SAAS;AAAA,cACT,IAAIH,SAAQ;AAAA,cAKX,eAAK;AAAA;AAAA,UACR;AAAA;AAAA,MACF;AAAA,IAEJ;AAiCO,IAAM,WAA+B,CAAC,UAAU;AACrD,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAIE,iBAAe;AAE7B,YAAM,QAAQJ,UAAQ,MAAM,YAAY,IAAI,GAAG,CAAC,KAAK,OAAO,KAAK,QAAQ,CAAC;AAE1E,YAAM,iBAAiB,MAAM;AAC3B,YAAI,OAAO;AACT,iBACE,gBAAAD;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,UAAQ;AAAA,cACR,WAAW;AAAA,cACX,SAAS;AAAA,cACT,IAAIH,SAAQ;AAAA,cAEX;AAAA;AAAA,UACH;AAAA,QAEJ;AAEA,eAAO;AAAA,MACT;AAEA,aACE,gBAAAH;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,OACE,gBAAAa,MAACP,OAAA,EACE;AAAA,cAAE,iBAAiB;AAAA,YACpB,gBAAAN,MAACM,OAAA,EAAK,WAAW,IAAI,oBAAM;AAAA,aAC7B;AAAA,UAEF,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEC,yBAAe;AAAA;AAAA,MAClB;AAAA,IAEJ;AAEO,IAAM,eAKT,CAAC,UAAU;AACb,YAAM,EAAE,MAAM,UAAU,IAAI;AAC5B,YAAM,EAAE,EAAE,IAAID,iBAAe;AAE7B,YAAM,iBAAiB,MAAM,cAAc0B,mBAAkB;AAE7D,YAAM,iBAAiB,MAAM;AAC3B,YAAI,kBAAkB,aAAa,KAAK,iBAAiB;AACvD,iBACE,gBAAA/B;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,WAAW;AAAA,cACX,SAAS;AAAA,cACT,IAAIH,SAAQ;AAAA,cAEX,eAAK;AAAA;AAAA,UACR;AAAA,QAEJ;AAEA,YAAI,KAAK,eAAe;AACtB,iBACE,gBAAAH;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,WAAW;AAAA,cACX,SAAS;AAAA,cACT,IAAIH,SAAQ;AAAA,cAEX,eAAK;AAAA;AAAA,UACR;AAAA,QAEJ;AAEA,eAAO;AAAA,MACT;AAEA,aACE,gBAAAH;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,iBAAiB,EAAE,gBAAgB,IAAI,EAAE,qBAAqB;AAAA,UACrE,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA,OAAO,MAAM;AAAA,UAEZ,yBAAe;AAAA;AAAA,MAClB;AAAA,IAEJ;AAEO,IAAM,YAAgC,CAAC,UAAU;AACtD,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAE7B,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,kBAAkB;AAAA,UAC3B,OAAM;AAAA,UACN,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEA,0BAAAA;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,IAAIH,SAAQ;AAAA,cACZ,WAAW;AAAA,cACX,SAAS;AAAA,cAER,eAAK;AAAA;AAAA,UACR;AAAA;AAAA,MACF;AAAA,IAEJ;AAEO,IAAM,aAAiC,CAAC,UAAU;AACvD,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAIE,iBAAe;AAE7B,YAAM,cAAc,MAAM,kBAAkB;AAC5C,YAAM,iBAAiB,MAAM,cAAc0B,mBAAkB;AAC7D,YAAM,eAAe,MAAM,SAAS,YAAY;AAEhD,YAAM,iBAAiB,MAAM;AAC3B,YAAI,gBAAgB;AAClB,iBAAO;AAAA,QACT;AACA,YAAI,cAAc;AAChB,iBAAO,gBAAA/B,MAACM,OAAA,EAAM,YAAE,oBAAoB,GAAE;AAAA,QACxC;AAEA,eACE,gBAAAN;AAAA,UAACM,MAAK;AAAA,UAAL;AAAA,YACC,IAAI,MAAM;AAAA,YACV,IAAIH,SAAQ;AAAA,YACZ,WAAW;AAAA,YACX,SAAS;AAAA,YAER,eAAK,SAAS;AAAA;AAAA,QACjB;AAAA,MAEJ;AAEA,aACE,gBAAAH;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,mBAAmB;AAAA,UAC5B,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEC,yBAAe;AAAA;AAAA,MAClB;AAAA,IAEJ;AAEO,IAAM,YAAgC,CAAC,UAAU;AACtD,YAAM,EAAE,kBAAkB,MAAM,IAAI,uBAAuB;AAC3D,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAE7B,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,gBAAgB;AAAA,UACzB,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEA,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SACE,SACE,gBAAAA;AAAA,gBAACM,MAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,gBAAc;AAAA,kBAEd,QAAQ,gBAAAO,MAACP,OAAA,EAAK,WAAW,IAAK;AAAA,uBAAG,EAAE,YAAY,CAAC;AAAA,oBAAI;AAAA,qBAAM;AAAA,kBAC1D,QAAQ,gBAAAN,MAACM,OAAA,EAAK,WAAW,IAAI,sBAAU;AAAA,kBACvC,UAAQ;AAAA,kBAEP;AAAA;AAAA,cACH;AAAA,cAGJ,YAAY;AAAA,gBACV,SAAS;AAAA,gBACT,OAAO;AAAA,cACT;AAAA,cAEA,0BAAAN;AAAA,gBAACM,MAAK;AAAA,gBAAL;AAAA,kBACC,IAAI,MAAM;AAAA,kBACV,IAAIH,SAAQ;AAAA,kBACZ,OAAM;AAAA,kBACN,SAAS;AAAA,kBACT,WACE,mBACI,+DACA;AAAA,kBAGL,8BAAoB;AAAA;AAAA,cACvB;AAAA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,IAEJ;AAEO,IAAM,YAAgC,CAAC,UAAU;AACtD,YAAM,EAAE,kBAAkB,OAAO,UAAU,KAAK,IAAI,uBAAuB;AAC3E,YAAM,EAAE,EAAE,IAAIE,iBAAe;AAE7B,YAAM4C,SAAQ,MAAM,gBAAgB,KAAK,IAAInB,WAAU,MAAMA,WAAU;AACvE,YAAM,eAAec,qBAAoB;AAAA,QACvC,SAAS,kBAAkB,SAAS,KAAK;AAAA,QACzC,UAAU,MAAM,iBAAiB;AAAA,QACjC,MAAMK;AAAA,MACR,CAAC;AAED,aACE,gBAAAjD;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,gBAAgB;AAAA,UACzB,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEA,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SACE,SACE,gBAAAA;AAAA,gBAACM,MAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBAEL,QACE,gBAAAO,MAACP,OAAA,EAAK,WAAW,IAAK;AAAA,uBAAG,EAAE,YAAY,CAAC;AAAA,oBAAI;AAAA,qBAAY;AAAA,kBAE1D,QAAQ,gBAAAN,MAACM,OAAA,EAAK,WAAW,IAAI,sBAAU;AAAA,kBACvC,UAAQ;AAAA,kBAEP;AAAA;AAAA,cACH;AAAA,cAGJ,YAAY;AAAA,gBACV,SAAS;AAAA,gBACT,OAAO;AAAA,cACT;AAAA,cAEA,0BAAAN;AAAA,gBAACM,MAAK;AAAA,gBAAL;AAAA,kBACC,IAAI,MAAM;AAAA,kBACV,IAAG;AAAA,kBACH,IAAIH,SAAQ;AAAA,kBACZ,OAAM;AAAA,kBACN,SAAS;AAAA,kBACT,QAAQ,gBAAAH,MAAC8C,sBAAA,EAAoB,cAA4B;AAAA,kBACzD,WAAW1B;AAAA,oBACT,mBACI,+DACA;AAAA,oBACJ;AAAA,kBACF;AAAA,kBAEC,8BAAoB;AAAA;AAAA,cACvB;AAAA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,IAEJ;AAEO,IAAM,UAA8B,CAAC,UAAU;AACpD,YAAM,EAAE,EAAE,IAAIf,iBAAe;AAC7B,YAAM,EAAE,eAAe,IAAI,uBAAuB;AAElD,YAAM,mBAAmBJ,UAAQ,MAAM;AACrC,YAAI,mBAAmB,QAAW;AAChC,iBAAO,gBAAAD,MAACM,OAAA,EAAK,gBAAE;AAAA,QACjB;AACA,YAAI,mBAAmBgB,WAAU,QAAQ;AACvC,iBAAO,gBAAAtB,MAACM,OAAA,EAAM,YAAE,oBAAoB,GAAE;AAAA,QACxC;AACA,eACE,gBAAAN;AAAA,UAACM,MAAK;AAAA,UAAL;AAAA,YACC,IAAI,MAAM;AAAA,YACV,IAAIH,SAAQ;AAAA,YACZ,WAAW;AAAA,YACX,SAAS;AAAA,YAER;AAAA;AAAA,QACH;AAAA,MAEJ,GAAG,CAAC,cAAc,CAAC;AAEnB,aACE,gBAAAH;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,cAAc;AAAA,UACvB,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,IAEJ;AACO,IAAM,UAA8B,CAAC,UAAU;AACpD,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAC7B,YAAM,EAAE,eAAe,IAAI,uBAAuB;AAElD,YAAM,mBAAmBJ,UAAQ,MAAM;AACrC,YAAI,mBAAmB,QAAW;AAChC,iBAAO,gBAAAD,MAACM,OAAA,EAAK,gBAAE;AAAA,QACjB;AACA,YAAI,mBAAmBgB,WAAU,QAAQ;AACvC,iBAAO,gBAAAtB,MAACM,OAAA,EAAM,YAAE,oBAAoB,GAAE;AAAA,QACxC;AACA,eACE,gBAAAN;AAAA,UAACM,MAAK;AAAA,UAAL;AAAA,YACC,IAAI,MAAM;AAAA,YACV,IAAIH,SAAQ;AAAA,YACZ,WAAW;AAAA,YACX,SAAS;AAAA,YAER;AAAA;AAAA,QACH;AAAA,MAEJ,GAAG,CAAC,cAAc,CAAC;AAEnB,aACE,gBAAAH;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,cAAc;AAAA,UACvB,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,IAEJ;AAEO,IAAM,eAAmC,CAAC,UAAU;AACzD,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAE7B,YAAMN,YAAWE,UAAQ,MAAM;AAC7B,YAAI,KAAK,cAAc8B,mBAAkB,kBAAkB;AACzD,iBACE,gBAAA/B,MAAC,UAAK,WAAU,6BACb,YAAE,qBAAqB,GAC1B;AAAA,QAEJ;AAEA,eACE,gBAAAA;AAAA,UAACM,MAAK;AAAA,UAAL;AAAA,YACC,IAAI,MAAM;AAAA,YACV,IAAIH,SAAQ;AAAA,YACZ,WAAW;AAAA,YACX,SAAS;AAAA,YAER,eAAK;AAAA;AAAA,QACR;AAAA,MAEJ,GAAG,CAAC,MAAM,CAAC,CAAC;AAEZ,aACE,gBAAAH;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,iBAAiB;AAAA,UAC1B,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA,OAAM;AAAA,UAEL,UAAAD;AAAA;AAAA,MACH;AAAA,IAEJ;AAEO,IAAMiD,YAA+B,CAAC,UAAU;AACrD,YAAM,EAAE,EAAE,IAAI3C,iBAAe;AAC7B,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,OACE,gBAAAa,MAACP,OAAA,EACE;AAAA,cAAE,iBAAiB;AAAA,YACpB,gBAAAN,MAACM,OAAA,EAAK,WAAW,IAAI,oBAAM;AAAA,aAC7B;AAAA,UAEF,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEA,0BAAAN;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,IAAIH,SAAQ;AAAA,cACZ,WAAW;AAAA,cACX,SAAS;AAAA,cAGR,gBAAM,MAAM,0BAA0B;AAAA;AAAA,UACzC;AAAA;AAAA,MACF;AAAA,IAEJ;AAEO,IAAM,aAAiC,CAAC,UAAU;AACvD,YAAM,EAAE,EAAE,IAAIE,iBAAe;AAC7B,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,OACE,gBAAAa,MAACP,OAAA,EACE;AAAA,cAAE,mBAAmB;AAAA,YACtB,gBAAAN,MAACM,OAAA,EAAK,WAAW,IAAI,oBAAM;AAAA,aAC7B;AAAA,UAEF,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEA,0BAAAN;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,IAAIH,SAAQ;AAAA,cACZ,WAAW;AAAA,cACX,SAAS;AAAA,cACT,aAAa,EAAE,oBAAoB;AAAA,cAGlC,gBAAM,MAAM,SAAS;AAAA;AAAA,UACxB;AAAA;AAAA,MACF;AAAA,IAEJ;AAEO,IAAM,cAAkC,CAAC,UAAU;AAExD,YAAM,QAAQ,OAAO,MAAM;AAC3B,YAAM,EAAE,EAAE,IAAIE,iBAAe;AAE7B,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,OACE,gBAAAa,MAACP,OAAA,EACE;AAAA,cAAE,oBAAoB;AAAA,YACvB,gBAAAN,MAACM,OAAA,EAAK,WAAW,IAAI,oBAAM;AAAA,aAC7B;AAAA,UAEF,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA,OAAM;AAAA,UAEN,0BAAAO,MAACQ,OAAA,EAAK,KAAK,GACT;AAAA,4BAAArB;AAAA,cAACM,MAAK;AAAA,cAAL;AAAA,gBACC,IAAI,MAAM;AAAA,gBACV,IAAIH,SAAQ;AAAA,gBACZ,SAAS;AAAA,gBACT,YAAY,SAAS,MAAM,IAAI,KAAK;AAAA,gBACpC,iBAAiB,SAAS,KAAK;AAAA,gBAC/B,WAAW,SAAS,MAAM;AAAA,gBAEzB,mBAAS;AAAA;AAAA,YACZ;AAAA,YACA,gBAAAH;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,MAAM;AAAA,gBACb,gBAAgB,MAAM;AAAA,gBACtB,SAAS;AAAA,gBACT,UAAU;AAAA;AAAA,YACZ;AAAA,aACF;AAAA;AAAA,MACF;AAAA,IAEJ;AAEO,IAAM,gBAQT,CAAC,UAAU;AACb,YAAM,EAAE,YAAY,QAAQ,IAAI;AAChC,YAAM,CAAC,MAAM,OAAO,IAAIe,WAAS,KAAK;AACtC,UAAI,OAAO,YAAY;AAAa,eAAO,MAAM;AACjD,aACE,gBAAAf;AAAA,QAAC6B;AAAA,QAAA;AAAA,UAEC;AAAA,UACA,WAAW,YAAY;AAAA,UACvB;AAAA,UACA,cAAc;AAAA,UACd,OAAO,EAAE,WAAW,YAAY,MAAM;AAAA,UAEtC,0BAAA7B,MAAC,SAAI,SAAS,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAI,gBAAM,UAAS;AAAA;AAAA,MAC1D;AAAA,IAEJ;AAEO,IAAM,MAA0B,CAAC,UAAU;AAChD,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAC7B,aACE,gBAAAQ,MAACQ,OAAA,EAAK,SAAQ,OAAM,MAAM,GAAG,IAAI,GAC/B;AAAA,wBAAAR,MAACP,OAAA,EAAK,MAAK,OAAM,WAAW,IACzB;AAAA,YAAE,YAAY;AAAA,UAAE;AAAA,WACnB;AAAA,QACA,gBAAAN,MAACM,OAAA,EAAK,MAAK,OAAM,WAAW,IACzB,gBAAM,MAAM,aAAa,MAC5B;AAAA,SACF;AAAA,IAEJ;AAEO,IAAM,mBAAuC,CAAC,UAAU;AAC7D,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAID,iBAAe;AAE7B,YAAM,EAAE,gBAAgB,cAAc,IAAI;AAE1C,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,qBAAqB;AAAA,UAC9B,OAAM;AAAA,UACN,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEC,0BACC,gBAAAA,MAACM,OAAA,EAAK,WAAW,IAAK,aAAG,gBAAgB,GAAG,KAAI,IAEhD,gBAAAN;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,IAAIH,SAAQ;AAAA,cACZ,WAAW;AAAA,cACX,SAAS;AAAA,cAER,4BAAkB;AAAA;AAAA,UACrB;AAAA;AAAA,MAEJ;AAAA,IAEJ;AAEO,IAAM,gBAAoC,CAAC,UAAU;AAC1D,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAIE,iBAAe;AAE7B,YAAM,QAAQJ,UAAQ,MAAM;AAC1B,eAAO8C,sBAAqB,IAAI;AAAA,MAClC,GAAG,CAAC,IAAI,CAAC;AAET,aACE,gBAAA/C;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,cAAc;AAAA,UACvB,OAAM;AAAA,UACN,YAAY;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UAEC,kBACC,gBAAAA;AAAA,YAACM,MAAK;AAAA,YAAL;AAAA,cACC,IAAI,MAAM;AAAA,cACV,IAAIH,SAAQ;AAAA,cACZ,WAAW;AAAA,cACX,SAAS;AAAA,cAER;AAAA;AAAA,UACH,IAEA;AAAA;AAAA,MAEJ;AAAA,IAEJ;AAAA;AAAA;;;ACvyBA,SAAS,kBAAAE,wBAAsB;AAC/B,SAAS,MAAAe,KAAI,YAAA8B,WAAU,QAAA7B,OAAM,QAAAf,OAAM,SAAAC,cAAa;AAChD,SAAS,WAAAJ,gBAAe;AAayC,qBAAA+B,WAAA,OAAAlC,OAe/C,QAAAa,cAf+C;AAhBjE,IAOasC,oBAmFPC;AA1FN;AAAA;AAAA;AAIA;AAGO,IAAMD,qBAAgD,CAAC,UAAU;AACtE,YAAM,EAAE,EAAE,IAAI9C,iBAAe;AAE7B,YAAM,SAAS,MAAM;AACnB,QAAAE,OAAM,KAAK,2BAA2B;AAAA,UACpC,OAAO,MAAM;AAAA,QACf,CAAC;AAAA,MACH;AAEA,UAAI,CAAC,MAAM,oBAAoB,CAAC,MAAM;AAAkB,eAAO,gBAAAP,MAAAkC,WAAA,EAAE;AAEjE,aACE,gBAAArB,OAACQ,OAAA,EAAK,KAAK,GAAG,WAAW,UAAU,SAAS,SAC1C;AAAA,wBAAArB;AAAA,UAAC;AAAA;AAAA,YACC,YAAY;AAAA,cACV,SAAS;AAAA,cACT,OAAO;AAAA,YACT;AAAA,YACA,SACE,gBAAAa,OAACQ,OAAA,EAAK,WAAW,UAAU,WAAW,SAAS,KAAK,GACjD;AAAA,qBAAO,MAAM,KAAK,UAAU,eAC3B,gBAAArB;AAAA,gBAACM,MAAK;AAAA,gBAAL;AAAA,kBAEC,QACE,gBAAAO,OAACP,OAAA,EAAK,WAAW,IAAK;AAAA,uBAAG,EAAE,YAAY,CAAC;AAAA,oBAAI;AAAA,qBAAO;AAAA,kBAErD,QAAQ,gBAAAN,MAACM,OAAA,EAAK,WAAW,IAAK,mBAAQ;AAAA,kBACtC,IAAI,MAAM;AAAA,kBACV,OAAM;AAAA,kBACN,gBAAc;AAAA,kBAEb,gBAAM,KAAK;AAAA;AAAA,cACd;AAAA,cAED,OAAO,MAAM,KAAK,UAAU,eAC3B,gBAAAN;AAAA,gBAACM,MAAK;AAAA,gBAAL;AAAA,kBAEC,QACE,gBAAAO,OAACP,OAAA,EAAK,WAAW,IAAK;AAAA,uBAAG,EAAE,YAAY,CAAC;AAAA,oBAAI;AAAA,qBAAO;AAAA,kBAErD,QAAQ,gBAAAN,MAACM,OAAA,EAAK,WAAW,IAAK,mBAAQ;AAAA,kBACtC,IAAI,MAAM;AAAA,kBACV,OAAM;AAAA,kBAEL,gBAAM,KAAK;AAAA;AAAA,cACd;AAAA,eAEJ;AAAA,YAGF,0BAAAN;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,MAAM;AACb,wBAAM,QAAQ,CAAC,MAAM,IAAI;AAAA,gBAC3B;AAAA,gBAEA,0BAAAa,OAACQ,OAAA,EAAK,KAAK,GAAG,OAAO,KAClB;AAAA,wBAAM,oBACL,gBAAArB;AAAA,oBAACoD;AAAA,oBAAA;AAAA,sBACC,MAAK;AAAA,sBACL,OAAO,MAAM;AAAA,sBACb,UAAU,MAAM;AAAA;AAAA,kBAClB;AAAA,kBAED,MAAM,oBACL,gBAAApD;AAAA,oBAACoD;AAAA,oBAAA;AAAA,sBACC,MAAK;AAAA,sBACL,OAAO,MAAM;AAAA,sBACb,UAAU,MAAM;AAAA;AAAA,kBAClB;AAAA,mBAEJ;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACA,gBAAApD;AAAA,UAACkD;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,SAAS;AAAA,YACT,WAAU;AAAA,YACV,MAAM;AAAA;AAAA,QACR;AAAA,SACF;AAAA,IAEJ;AAEA,IAAME,SAAQ,CAAC,UAIT;AACJ,YAAM,EAAE,MAAM,OAAO,SAAS,IAAI;AAElC,aAAO,QACL,gBAAApD;AAAA,QAACM,MAAK;AAAA,QAAL;AAAA,UACC,MAAK;AAAA,UACL,WAAWc;AAAA,YACT;AAAA,YACA,SAAS,OAAO,0BAA0B;AAAA,UAC5C;AAAA,UAEA,MAAK;AAAA,UACL,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,IAAIjB,SAAQ;AAAA,UAEZ,QACE,gBAAAU,OAAC,UAAK,WAAW,6BACd;AAAA,eAAG,IAAI;AAAA,YAAI;AAAA,aACd;AAAA,UAGD;AAAA;AAAA,QAZI;AAAA,MAaP,IAEA,gBAAAb,MAAAkC,WAAA,EAAE;AAAA,IAEN;AAAA;AAAA;;;ACzHA,SAAS,WAAAjC,WAAS,YAAAc,kBAAgB;AAClC,SAAS,SAAAX,cAAa;AADtB,IAKa;AALb;AAAA;AAAA;AAEA;AAGO,IAAM,6BAA6B,CAAC,UAA0B;AACnE,YAAM,EAAE,MAAM,OAAO,UAAU,QAAQ,IAAI;AAE3C,YAAM,CAAC,MAAM,OAAO,IAAIW,WAAS,KAAK;AAEtC,YAAM,EAAE,kBAAkB,iBAAiB,IAAId,UAAQ,MAAM;AAC3D,YAAI,EAAE,eAAe,UAAU,CAAC,MAAM,QAAQ,MAAM,YAAY,GAAG;AACjE,iBAAO,CAAC;AAAA,QACV;AACA,eAAOG,OAAM,kBAAkB,MAAM,aAAa,CAAC,CAAC;AAAA,MACtD,GAAG,CAAC,KAAK,CAAC;AAEV,YAAM,EAAE,IAAI,IAAI,qBAAqB,KAAK;AAE1C,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACrBS,gBAAAJ,aAAA;AAPT,IAKa;AALb;AAAA;AAAA;AAEA;AACA;AAEO,IAAM,0BAA8C,CAAC,UAAU;AACpE,YAAM,QAAQ,2BAA2B,KAAK;AAC9C,aAAO,gBAAAA,MAACmD,oBAAA,EAAmB,GAAG,OAAO;AAAA,IACvC;AAAA;AAAA;;;ACRA,IAAAE,0BAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;;;ACDA,SAAS,kBAAAhD,wBAAsB;AAC/B,SAAS,UAAA2B,eAAkC;AAOvC,gBAAAhC,aAAA;AATJ,IAKa;AALb;AAAA;AAAA;AAKO,IAAM,YAAgC,CAAC,UAAU;AACtD,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAE7B,aACE,gBAAAL;AAAA,QAACgC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAS;AAAA,UACT,OAAM;AAAA,UACN,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,CAAC,MAAM,MAAM,SAAS,CAAC;AAAA,UAE/B,YAAE,eAAe;AAAA;AAAA,MACpB;AAAA,IAEJ;AAAA;AAAA;;;ACpBA,SAAa,YAAAjB,kBAAgB;AAG7B,SAAS,SAAAL,cAAa;AAHtB,IAKa;AALb;AAAA;AAAA;AAEA;AAGO,IAAM,qBAAqB,CAAC,UAAqC;AACtE,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,CAAC,MAAM,OAAO,IAAIK,WAAS,KAAK;AAEtC,YAAM,EAAE,cAAc,IAAI,oBAAoB;AAC9C,YAAM,CAAC,WAAW,YAAY,IAAIA,WAAS,KAAK;AAEhD,YAAM,WAAW,CAAC,UAAgB;AAChC,YAAI,CAAC;AAAe,iBAAO,QAAQ,QAAQ;AAC3C,eAAO,eAAe;AACtB,eAAO,gBAAgB;AACvB,qBAAa,IAAI;AACjB,eAAO,cAAc,MAAM,IAAI,EAC5B;AAAA,UACC,CAAC,QAAa;AACZ,oBAAQ,KAAK;AAAA,UACf;AAAA,UACA,CAAC,UAAe;AACd,YAAAL,OAAM,MAAM,MAAM,OAAO;AAAA,UAC3B;AAAA,QACF,EAAE,QAAQ,MAAM;AACd,uBAAa,KAAK;AAAA,QACpB,CAAC;AAAA,MACL;AAEA,YAAM,UAAU,MAAM;AACpB,gBAAQ,KAAK;AAAA,MACf;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QAEH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACpCS,gBAAAV,aAAA;AAPT,IAKa;AALb;AAAA;AAAA;AAEA;AACA;AAEO,IAAM,kBAAkB,CAAC,UAAqC;AACnE,YAAM,QAAQ,mBAAmB,KAAK;AACtC,aAAO,gBAAAA,MAAC,aAAW,GAAG,OAAO;AAAA,IAC/B;AAAA;AAAA;;;ACRA,IAAAsD,kBAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;;;ACDA,SAAS,kBAAAjD,wBAAsB;AAC/B,SAAS,UAAA2B,eAAc;AAOnB,qBAAAE,WACE,OAAAlC,aADF;AATJ,IAKa;AALb;AAAA;AAAA;AAKO,IAAM,UAA4B,CAAC,UAAU;AAClD,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAE7B,aACE,gBAAAL,MAAAkC,WAAA,EACE,0BAAAlC;AAAA,QAACgC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAS;AAAA,UACT,OAAM;AAAA,UACN,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,MAAM;AACb,kBAAM,gBAAgB;AAAA,UACxB;AAAA,UAEC,YAAE,aAAa;AAAA;AAAA,MAClB,GACF;AAAA,IAEJ;AAAA;AAAA;;;ACxBA,SAAS,iBAAAxB,gBAAe,cAAAC,mBAAkB;AAgBnC,SAAS,sBAAsB;AACpC,SAAOA,YAAW,gBAAgB;AACpC;AAlBA,IAca;AAdb;AAAA;AAAA;AAcO,IAAM,mBAAmBD,eAAc,CAAC,CAA0B;AAAA;AAAA;;;ACdzE,SAAS,QAAAG,aAAY;AACrB,SAAS,kBAAAN,wBAAsB;AAC/B,SAAS,MAAAe,KAAI,SAAAQ,QAAO,kBAAAL,iBAAgB,QAAAjB,cAAY;AAqBxC,gBAAAN,aAAA;AAvBR,IAUa;AAVb;AAAA;AAAA;AAGA;AAOO,IAAM,sBAAsBW,MAAK,CAAC,UAAoC;AAC3E,YAAM,EAAE,gBAAgB,IAAI;AAC5B,YAAM,EAAE,EAAE,IAAIN,iBAAe;AAC7B,YAAM,EAAE,YAAY,eAAe,YAAY,IAAI,oBAAoB;AACvE,YAAM,EAAE,OAAO,SAAS,IAAI;AAE5B,YAAM,QAAQ,kBACV,YAAY,iBAAiB,IAC7B,EAAE,wCAAwC;AAE9C,aACE,gBAAAL;AAAA,QAAC4B,OAAM;AAAA,QAAN;AAAA,UACC,QACE,gBAAA5B,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,YAAE,gBAAgB,GACrB;AAAA,UAEF,QACE,gBAAAN,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,iBACH;AAAA,UAEF,OAAO,QAAQ,WAAW;AAAA,UAC1B,OAAM;AAAA,UACN,WAAS;AAAA,UACT,cAAa;AAAA,UACb,WAAU;AAAA,UACV,YAAY;AAAA,YACViB,gBAAe;AAAA,YACfA,gBAAe,YAAY,QAAQ;AAAA,UACrC;AAAA,UACA,OAAO;AAAA,UACP,eAAe,CAAC,QAAQ,cAAc,mBAAmB,GAAG;AAAA,UAC5D,UAAU,MAAM;AAAA,UAChB,SAAS;AAAA,UACT,cAAc;AAAA,YACZ,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,OAAO;AAAA,cACL,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA,YAAY;AAAA,YACV,OAAO;AAAA,YACP,MAAMH,IAAG,uBAAuB,SAAS,oBAAoB;AAAA,UAC/D;AAAA;AAAA,MACF;AAAA,IAEJ,CAAC;AAED,wBAAoB,cAAc;AAAA;AAAA;;;AC5DlC,SAAS,kBAAAf,wBAAsB;AAC/B,SAAS,aAAAyB,kBAAiB;AAC1B,SAAS,SAAAe,QAAO,UAAU,SAAS,QAAAxB,OAAM,QAAAf,cAAY;AACrD,SAAS,WAAAH,gBAAe;AAoBpB,qBAAA+B,WACE,OAAAlC,OAYE,QAAAa,cAbJ;AAxBJ,IAQa;AARb;AAAA;AAAA;AAKA;AAGO,IAAM,uBAA2C,CAAC,UAAU;AACjE,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,EAAE,EAAE,IAAIR,iBAAe;AAE7B,YAAM,YAAY,CAAC;AACnB,YAAM,qBAAqB,kBAAkB,eAAe;AAC5D,YAAM,uBAAuB;AAE7B,YAAM,SACJ,gBAAAQ,OAAAqB,WAAA,EACE;AAAA,wBAAAlC;AAAA,UAACM;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,YACX,oCAA0B,MAAM,IAAI;AAAA;AAAA,QAAe;AAAA,QACrD,gBAAAO,OAACQ,OAAA,EAAK,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,WACnC;AAAA,0BAAArB;AAAA,YAACM,OAAK;AAAA,YAAL;AAAA,cACC,MAAK;AAAA,cACL,cAAa;AAAA,cACb,MAAK;AAAA,cACL,UAAQ;AAAA,cAEP,eAAK;AAAA;AAAA,UACR;AAAA,UACA,gBAAAO,OAACQ,OAAA,EAAK,WAAW,OAAO,KAAK,GAC1B;AAAA,2BAAe,IAAI,GAAG,IAAI,CAAC,GAAG,UAC7B,gBAAArB;AAAA,cAAC6C;AAAA,cAAA;AAAA,gBAEC,OACE,EAAE,kBAAkB,MAAM,aAAa,YAAY;AAAA,gBAErD,MAAK;AAAA,gBAEJ;AAAA;AAAA,cANI;AAAA,YAOP,CACD;AAAA,YACA,KAAK,SAASf,WAAU,MACvB,gBAAA9B,MAAC6C,QAAA,EAAM,OAAM,WAAU,MAAK,MACzB,YAAE,YAAY,GACjB,IAEA,gBAAA7C,MAAC6C,QAAA,EAAM,OAAM,UAAS,MAAK,MACxB,YAAE,aAAa,GAClB;AAAA,aAEJ;AAAA,WACF;AAAA,SACF;AAGF,YAAM,mBAAmB,oBACvB,gBAAAhC,OAACQ,OAAA,EAAK,SAAS,WAAW,OAAO,QAAQ,KAAK,GAC5C;AAAA,wBAAArB,MAACM,QAAA,EAAM,YAAE,qBAAqB,GAAE;AAAA,QAChC,gBAAAN;AAAA,UAACM,OAAK;AAAA,UAAL;AAAA,YACC,WAAW;AAAA,YACX,IAAI,WAAW;AAAA,YACf,SAAS;AAAA,YACT,IAAIH,SAAQ;AAAA,YACZ,QAAQ,gBAAAH,MAACM,QAAA,EAAK,WAAW,IAAK,mBAAQ;AAAA,YAErC,yBAAe,iBAAiB;AAAA;AAAA,QACnC;AAAA,SACF;AAGF,YAAM,YAAY,aAChB,gBAAAO,OAACQ,OAAA,EAAK,SAAS,WAAW,OAAO,QAAQ,KAAK,GAC5C;AAAA,wBAAArB,MAACM,QAAA,EAAM,YAAE,cAAc,GAAE;AAAA,QACzB,gBAAAN;AAAA,UAACM,OAAK;AAAA,UAAL;AAAA,YACC,WAAW;AAAA,YACX,IAAI,WAAW;AAAA,YACf,SAAS;AAAA,YACT,IAAIH,SAAQ;AAAA,YACZ,QAAQ,gBAAAH,MAACM,QAAA,EAAK,WAAW,IAAK,mBAAQ;AAAA,YACtC,aAAa,eAAe,EAAE,oBAAoB,IAAI;AAAA,YAErD,yBACG,EAAE,oBAAoB,IACrB,eAAe,eAAe;AAAA;AAAA,QACrC;AAAA,SACF;AAGF,YAAM,qBAAqB,sBACzB,gBAAAO,OAACQ,OAAA,EAAK,SAAS,WAAW,OAAO,QAAQ,KAAK,GAC5C;AAAA,wBAAArB,MAACM,QAAA,EAAM,YAAE,qBAAqB,GAAE;AAAA,QAC/B,eAAe,kBACd,gBAAAN;AAAA,UAACM,OAAK;AAAA,UAAL;AAAA,YACC,WAAW;AAAA,YACX,IAAI,WAAW;AAAA,YACf,SAAS;AAAA,YACT,IAAIH,SAAQ;AAAA,YACZ,QAAQ,gBAAAH,MAACM,QAAA,EAAK,WAAW,IAAK,mBAAQ;AAAA,YAErC,yBAAe;AAAA;AAAA,QAClB,IAEA,EAAE,oBAAoB;AAAA,SAE1B;AAGF,YAAM,uBAAuB,wBAC3B,gBAAAO,OAAAqB,WAAA,EACG;AAAA,uBAAe,kBACd,gBAAArB,OAACQ,OAAA,EAAK,SAAS,WAAW,OAAO,QAAQ,KAAK,GAC5C;AAAA,0BAAArB,MAACM,QAAA,EAAM,YAAE,0BAA0B,GAAE;AAAA,UACrC,gBAAAN;AAAA,YAACM,OAAK;AAAA,YAAL;AAAA,cACC,IAAI,WAAW;AAAA,cACf,SAAS;AAAA,cACT,IAAIH,SAAQ;AAAA,cAEX,yBAAe;AAAA;AAAA,UAClB;AAAA,WACF;AAAA,QAED,eAAe,iBACd,gBAAAU,OAACQ,OAAA,EAAK,SAAS,WAAW,OAAO,QAAQ,KAAK,GAC5C;AAAA,0BAAArB,MAACM,QAAA,EAAM,YAAE,yBAAyB,GAAE;AAAA,UACpC,gBAAAO,OAACP,QAAA,EAAK,WAAU,0BACb;AAAA,2BAAe;AAAA,YAAc;AAAA,aAChC;AAAA,WACF;AAAA,SAEJ;AAGF,YAAM,eACJ,gBAAAO,OAACQ,OAAA,EAAK,SAAS,WAAW,OAAO,QAAQ,KAAK,GAC5C;AAAA,wBAAArB,MAACM,QAAA,EAAM,YAAE,YAAY,GAAE;AAAA,QACvB,gBAAAN;AAAA,UAACM,OAAK;AAAA,UAAL;AAAA,YACC,OAAO,KAAK,SAASwB,WAAU,MAAM,QAAQ;AAAA,YAC7C,IAAI,WAAW;AAAA,YACf,SAAS;AAAA,YACT,IAAI3B,SAAQ;AAAA,YAEX,yBAAe;AAAA;AAAA,QAClB;AAAA,SACF;AAGF,YAAM,uBACJ,gBAAAU,OAACQ,OAAA,EAAK,WAAU,iBACd;AAAA,wBAAArB;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,IAAG;AAAA,YACH,SAAS,CAAC,MAAM;AAAA,YAChB,iBAAiB,CAAC,MAAe;AAC/B,oBAAM,gBAAgB,CAAC,CAAC;AAAA,YAC1B;AAAA;AAAA,QACF;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAQ;AAAA,YAEP,YAAE,gCAAgC;AAAA;AAAA,QACrC;AAAA,SACF;AAGF,aACE,gBAAAa,OAAC,SAAI,WAAU,YACZ;AAAA;AAAA,QACD,gBAAAb,MAAC,WAAQ;AAAA,QACT,gBAAAa;AAAA,UAACQ;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,YACX,KAAK;AAAA,YACL,OAAO;AAAA,YACP,WAAU;AAAA,YACV,IAAI;AAAA,YAEH;AAAA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA;AAAA,QACH;AAAA,QAEC;AAAA,SACH;AAAA,IAEJ;AAAA;AAAA;;;AClMA,SAAS,kBAAAhB,wBAAsB;AAC/B,SAAc,aAAAyB,kBAAiB;AAC/B,SAAS,SAAAe,QAAO,QAAAxB,OAAM,QAAAf,cAAY;AAa5B,gBAAAN,OAGA,QAAAa,cAHA;AAfN,IASa;AATb;AAAA;AAAA;AAGA;AAMO,IAAM,kBAAkB,CAAC,UAAgC;AAC9D,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,EAAE,IAAIR,iBAAe;AAE7B,aACE,gBAAAQ,OAACQ,OAAA,EAAK,OAAO,QAAQ,SAAS,WAC5B;AAAA,wBAAArB,MAACM,OAAK,WAAL,EAAe,MAAM,UAAU,UAAQ,MAAC,WAAW,IACjD,eAAK,QACR;AAAA,QACA,gBAAAO,OAACQ,OAAA,EAAK,WAAW,OAAO,KAAK,GAC1B;AAAA,yBAAe,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,UACnC,gBAAArB;AAAA,YAAC6C;AAAA,YAAA;AAAA,cAEC,OAAO,EAAE,kBAAkB,MAAM,aAAa,YAAY;AAAA,cAC1D,MAAK;AAAA,cAEJ;AAAA;AAAA,YAJI;AAAA,UAKP,CACD;AAAA,UACA,KAAK,SAASf,WAAU,MACvB,gBAAA9B,MAAC6C,QAAA,EAAM,OAAM,WAAU,MAAK,MACzB,YAAE,YAAY,GACjB,IAEA,gBAAA7C,MAAC6C,QAAA,EAAM,OAAM,UAAS,MAAK,MACxB,YAAE,aAAa,GAClB;AAAA,WAEJ;AAAA,SACF;AAAA,IAEJ;AAAA;AAAA;;;ACxCA,SAAS,QAAAlC,OAAM,YAAAI,kBAAgB;AAC/B,SAAS,kBAAAV,wBAAsB;AAC/B,SAAS,MAAAe,MAAI,SAAAQ,QAAO,kBAAAL,iBAAgB,QAAAjB,cAAY;AAoBxC,gBAAAN,aAAA;AAtBR,IAUa;AAVb;AAAA;AAAA;AAGA;AAOO,IAAM,aAAaW,MAAK,CAAC,UAA2B;AACzD,YAAM,CAAC,OAAO,QAAQ,IAAII,WAAS,KAAK;AACxC,YAAM,EAAE,EAAE,IAAIV,iBAAe;AAC7B,YAAM,EAAE,YAAY,eAAe,YAAY,IAAI,oBAAoB;AACvE,YAAM,EAAE,OAAO,SAAS,IAAI;AAE5B,YAAM,QACJ,YAAY,aAAa,MAAM,QAAQ,YAAY,OAAO,IAAI;AAEhE,aACE,gBAAAL;AAAA,QAAC4B,OAAM;AAAA,QAAN;AAAA,UACC,QACE,gBAAA5B,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,YAAE,cAAc,GACnB;AAAA,UAEF,QACE,gBAAAN,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,iBACH;AAAA,UAEF,OAAO,QAAQ,WAAW;AAAA,UAC1B,OAAM;AAAA,UACN,WAAS;AAAA,UACT,cAAa;AAAA,UACb,WAAU;AAAA,UACV,YAAY;AAAA,YACViB,gBAAe;AAAA,YACfA,gBAAe,YAAY,QAAQ;AAAA,UACrC;AAAA,UACA,UAAU,MAAM;AAAA,UAChB,OAAO,MAAM;AAAA,UACb,eAAe,CAAC,QAAQ,cAAc,eAAe,GAAG;AAAA,UACxD,QAAQ,MAAM;AACZ,qBAAS,KAAK;AAAA,UAChB;AAAA,UACA,SAAS,MAAM;AACb,qBAAS,IAAI;AAAA,UACf;AAAA,UACA,SAAS;AAAA,UACT,cAAc;AAAA,YACZ,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,OAAO;AAAA,cACL,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA,YAAY;AAAA,YACV,OAAO;AAAA,YACP,MAAMH,KAAG,uBAAuB,SAAS,oBAAoB;AAAA,UAC/D;AAAA;AAAA,MACF;AAAA,IAEJ,CAAC;AAED,eAAW,cAAc;AAAA;AAAA;;;AClEzB,SAAS,QAAAT,OAAM,YAAAI,kBAAgB;AAC/B,SAAS,SAAAX,cAAa;AACtB,SAAS,kBAAAC,wBAAsB;AAC/B,SAAS,MAAAe,MAAI,SAAAQ,QAAO,kBAAAL,iBAAgB,QAAAjB,cAAY;AA+BxC,gBAAAN,aAAA;AAlCR,IAUa;AAVb;AAAA;AAAA;AAIA;AAMO,IAAM,gBAAgBW,MAAK,CAAC,UAA8B;AAC/D,YAAM,CAAC,OAAO,QAAQ,IAAII,WAAS,KAAK;AACxC,YAAM,EAAE,EAAE,IAAIV,iBAAe;AAC7B,YAAM,EAAE,YAAY,eAAe,YAAY,IAAI,oBAAoB;AAEvE,YAAM,EAAE,SAAS,WAAW,KAAK,IAAI;AAErC,YAAM,QACJ,YAAY,gBAAgB,MAAM,QAAQ,YAAY,OAAO,IAAI;AAEnE,YAAM,cAAc,CAAC,QAAgB;AACnC,sBAAc,kBAAkB,GAAG;AAAA,MACrC;AAEA,YAAM,SAAS,CAAC,UAAkB;AAChC,YAAI,aAAa,YAAY,GAAG;AAC9B,gBAAM,YAAYD,OAAM,aAAa,OAAO,SAAS,KAAK;AAC1D,sBAAY,SAAS;AAAA,QACvB;AAAA,MACF;AAEA,aACE,gBAAAJ;AAAA,QAAC4B,OAAM;AAAA,QAAN;AAAA,UACC,QACE,gBAAA5B,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,YAAE,iBAAiB,GACtB;AAAA,UAEF,QACE,gBAAAN,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,gBACH;AAAA,UAEF,OAAO,QAAQ,WAAW;AAAA,UAC1B,OAAM;AAAA,UACN,WAAS;AAAA,UACT,cAAa;AAAA,UACb,WAAU;AAAA,UACV,YAAY;AAAA,YACViB,gBAAe;AAAA,YACfA,gBAAe,YAAY,OAAO;AAAA;AAAA,UAEpC;AAAA,UACA,OAAO,MAAM;AAAA,UACb,eAAe;AAAA,UACf,QAAQ,CAAC,UAAU;AACjB,mBAAO,MAAM,OAAO,KAAK;AACzB,qBAAS,KAAK;AAAA,UAChB;AAAA,UACA,SAAS,MAAM;AACb,qBAAS,IAAI;AAAA,UACf;AAAA,UACA,SAAS;AAAA,UACT,cAAc;AAAA,YACZ,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,OAAO;AAAA,cACL,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA,YAAY;AAAA,YACV,OAAO;AAAA,YACP,MAAMH,KAAG,uBAAuB,SAAS,oBAAoB;AAAA,UAC/D;AAAA;AAAA,MACF;AAAA,IAEJ,CAAC;AAED,kBAAc,cAAc;AAAA;AAAA;;;AC/E5B,SAAS,QAAAT,OAAM,WAAAV,iBAAe;AAC9B,SAAS,sBAAsB,SAAAG,cAAa;AAC5C,SAAS,kBAAAC,wBAAsB;AAC/B,SAAS,QAAAgB,QAAM,UAAAkC,SAAQ,QAAAjD,cAAY;AACnC,SAAS,WAAAH,gBAAe;AA+CpB,qBAAA+B,WACE,OAAAlC,OAgBE,QAAAa,cAjBJ;AAnDJ,IAYa;AAZb;AAAA;AAAA;AAKA;AAOO,IAAM,iBAAiBF,MAAK,CAAC,UAA+B;AACjE,YAAM,EAAE,UAAAZ,WAAU,OAAO,IAAI;AAC7B,YAAM,EAAE,EAAE,IAAIM,iBAAe;AAE7B,YAAM,EAAE,YAAY,cAAc,IAAI,oBAAoB;AAC1D,YAAM,EAAE,SAAS,UAAU,IAAI;AAE/B,YAAM,cAAcJ,UAAQ,MAAM;AAChC,YAAIF,aAAY,OAAOA,SAAQ,MAAM,KAAK,WAAW,GAAG;AACtD,gBAAM,QAAQ,IAAII,SAAQJ,SAAQ,EAC/B,IAAI,MAAM,EACV,IAAI,GAAG,EACP,gBAAgB,GAAGI,SAAQ,UAAU,EACrC,SAAS;AACZ,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,GAAG,CAACJ,WAAU,MAAM,CAAC;AAErB,YAAM,mBAAmB;AAAA,QACvB,CAAC,UAAkB;AACjB,gBAAM,SAAS,IAAII,SAAQ,KAAK,EAC7B,IAAI,GAAG,EACP,IAAI,MAAM,EACV,gBAAgB,SAASA,SAAQ,UAAU,EAC3C,SAAS;AAEZ,wBAAc,kBAAkBC,OAAM,aAAa,QAAQ,SAAS,CAAC;AAAA,QACvE;AAAA,QACA;AAAA,QACA,CAAC;AAAA,MACH;AAEA,YAAM,cACJ,MAAM,YAAY,MAAM,SACpB,KAAK,IAAI,OAAO,MAAM,QAAQ,IAAI,MAAM,QAAQ,CAAC,IACjD;AAEN,aACE,gBAAAS,OAAAqB,WAAA,EACE;AAAA,wBAAAlC;AAAA,UAACuD;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,YACX,OAAO,CAAC,WAAW;AAAA,YACnB,eAAe,CAAC,MAAM;AACpB,+BAAiB,EAAE,CAAC,CAAC;AAAA,YACvB;AAAA,YACA,OAAM;AAAA;AAAA,QACR;AAAA,QACA,gBAAA1C,OAACQ,QAAA,EAAK,OAAO,QAAQ,SAAS,WAC5B;AAAA,0BAAArB;AAAA,YAACM,OAAK;AAAA,YAAL;AAAA,cACC,OAAM;AAAA,cACN,MAAK;AAAA,cACL,IAAI;AAAA,cACJ,SAAS;AAAA,cACT,MAAK;AAAA,cACL,aAAG,eAAe,CAAC;AAAA;AAAA,UAAG;AAAA,UACxB,gBAAAO;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,KAAK;AAAA,cACL,SAAS,MAAM;AACb,8BAAc,kBAAkB,OAAO,SAAS,CAAC;AAAA,cACnD;AAAA,cAEA;AAAA,gCAAArB,MAACM,QAAA,EAAK,MAAK,OAAM,OAAM,WACpB,YAAE,YAAY,GACjB;AAAA,gBACA,gBAAAN,MAACM,OAAK,SAAL,EAAa,WAAW,IAAI,MAAK,OAAM,IAAI,SACzC,gBAAM,QACT;AAAA;AAAA;AAAA,UACF;AAAA,WACF;AAAA,SACF;AAAA,IAEJ,CAAC;AAED,mBAAe,cAAc;AAAA;AAAA;;;ACtF7B,SAAS,QAAAK,aAAY;AACrB,SAAS,kBAAAN,wBAAsB;AAC/B,SAAS,MAAAe,MAAI,SAAAQ,QAAO,kBAAAL,kBAAgB,QAAAjB,cAAY;AAuB1C,gBAAAN,aAAA;AAzBN,IAWa;AAXb;AAAA;AAAA;AAGA;AAQO,IAAM,wBAAwBW;AAAA,MACnC,CAAC,UAAsC;AACrC,cAAM,EAAE,iBAAiB,gBAAgB,cAAc,IAAI;AAC3D,cAAM,EAAE,EAAE,IAAIN,iBAAe;AAC7B,cAAM,EAAE,YAAY,eAAe,YAAY,IAAI,oBAAoB;AACvE,cAAM,EAAE,OAAO,SAAS,IAAI;AAE5B,cAAM,QAAQ,kBACV,EAAE,0BAA0B,IAC5B,EAAE,yBAAyB;AAE/B,cAAM,QAAQ,kBAAkB,mBAAmB;AAEnD,cAAM,SAAS,kBACb,gBAAAL,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,iBACH,IAEA;AAGF,cAAM,QAAQ,YAAY,KAAK;AAE/B,cAAM,aAAa;AAAA,UACjBiB,iBAAe;AAAA,UACfA,iBAAe;AAAA,QACjB;AAEA,eACE,gBAAAvB;AAAA,UAAC4B,OAAM;AAAA,UAAN;AAAA,YACC,QACE,gBAAA5B,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,iBACH;AAAA,YAEF;AAAA,YACA,OAAO,QAAQ,WAAW;AAAA,YAC1B,OAAM;AAAA,YACN,WAAS;AAAA,YACT,cAAa;AAAA,YACb,WAAU;AAAA,YACV,YACE,kBACI;AAAA,cACE,GAAG;AAAA,cACHiB,iBAAe;AAAA,cACfA,iBAAe,YAAY,QAAQ;AAAA,YACrC,IACA,CAAC,GAAG,YAAYA,iBAAe,YAAY,CAAC,CAAC;AAAA,YAEnD,OAAO,kBAAkB,iBAAiB;AAAA,YAC1C,eAAe,CAAC,QAAQ,cAAc,OAAO,GAAG;AAAA,YAChD,SAAS;AAAA,YACT,cAAc;AAAA,cACZ,SAAS;AAAA;AAAA,gBAEP,WAAW;AAAA,cACb;AAAA,cACA,OAAO;AAAA,gBACL,WAAW;AAAA,cACb;AAAA,YACF;AAAA,YACA,YAAY;AAAA,cACV,OAAO;AAAA,cACP,MAAMH,KAAG,uBAAuB,SAAS,oBAAoB;AAAA,YAC/D;AAAA;AAAA,QACF;AAAA,MAEJ;AAAA,IACF;AAEA,0BAAsB,cAAc;AAAA;AAAA;;;AClFpC,SAAS,QAAAT,aAAY;AACrB,SAAS,kBAAAN,wBAAsB;AAC/B,SAAS,MAAAe,MAAI,SAAAQ,QAAO,kBAAAL,kBAAgB,QAAAjB,cAAY;AAmBxC,gBAAAN,aAAA;AArBR,IAUa;AAVb;AAAA;AAAA;AAGA;AAOO,IAAM,oBAAoBW,MAAK,CAAC,UAAkC;AACvE,YAAM,EAAE,EAAE,IAAIN,iBAAe;AAE7B,YAAM,EAAE,YAAY,eAAe,YAAY,IAAI,oBAAoB;AACvE,YAAM,EAAE,OAAO,SAAS,IAAI;AAE5B,YAAM,QAAQ,YAAY,eAAe;AAEzC,aACE,gBAAAL;AAAA,QAAC4B,OAAM;AAAA,QAAN;AAAA,UACC,QACE,gBAAA5B,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,YAAE,qBAAqB,GAC1B;AAAA,UAEF,QACE,gBAAAN,MAACM,QAAA,EAAK,WAAW,IAAI,WAAU,YAC5B,iBACH;AAAA,UAEF,OAAO,QAAQ,WAAW;AAAA,UAC1B,OAAM;AAAA,UACN,WAAS;AAAA,UACT,cAAa;AAAA,UACb,WAAU;AAAA,UACV,YAAY;AAAA,YACViB,iBAAe;AAAA,YACfA,iBAAe,YAAY,QAAQ;AAAA,UACrC;AAAA,UACA,OAAO,MAAM;AAAA,UACb,eAAe,CAAC,QAAQ,cAAc,iBAAiB,GAAG;AAAA,UAC1D,UAAU,MAAM;AAAA,UAChB,SAAS;AAAA,UACT,cAAc;AAAA,YACZ,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,OAAO;AAAA,cACL,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA,YAAY;AAAA,YACV,OAAO;AAAA,YACP,MAAMH,KAAG,uBAAuB,SAAS,oBAAoB;AAAA,UAC/D;AAAA;AAAA,MACF;AAAA,IAEJ,CAAC;AAED,sBAAkB,cAAc;AAAA;AAAA;;;AC3DhC,SAAa,WAAAnB,iBAAe;AAC5B,SAAS,kBAAAI,wBAAsB;AAC/B,SAAS,6BAAAmD,kCAAiC;AAC1C;AAAA,EACE,UAAAxB;AAAA,EACA,WAAAyB;AAAA,EACA,QAAApC;AAAA,EACA,gBAAAqC;AAAA,EACA,QAAApD;AAAA,EACA,mBAAAM;AAAA,OACK;AAgCU,gBAAAZ,OAGb,QAAAa,cAHa;AA1CjB,IAsBa;AAtBb;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGO,IAAM,YAAgC,CAAC,UAAU;AACtD,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,EAAE,EAAE,IAAIR,iBAAe;AAE7B,YAAM,EAAE,YAAY,IAAImD,2BAA0B,MAAO;AAEzD,YAAM,WACJ,CAAC,MAAM,aACP,OAAO,KAAK,MAAO,EAAE,SAAS;AAAA,MAE7B,CAAC,CAAC,KAAK,mBAAmB,CAAC,eAAe;AAE7C,YAAM,SAAS,gBAAAxD,MAAC,mBAAgB,MAAY;AAE5C,YAAM,YACJ,gBAAAa,OAACQ,QAAA,EAAK,OAAO,QAAQ,SAAS,WAC5B;AAAA,wBAAArB,MAACM,QAAA,EAAM,YAAE,kBAAkB,GAAE;AAAA,QAC7B,gBAAAN,MAACM,OAAK,SAAL,EAAa,IAAI,WAAW,UAC1B,gBAAM,aAAa,MACtB;AAAA,SACF;AAGF,YAAM,oBAAoB,MAAM,oBAC9B,gBAAAN;AAAA,QAAC;AAAA;AAAA,UACC,eAAe,eAAe;AAAA,UAC9B,UAAU,CAAC,CAAC,KAAK;AAAA;AAAA,MACnB;AAGF,YAAM,mBAAmB,MAAM;AAC7B,YAAI,gBAAgB;AAClB,iBACE,KAAK,mBACH,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,iBAAiB,eAAe;AAAA,cAChC,UAAU,KAAK;AAAA;AAAA,UACjB;AAAA,QAGN;AAEA,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aACE,eACI,EAAE,6BAA6B,IAC/B,eAAe;AAAA,YAErB,UAAU;AAAA;AAAA,QACZ;AAAA,MAEJ;AAEA,YAAM,wBAAwB,kBAC5B,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,iBAAiB,CAAC,CAAC,KAAK;AAAA,UACxB,gBAAgB,eAAe;AAAA,UAC/B,eAAe,eAAe;AAAA;AAAA,MAChC;AAGF,YAAM,gBAAgB,gBAAAA,MAAC,iBAAc,OAAO,eAAe,gBAAgB;AAE3E,YAAM,iBACJ,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,QAAQ,MAAM;AAAA,UACd,UAAU,eAAe;AAAA;AAAA,MAC3B;AAGF,YAAM,UACJ,gBAAAa,OAACQ,QAAA,EAAK,OAAO,QAAQ,KAAK,GAAG,IAAI,GAC/B;AAAA,wBAAArB;AAAA,UAACgC;AAAA,UAAA;AAAA,YACC,WAAS;AAAA,YACT,OAAM;AAAA,YACN,SAAS,CAAC,MAAM;AACd,oBAAM,QAAQ;AAAA,YAChB;AAAA,YAEC,YAAE,eAAe;AAAA;AAAA,QACpB;AAAA,QACA,gBAAAhC;AAAA,UAACY;AAAA,UAAA;AAAA,YACC,WAAS;AAAA,YACT,SAAS,CAAC,MAAM;AACd,gBAAE,gBAAgB;AAClB,gBAAE,eAAe;AACjB,oBAAM,eAAe;AAAA,YACvB;AAAA,YACA,SAAS,MAAM;AAAA,YACf;AAAA,YAEC,YAAE,gBAAgB;AAAA;AAAA,QACrB;AAAA,SACF;AAGF,YAAM,WAAWX,UAAQ,MAAM;AAC7B,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,GAAG,CAAC,YAAY,aAAa,aAAa,CAAC;AAE3C,aACE,gBAAAY,OAAC,iBAAiB,UAAjB,EAA0B,OAAO,UAChC;AAAA,wBAAAA;AAAA,UAACQ;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,YACX,KAAK;AAAA,YACL,OAAO;AAAA,YACP,WAAW;AAAA,YACX,WAAU;AAAA,YAET;AAAA;AAAA,cACD,gBAAArB,MAACyD,UAAA,EAAQ,WAAW,GAAG,WAAU,cAAa;AAAA,cAC7C;AAAA,cACD,gBAAA5C,OAACQ,QAAA,EAAK,OAAO,QAAQ,WAAW,UAAU,WAAW,WAAW,KAAK,GAClE;AAAA;AAAA,gBACA,iBAAiB;AAAA,gBACjB;AAAA,gBACA;AAAA,gBACA;AAAA,iBACH;AAAA,cACC;AAAA;AAAA;AAAA,QACH;AAAA,QAEA,gBAAArB;AAAA,UAAC0D;AAAA,UAAA;AAAA,YACC,MAAM,MAAM;AAAA,YACZ,cAAc,MAAM;AAAA,YACpB,OAAO,EAAE,kBAAkB;AAAA,YAC3B,MAAK;AAAA,YACL,SAAS;AAAA,cACP,SAAS;AAAA,gBACP,OAAO,EAAE,gBAAgB;AAAA,gBACzB,SAAS,MAAM;AAAA,gBACf,SAAS,MAAM;AAAA,gBACf,WAAW;AAAA,cACb;AAAA,cACA,WAAW;AAAA,gBACT,OAAO,EAAE,eAAe;AAAA,gBACxB,SAAS,MAAM;AAAA,gBACf,WAAW;AAAA,cACb;AAAA,YACF;AAAA,YACA,YAAY;AAAA,cACV,SAAS;AAAA,cACT,MAAM;AAAA,cACN,QAAQ;AAAA,YACV;AAAA,YAEA,0BAAA1D,MAAC,wBAAsB,GAAG,OAAO;AAAA;AAAA,QACnC;AAAA,SACF;AAAA,IAEJ;AAAA;AAAA;;;ACzLA,SAAS,eAAAmB,cAAa,aAAAH,YAAW,YAAAD,kBAAgB;AACjD,SAAS,kBAAA4C,uBAAsB;AAD/B,IASa;AATb;AAAA;AAAA;AASO,IAAM,oBAAoB,CAAC,UAI5B;AACJ,YAAM,EAAE,OAAO,WAAW,OAAO,IAAI;AAErC,YAAM,CAAC,gBAAgB,iBAAiB,IAAI5C,WAAS;AAAA,QACnD,QAAQ,MAAM;AAAA,QACd,MAAM,MAAM;AAAA,QACZ,aAAa,MAAM;AAAA,QACnB,YAAY;AAAA;AAAA,QAEZ,aAAa,MAAM,SAAS;AAAA,QAC5B,gBAAgB,MAAM;AAAA,QACtB,eAAe,MAAM;AAAA,QACrB,iBAAiB,MAAM;AAAA,QACvB,gBAAgB,MAAM;AAAA,QACtB,eAAe,MAAM,gBAAgB,MAAM,gBAAgB,MAAM;AAAA,MACnE,CAAC;AAED,YAAM,EAAE,WAAW,QAAQ,UAAU,YAAY,IAAI4C;AAAA,QACnD;AAAA,QACA;AAAA,UACE;AAAA,QACF;AAAA,MACF;AAEA,YAAM,gBAAgBxC,aAAY,CAAC,KAAyB,UAAe;AACzE,0BAAkB,CAAC,cAAc;AAAA,UAC/B,GAAG;AAAA,UACH,CAAC,GAAG,GAAG;AAAA,QACT,EAAE;AAAA,MACJ,GAAG,CAAC,CAAC;AAEL,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AAEJ,YAAM,YACH,MAAM,SAAS,MAAM,SAAS,eAC9B,MAAM,YAAY,MAAM,YAAY,kBACpC,MAAM,iBAAiB,MAAM,iBAAiB;AAAA,MAE9C,MAAM,mBAAmB,MAAM,mBAAmB,mBAClD,MAAM,kBAAkB,MAAM,kBAAkB,kBAChD,MAAM,iBAAiB,MAAM,gBAAgB,OAAO;AAEvD,MAAAH,WAAU,MAAM;AACd,YAAI,WAAW;AACb,mBAAS,EACN,KAAK,CAACC,WAAU;AAAA,UAEjB,CAAC,EACA,MAAM,CAAC,QAAQ;AAAA,UAEhB,CAAC;AAAA,QACL,OAAO;AACL,sBAAY;AAAA,QACd;AAAA,MACF,GAAG;AAAA,QACD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC5FA,SAAS,WAAAhB,iBAAe;AACxB,SAAS,aAAA2D,kBAAiB;AAGnB,SAAS,mBACd,OACA,aACA;AACA,QAAM,EAAE,YAAY,IAAI;AAExB,QAAM,SAASA,WAAU,MAAM,QAAQ,MAAM,MAAmB,WAAW;AAE3E,SAAO3D,UAAQ,MAAM;AACnB,QAAI,aAAa;AACf,aAAO,KAAK,IAAI,eAAe,CAAC;AAAA,IAClC;AACA,WAAO,MAAM,WAAW,KAAK,IAAI,MAAM;AAAA,EACzC,GAAG,CAAC,MAAM,UAAU,QAAQ,aAAa,WAAW,CAAC;AACvD;AAlBA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,eAAAkB,eAAa,aAAAH,YAAW,WAAAf,WAAS,YAAAc,kBAAgB;AAC1D,SAAS,uBAAuB;AAChC,SAA2B,aAAAO,kBAAiB;AAC5C,SAAS,qBAAAS,0BAAyB;AAClC,SAAS,SAAArB,QAAO,YAAAmD,iBAAgB;AAJhC,IAUa;AAVb;AAAA;AAAA;AAKA;AAEA;AACA;AAEO,IAAM,qBAAqB,CAAC,UAK7B;AACJ,YAAM,EAAE,OAAO,eAAe,WAAW,SAAS,IAAI;AACtD,YAAM,EAAE,MAAM,MAAM,IAAI;AACxB,YAAM,EAAE,MAAM,QAAQ,IAAIA,UAAS;AACnC,YAAM,CAAC,YAAY,aAAa,IAAI9C,WAAS,KAAK;AAClD,YAAM,CAAC,YAAY,aAAa,IAAIA,WAAS,KAAK;AAElD,YAAM,cACJ,MAAM,kBAAkB,UACxB,MAAM,cAAcgB,mBAAkB;AAExC,YAAM,eAAe,OAAO,SAAS,YAAY;AACjD,YAAM,iBAAiB,MAAM,cAAcT,WAAU;AAErD,YAAM,mBAAmB,eAAe,CAAC;AAEzC,YAAM,YAAYrB;AAAA,QAChB,MAAM,oCAAoC,KAAK;AAAA,QAC/C,CAAC,KAAK;AAAA,MACR;AAEA,YAAM,CAAC,cAAc,eAAe,IAAI;AAAA,QACtC;AAAA,QACA;AAAA,MACF;AAEA,YAAM,SAAS,mBAAmB,OAAO,UAAU,YAAY;AAE/D,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,kBAAkB;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,MAAAe,WAAU,MAAM;AAAA,MAAC,GAAG,CAAC,MAAM,OAAO,eAAe,WAAW,CAAC;AAE7D,YAAM,gBAAgBG,cAAY,MAAM;AACtC,sBAAc,KAAK;AAAA,MACrB,GAAG,CAAC,CAAC;AAEL,YAAM,WAAWA;AAAA,QACf,OAAO,WAAwB;AAC7B,cAAI;AACJ,gBAAM,WACJ,MAAM,qBAAqB,SACvB,MAAM,qBAAqB,IAC1B,MAAc,YAAY,SACxB,MAAc,YAAY,IAC3B;AAER,cAAI,MAAM,WAAW;AACnB,mBAAO,YAAY,MAAM;AAAA,UAC3B;AAEA,cAAI,MAAM,iBAAiB;AACzB,mBAAO,kBAAkB,MAAM;AAAA,UACjC;AAEA,cAAI,MAAM,kBAAkB,QAAW;AACrC,gBAAI,gBAAgB;AAClB,kBAAI,OAAO,eAAe;AACxB,yBAAS;AAAA,kBACP,GAAG;AAAA,kBACH,gBAAgB,OAAO,OAAO,aAAa,IAAI,KAAK,SAAS;AAAA,gBAC/D;AAAA,cACF,WAAW,gBAAgB,iBAAiB,QAAQ;AAClD,sBAAM,EAAE,aAAa,GAAG,KAAK,IAAI;AACjC,yBAAS;AAAA,cACX;AAAA,YACF;AAEA,qBAAS,cAAc,MAAM,cAAc,SAAS,GAAG;AAAA,cACrD,GAAG;AAAA,YACL,CAAC;AAAA,UACH,OAAO;AACL,qBAAS,UAAW,MAAc,SAAS,SAAS,GAAG;AAAA,cACrD,GAAG;AAAA,cACH,GAAI,WAAW,EAAE,kBAAkB,EAAE,IAAI,CAAC;AAAA,YAC5C,CAAC;AAAA,UACH;AACA,cAAI;AACF,0BAAc,IAAI;AAElB,kBAAM,MAAM,MAAM;AAClB,oBAAQ;AAAA,UACV,SAAS,KAAU;AACjB,YAAAT,OAAM,MAAM,KAAK,WAAW,GAAG,GAAG,EAAE;AAAA,UACtC,UAAE;AACA,0BAAc,KAAK;AAAA,UACrB;AAAA,QACF;AAAA,QACA,CAAC,eAAe,WAAW,cAAc;AAAA,MAC3C;AAEA,YAAM,kBAAkB,MAAM;AAC5B,YAAI,gBAAgB;AAClB,iBAAO,SAAS,cAAqB;AAAA,QACvC;AACA,eAAO,QAAQ,OAAO;AAAA,MACxB;AAEA,YAAM,iBAAiB,MAAM;AAC3B,iBAAS,EACN;AAAA,UACC,CAAC,WAAW;AACV,gBAAI,cAAc;AAChB,4BAAc,IAAI;AAAA,YACpB,OAAO;AAEL,uBAAS,cAAc;AAAA,YACzB;AAAA,UACF;AAAA,UACA,CAAC,UAAU;AAET,gBAAI,OAAO,OAAO,SAAS;AACzB,cAAAA,OAAM,MAAM,OAAO,MAAM,OAAO;AAAA,YAClC;AAAA,UACF;AAAA,QACF,EACC,MAAM,CAAC,QAAQ;AAAA,QAAC,CAAC;AAAA,MACtB;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACxJS,gBAAAV,aAAA;AAdT,IAYa;AAZb;AAAA;AAAA;AAEA;AACA;AASO,IAAM,kBAAkB,CAAC,UAAgC;AAC9D,YAAM,QAAQ,mBAAmB,KAAK;AACtC,aAAO,gBAAAA,MAAC,aAAW,GAAG,OAAO;AAAA,IAC/B;AAAA;AAAA;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;;;ACFA,SAAS,eAAAmB,qBAAmB;AAC5B,SAAS,kBAAAjB,uBAAsB;AAC/B,SAAS,kBAAAG,wBAAsB;AAC/B,SAAS,SAAAE,cAAa;AACtB,SAAS,yBAAyB;AAoBtB,gBAAAP,aAAA;AAxBZ,IAWa;AAXb;AAAA;AAAA;AAKA;AACA;AACA;AACA;AAGO,IAAM,mBAAmB,CAAC,UAAqC;AACpE,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAC7B,YAAM,aAAaH,gBAAe,EAAE,MAAM,MAAM,KAAK,MAAM,EAAE;AAE7D,YAAM,EAAE,eAAe,UAAU,IAAI,oBAAoB;AACzD,YAAM,EAAE,SAAS,IAAI,uBAAuB;AAE5C,YAAM,kBAAkBiB,cAAY,MAAM;AACxC,YAAI,MAAM,MAAM,8BAAwB;AACtC,UAAAZ,OACG,MAAM;AAAA,YACL,SACE,gBAAAP;AAAA,cAAC;AAAA;AAAA,gBACC,QAAQ,MAAM,MAAM,KAAK;AAAA,gBACzB;AAAA,gBACA,WAAS;AAAA,gBACT,OAAO,MAAM,MAAM;AAAA;AAAA,YACrB;AAAA,UAEJ,CAAC,EACA,MAAM,CAAC,UAAU;AAAA,UAElB,CAAC;AAAA,QACL,OAAO;AACL,UAAAO,OACG,MAAM;AAAA,YACL,OAAO,EAAE,kBAAkB;AAAA;AAAA,YAE3B,YAAY;AAAA,cACV,SAAS;AAAA,YACX;AAAA,YACA,SACE,gBAAAP;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA;AAAA,YACF;AAAA,UAEJ,CAAC,EACA,MAAM,CAAC,UAAU;AAAA,UAElB,CAAC;AAAA,QACL;AAAA,MACF,GAAG,CAAC,KAAK,CAAC;AAEV,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACxDS,gBAAAA,aAAA;AANT,IAIa;AAJb;AAAA;AAAA;AACA;AACA;AAEO,IAAM,gBAAgB,CAAC,UAAqC;AACjE,YAAM,QAAQ,iBAAiB,KAAK;AACpC,aAAO,gBAAAA,MAAC,WAAS,GAAG,OAAO;AAAA,IAC7B;AAAA;AAAA;;;ACPA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;;;ACDA,SAAS,qBAAA+B,0BAAyB;AAClC,SAAS,WAAA0B,UAAS,QAAApC,QAAM,YAAkB;AAoCtC,SAoDS,YAAAa,WA7CP,OAAAlC,OAPF,QAAAa,cAAA;AAiDJ,SAAS,cAAc,OAAuB;AAC5C,UAAQ,MAAM,MAAM;AAAA,IAClB;AACE,aAAO,gBAAAb,MAAAkC,WAAA,EAAE;AAAA,IACX;AACE,YAAM,iBACJ,MAAM,MAAM,cAAcH,mBAAkB;AAE9C,UAAI,gBAAgB;AAClB,eACE,gBAAAlB,OAAAqB,WAAA,EACE;AAAA,0BAAAlC,MAAC,OAAK,GAAG,OAAO;AAAA,UAChB,gBAAAA,MAAC,UAAQ,GAAG,OAAO;AAAA,UACnB,gBAAAA,MAAC,YAAU,GAAG,OAAO;AAAA,UACrB,gBAAAA,MAAC,gBAAc,GAAG,OAAO,WAAW,MAAM;AAAA,UAC1C,gBAAAA,MAAC,iBAAe,GAAG,OAAO;AAAA,UAC1B,gBAAAA,MAAC,oBAAkB,GAAG,OAAO;AAAA,WAC/B;AAAA,MAEJ;AAEA,aACE,gBAAAa,OAAAqB,WAAA,EACE;AAAA,wBAAAlC,MAAC,OAAK,GAAG,OAAO;AAAA,QAChB,gBAAAA,MAAC,UAAQ,GAAG,OAAO;AAAA,QACnB,gBAAAA,MAAC,YAAU,GAAG,OAAO;AAAA,QACrB,gBAAAA,MAAC,gBAAc,GAAG,OAAO,WAAW,MAAM;AAAA,QAC1C,gBAAAA,MAAC,cAAY,GAAG,OAAO;AAAA,QACvB,gBAAAA,MAAC,aAAW,GAAG,OAAO;AAAA,SACxB;AAAA,IAGJ;AACE,aACE,gBAAAa,OAAAqB,WAAA,EACE;AAAA,wBAAAlC,MAAC,aAAW,GAAG,OAAO;AAAA,QACtB,gBAAAA,MAAC,WAAS,GAAG,OAAO;AAAA,QACpB,gBAAAA,MAAC,gBAAc,GAAG,OAAO;AAAA,QACzB,gBAAAA,MAAC,aAAW,GAAG,OAAO;AAAA,QACtB,gBAAAA,MAAC,WAAS,GAAG,OAAO;AAAA,SACtB;AAAA,IAEJ;AACE,aAAO,gBAAAA,MAAAkC,WAAA,EAAE;AAAA,IACX;AACE,aAAO,gBAAAlC,MAAAkC,WAAA,EAAE;AAAA,IACX;AACE,aAAO,gBAAAlC,MAAAkC,WAAA,EAAE;AAAA,IACX;AACE,aACE,gBAAArB,OAAAqB,WAAA,EACE;AAAA,wBAAAlC,MAAC,OAAK,GAAG,OAAO;AAAA,QAChB,gBAAAA,MAAC,UAAQ,GAAG,OAAO;AAAA,QACnB,gBAAAA,MAAC,gBAAc,GAAG,OAAO,OAAM,OAAM;AAAA,QACrC,gBAAAA,MAACgD,WAAA,EAAU,GAAG,OAAO;AAAA,QACrB,gBAAAhD,MAAC,cAAY,GAAG,OAAO;AAAA,QACvB,gBAAAA,MAAC,eAAa,GAAG,OAAO;AAAA,QAExB,gBAAAA,MAAC,SAAI;AAAA,QAEL,gBAAAA,MAAC,SAAI;AAAA,QACL,gBAAAA,MAAC,OAAK,GAAG,OAAO;AAAA,SAClB;AAAA,EAEN;AACF;AAxJA,IAgCa,WAsBA,QAeA,MAQA;AA7Eb;AAAA;AAAA;AAGA;AACA,IAAAqD;AACA,IAAAC;AACA;AACA;AAyBO,IAAM,YAIT,CAAC,UAAU;AACb,aACE,gBAAAzC;AAAA,QAACQ;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,UACX,OAAO;AAAA,UACP,KAAK;AAAA,UACL,WAAW;AAAA,UACX,WAAW,MAAM;AAAA,UAEjB;AAAA,4BAAArB,MAAC,UAAQ,GAAG,OAAO;AAAA,YACnB,gBAAAA,MAACyD,UAAA,EAAQ,WAAW,GAAG,WAAU,cAAa;AAAA,YAC9C,gBAAAzD,MAAC,QAAM,GAAG,OAAO;AAAA,YAChB,MAAM,oCAA4B,gBAAAA,MAAC,2BAAyB,GAAG,OAAO;AAAA,YACtE,MAAM,8CAAiC,gBAAAA,MAAC,QAAM,GAAG,OAAO;AAAA;AAAA;AAAA,MAC3D;AAAA,IAEJ;AAEO,IAAM,SAA6B,CAAC,UAAU;AACnD,aACE,gBAAAa,OAACQ,QAAA,EAAK,WAAW,UAAU,KAAK,GAAG,OAAO,QACxC;AAAA,wBAAAR,OAACQ,QAAA,EAAK,SAAS,WAAW,OAAO,QAC/B;AAAA,0BAAArB,MAAC,eAAa,GAAG,OAAO;AAAA,UACxB,gBAAAA,MAAC,aAAW,GAAG,OAAO;AAAA,WACxB;AAAA,QACA,gBAAAa,OAACQ,QAAA,EAAK,OAAO,QAAQ,SAAS,WAC5B;AAAA,0BAAArB,MAAC,iBAAe,GAAG,OAAO;AAAA,UACzB,MAAM,8CAAiC,gBAAAA,MAAC,cAAY,GAAG,OAAO;AAAA,WACjE;AAAA,SACF;AAAA,IAEJ;AAEO,IAAM,OAA2B,CAAC,UAAU;AACjD,aACE,gBAAAA,MAAC,QAAK,MAAM,GAAG,MAAM,GAAG,OAAO,QAAQ,KAAK,GACzC,wBAAc,KAAK,GACtB;AAAA,IAEJ;AAEO,IAAM,OAA2B,CAAC,UAAU;AACjD,aACE,gBAAAa,OAAC,QAAK,MAAM,GAAG,MAAM,GAAG,OAAO,QAAQ,KAAK,GAC1C;AAAA,wBAAAb,MAAC,SAAI;AAAA,QACL,gBAAAA,MAAC,iBAAc,OAAO,OAAO;AAAA,QAC7B,gBAAAA,MAAC,mBAAgB,OAAO,OAAO;AAAA,SACjC;AAAA,IAEJ;AAAA;AAAA;;;ACrFA,IAKa;AALb;AAAA;AAAA;AAGA;AAEO,IAAM,qBAAqB,CAAC,UAM7B;AACJ,YAAM,aAAa,iBAAiB;AACpC,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA;AAAA,QAEH;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACFS,gBAAAA,aAAA;AAjBT,IAMa;AANb;AAAA;AAAA;AACA;AACA;AAIO,IAAM,kBAAkB,CAAC,UAO1B;AACJ,YAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAE/B,YAAM,QAAQ,mBAAmB,IAAI;AACrC,aAAO,gBAAAA,MAAC,aAAW,GAAG,OAAO,WAAsB;AAAA,IACrD;AAAA;AAAA;;;AClBA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;;;ACFA,SAAgC,WAAAC,iBAAe;AAC/C,SAAS,gBAAgB,kBAAAC,uBAAsB;AAC/C,SAAS,iBAAA4D,sBAAqB;AAC9B,SAAS,kBAAAzD,wBAAsB;AA2D3B,gBAAAL,aAAA;AA9DJ,IAca;AAdb;AAAA;AAAA;AAKA;AASO,IAAM,oBAET,CAAC,UAAU;AACb,YAAM,EAAE,aAAa,WAAW,iBAAiB,cAAc,IAAI;AACnE,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAC7B,YAAM,cAAcH,gBAAe;AAEnC,YAAM,gBAAgB4D;AAAA,QACpB,OAAO,UAAqC;AAC1C,cAAI,MAAM,kBAAkB,QAAW;AACrC,gBACE,wBAAwB,SACxB,MAAM,uBAAuB,MAAM,eACnC;AACA,qBAAO,gBAAgB,MAAM,oBAAoB,MAAM,MAAM;AAAA,YAC/D;AAEA,mBAAO,gBAAgB,MAAM,eAAe,MAAM,MAAM,EAAE;AAAA,cACxD,MAAM;AAAA,cAAC;AAAA,YACT;AAAA,UACF;AAEA,iBAAO,YAAY,MAAM,UAAU,MAAM,MAAM,EAAE,KAAK,MAAM;AAAA,UAE5D,CAAC;AAAA,QACH;AAAA,MACF;AAEA,YAAM,mBAAmBA;AAAA,QACvB,CAAC,QAAgB1B,QAAyB,QAA0B;AAClE,gBAAM,EAAE,aAAa,IAAI,YAAY,MAAM,EAAE;AAC7C,gBAAM,cAAc,eAAe,EAAE,OAAAA,QAAO,KAAK,aAAa,CAAC;AAC/D,cAAI,gBAAgB,QAAW;AAC7B,mBAAO,EAAE,8BAA8B,EAAE,OAAO,YAAY,CAAC;AAAA,UAC/D;AAAA,QACF;AAAA,MACF;AAEA,YAAM,gBAAgBnC,UAA+B,MAAM;AACzD,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,GAAG,CAAC,eAAe,WAAW,eAAe,gBAAgB,CAAC;AAE9D,aACE,gBAAAD,MAAC,iBAAiB,UAAjB,EAA0B,OAAO,eAC/B,gBAAM,UACT;AAAA,IAEJ;AAAA;AAAA;;;ACjEA,SAAS,kBAAAK,wBAAsB;AAC/B;AAAA,EACE,QAAAgB;AAAA,EACA;AAAA,EACA,UAAAW;AAAA,EACA,QAAA+B;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAA3C;AAAA,EACA;AAAA,OACK;AACP,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AA8BvB,SASU,OAAApB,OATV,QAAAa,cAAA;AA3CN,IAuBa,kBA0FA,iBAoHP;AArON;AAAA;AAAA;AAcA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEO,IAAM,mBAET,CAAC,UAAU;AACb,YAAM,EAAE,gBAAgB,GAAG,KAAK,IAAI;AACpC,YAAM,UAAU,eAAe;AAAA,QAC7B,OAAO,MAAM;AAAA,QACb,gBAAgB,MAAM;AAAA,QACtB,6BAA6B,MAAM;AAAA,QACnC;AAAA,QACA,aAAa,MAAM;AAAA,MACrB,CAAC;AAED,aACE,gBAAAb;AAAA,QAAC;AAAA;AAAA,UACC,aAAa,MAAM;AAAA,UACnB,WAAW,MAAM;AAAA,UACjB,iBAAiB,MAAM;AAAA,UACvB,eAAe,MAAM;AAAA,UAGrB,0BAAAa,OAACQ,QAAA,EAAK,WAAU,UAAS,OAAM,QAAO,QAAO,QAAO,WAAU,SAC3D;AAAA,kBAAM,YAAY,SAAS,KAC1B,gBAAArB;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,MAAM;AAAA,gBACb,UAAU,CAAC,UAAe;AACxB,wBAAM,SAAS,KAAK;AAAA,gBACtB;AAAA,gBACA,UACE,6CAA+B,EAAE,SAAS,MAAM,IAAI,KAClD,gBAAAA,MAAC,aAAW,GAAG,OAAO;AAAA;AAAA,YAG5B;AAAA,YAEF,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,SAAS,MAAM;AAAA,gBACf,YAAY,MAAM;AAAA,gBAClB,UAAQ;AAAA,gBACR,oBAAoB;AAAA,gBACpB,SAAS;AAAA,kBACP,MAAM,MAAM,SAAS;AAAA,gBACvB;AAAA,gBACA,YAAY;AAAA,kBACV,QAAQ;AAAA,kBACR,MAAM;AAAA,gBACR;AAAA,gBACA,OAAO,CAAC,QAAQ,UAAU;AACxB,yBAAO;AAAA,oBACL,WAAWoB;AAAA,sBACT;AAAA,sBACA,SAAS,MAAM,IACX,8BACA;AAAA,oBACN;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,iBAAiB,CAAC,QAAQ,UACxB,GAAG,MAAM,IAAI,GAAG,KAAK,GACnB,OAAO,YAAY,OAAO,aAC5B,SAAS,KAAK;AAAA,gBAEhB,oBAAoB,CAAC,QAAa,OAAO,aAAa;AACpD,sBACE,MAAM,gCACN,MAAM,kCACN;AACA,+BACE,gBAAApB,MAAC,wBAAqB,OAAO,QAC1B,UACH;AAAA,kBAEJ;AAEA,yBACE,gBAAAA,MAAC,kBAAe,QAAQ,OAAO,QAAS,UAAS;AAAA,gBAErD;AAAA,gBACA,YAAY,MAAM;AAAA,gBAClB,kBAAkB,MAAM;AAAA,gBACxB,UAAU,CAAC,cAAc,eAAe;AAAA,gBACxC,kBAAkB,CAAC,UAAU;AAC3B,wBAAM,cAAc,UAAU;AAAA,gBAChC;AAAA;AAAA,YACF;AAAA,aACF;AAAA;AAAA,MACF;AAAA,IAEJ;AAEO,IAAM,kBAMT,CAAC,UAAU;AACb,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAE7B,aACE,gBAAAL;AAAA,QAAC;AAAA;AAAA,UACC,aAAa,MAAM;AAAA,UACnB,WAAW,MAAM;AAAA,UACjB,iBAAiB,MAAM;AAAA,UACvB,eAAe,MAAM;AAAA,UAGrB,0BAAAa;AAAA,YAACkD;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,MAAM;AAAA,cACN,WAAU;AAAA,cACV,KAAK;AAAA,cAWJ;AAAA,sBAAM,aACL,gBAAAlD;AAAA,kBAACQ;AAAA,kBAAA;AAAA,oBACC,KAAK;AAAA,oBACL,GAAG;AAAA,oBACH,SAAS;AAAA,oBACT,WAAW;AAAA,oBACX,WAAU;AAAA,oBAEV;AAAA,sCAAArB,MAACqB,QAAA,EAAK,KAAK,GACR,gBAAM,YAAY,IAAI,CAAC,SAAS;AAE/B,4BAAI,KAAK,SAAS,UAAU;AAC1B,iCAAO;AAAA,wBACT;AACA,+BACE,gBAAArB;AAAA,0BAAC;AAAA;AAAA,4BAEC,SAAS,KAAK;AAAA,4BACd,MAAM;AAAA,4BACN,OAAO,KAAK;AAAA,4BACZ,WAAU;AAAA,4BACV,aACE,KAAK,SAAS,SACV,EAAE,iBAAiB,IACnB,KAAK,SAAS,WACZ,EAAE,mBAAmB,IACrB;AAAA,4BAER,eAAe,CAAC,UAAU;AAExB,oCAAM,WAAW,EAAE,MAAM,KAAK,MAAM,MAAa,CAAC;AAAA,4BACpD;AAAA;AAAA,0BAfK,QAAQ,KAAK,IAAI;AAAA,wBAgBxB;AAAA,sBAEJ,CAAC,GACH;AAAA,sBACC,MAAM,YACL,gBAAAA;AAAA,wBAACgC;AAAA,wBAAA;AAAA,0BACC,SAAQ;AAAA,0BACR,MAAK;AAAA,0BACL,OAAM;AAAA,0BACN,SAAS,MAAM;AAAA,0BAEd,YAAE,eAAe,KAAK;AAAA;AAAA,sBACzB;AAAA;AAAA;AAAA,gBAEJ,IAEA,gBAAAhC,MAAC,SAAI;AAAA,gBAEP,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW,MAAM,YAAY;AAAA,oBAC7B,kBAAkB,MAAM,YAAY;AAAA,oBACpC,YAAY,MAAM;AAAA,oBAClB,UAAU,MAAM;AAAA,oBAChB,WAAW,MAAM;AAAA,oBACjB,YAAY,CAAC,MAAM,UAAU;AAC3B,0BAAI,WACF,gBAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC;AAAA,0BACA;AAAA,0BACA,WAAW,MAAM,YAAY;AAAA,0BAC7B,MAAM,MAAM;AAAA,0BACZ,gBAAgB,MAAM;AAAA,0BACtB,gBAAgB,MAAM;AAAA;AAAA,sBACxB;AAEF,0BAAI,6CAA+B,EAAE,SAAS,MAAM,IAAI,GAAG;AACzD,mCACE,gBAAAA,MAAC,wBAAqB,OAAO,MAC1B,UACH;AAAA,sBAEJ;AACA,6BACE,gBAAAA,MAAC,kBAAe,QAAQ,KAAK,QAAS,UAAS;AAAA,oBAEnD;AAAA;AAAA,gBACF;AAAA;AAAA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,IAAM,YAAoC,CAAC,UAAU;AACnD,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAC7B,YAAM,EAAE,OAAO,IAAI;AAEnB,YAAM,kBAAkB,SAAS,aAAa,QAAQ,MAAM,IAAI;AAEhE,aACE,gBAAAL;AAAA,QAACgC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,OAAM;AAAA,UACN,MAAK;AAAA,UACL,WAAW,MAAM,YAAY,UAAU,MAAM;AAAA,UAC7C,WAAU;AAAA,UACV,SAAS,CAAC,MAAM,MAAM,YAAY;AAAA,UAClC,eAAa,uBAAuB,MAAM,KAAK,YAAY,CAAC;AAAA,UAE3D,mBACG,EAAE,6BAA6B,EAAE,QAAQ,gBAAgB,CAAC,IAC1D,EAAE,kBAAkB;AAAA;AAAA,MAC1B;AAAA,IAEJ;AAAA;AAAA;;;AC1PA,SAAS,WAAA/B,iBAAe;AACxB,SAAc,qBAAA8B,oBAAmB,eAAAW,oBAAmB;AADpD,IAGa;AAHb;AAAA;AAAA;AAGO,IAAM,wBAAwB,CAAC,SAA6B;AACjE,YAAM,gBAAgBzC,UAAQ,MAAM;AAClC,cAAM,QAAyB,CAAC;AAEhC,iBAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS;AAChD,gBAAM,UAAU,KAAK,KAAK;AAE1B,cACE,QAAQ,cAAc8B,mBAAkB,oBACxC,QAAQ,cAAcA,mBAAkB,OACxC;AACA,gBACE,QAAQ,gBAAgBW,aAAY,UACpC,QAAQ,gBAAgBA,aAAY,gBACpC;AACA,uBAAS,IAAI,GAAG,IAAI,QAAQ,aAAa,QAAQ,KAAK;AACpD,sBAAM,IAAI,QAAQ,aAAa,CAAC;AAChC,oBAAI,CAAC,EAAE,gBAAgB,CAAC,EAAE,eAAe;AACvC;AAAA,gBACF;AACA,gBAAC,EAAU,mBAAmB,QAAQ;AACtC,sBAAM,KAAK,CAAC;AAAA,cACd;AAAA,YACF,OAAO;AAEL,uBAAS,IAAI,GAAG,IAAI,QAAQ,aAAa,QAAQ,KAAK;AACpD,sBAAM,IAAI,QAAQ,aAAa,CAAC;AAChC,oBACE,CAAC,CAAC,MACD,EAAE,gBAAgBA,aAAY,UAC7B,EAAE,gBAAgBA,aAAY,iBAChC;AACA,kBAAC,EAAU,mBAAmB,QAAQ;AACtC,wBAAM,KAAK,CAAC;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,OAAO;AAAA,UACpB;AAAA,QACF;AAEA,eAAO;AAAA,MAGT,GAAG,CAAC,IAAI,CAAC;AAET,aAAO;AAAA,IACT;AAAA;AAAA;;;ACnDA;AAAA,EACE,eAAAvB;AAAA,EACA,aAAAH;AAAA,EACA,WAAAf;AAAA,EACA,UAAAa;AAAA,EACA,YAAAC;AAAA,EAEA,uBAAAiD;AAAA,OACK;AACP,SAAS,kBAAkB,UAAU,eAAe;AACpD;AAAA,EACE,mBAAAC;AAAA,EACA;AAAA,EACA,kBAAA/D;AAAA,OACK;AACP,SAAS,kBAAAG,wBAAsB;AAC/B,SAAS,kBAAkB;AAC3B;AAAA,EACE,qBAAA0B;AAAA,EACA,eAAAW;AAAA,OAGK;AACP,SAAS,SAAAnC,QAAO,eAAe,QAAAD,cAAmB;AAiJnC,gBAAAN,aAAA;AAiTf,SAAS,iBAAiB,MAAa;AACrC,MAAI,QAAQ;AAAM,WAAO;AAEzB,QAAM,UAAU,IAAI,KAAK,IAAI;AAC7B,UAAQ,SAAS,GAAG,GAAG,GAAG,CAAC;AAC3B,SAAO;AACT;AAEA,SAAS,eAAe,MAAa;AACnC,MAAI,QAAQ;AAAM,WAAO;AAEzB,QAAM,UAAU,IAAI,KAAK,IAAI;AAC7B,UAAQ,SAAS,IAAI,IAAI,IAAI,GAAG;AAChC,SAAO;AACT;AAveA,IAoDa,oBAkNP,WAmOO;AAzeb;AAAA;AAAA;AAyBA;AACA;AACA;AAyBO,IAAM,qBAAqB,CAAC,UAAqC;AACtE,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,iBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,EAAE,EAAE,IAAIK,iBAAe;AAC7B,YAAM,cAAcH,gBAAe;AAEnC,YAAM,mBAAmBD,UAAQ,MAAM;AAErC,eAAO,iBAAiByC,aAAY;AAAA,MACtC,GAAG,CAAC,YAAY,CAAC;AAEjB,YAAM,kBAAkB;AACxB,YAAM,EAAE,MAAM,UAAU,SAAS,YAAY,gBAAgB,IAC3D,cAAc;AAAA,QACZ,UAAU;AAAA,MACZ,CAAC;AAGH,MAAA1B,WAAU,MAAM;AACd,gBAAQ,CAAC;AAAA,MACX,GAAG,CAAC,MAAM,MAAM,CAAC;AAEjB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,UAAU,MAAM;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,WAAWf,UAAQ,MAAM;AAC7B,YAAI,8BAAwB;AAC1B,iBAAO,CAAC8B,mBAAkB,kBAAkBA,mBAAkB,KAAK;AAAA,QACrE;AACA,eAAO;AAAA,MACT,GAAG,CAAC,IAAI,CAAC;AAET,YAAM,WAAW9B,UAAQ,MAAM;AAC7B,YAAI,kCAA0B;AAC5B,iBAAO,CAAC8B,mBAAkB,kBAAkBA,mBAAkB,KAAK;AAAA,QACrE;AACA,eAAO;AAAA,MACT,GAAG,CAAC,IAAI,CAAC;AAET,YAAM,gBAAgBjB,QAAmB;AAEzC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,IAAI,eAAe;AAAA,QACjB,QAAQ,MAAM;AAAA,QACd,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM,kBAAkB,CAAC,mBAAmB,SAAY;AAAA;AAAA,QAExD,MAAM,mBAAmB,WAAW;AAAA,QACpC,eAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,mBAAmB,WAAW,IAAI;AACxC,YAAM,CAAC,cAAc,eAAe,IAAImD;AAAA,QACtC;AAAA,QACA;AAAA,MACF;AAEA,MAAAjD,WAAU,MAAM;AACd,YAAI,iBAAiB,UAAU;AAC7B,0BAAgB,QAAQ;AAAA,QAC1B;AAAA,MACF,GAAG,CAAC,UAAU,YAAY,CAAC;AAE3B,YAAM,cAAcG,cAAY,MAAM;AACpC,cAAM,YAAY,MAAM;AACxB,cAAM,SAAS,MAAM;AAErB,cAAM,QAAQ,YACV,EAAE,0BAA0B,IAC5B,SACE,EAAE,uBAAuB,IACzB;AAEN,cAAM,aAAa,MAAuB;AACxC,gBAAM,cAAc,YAChB,EAAE,sCAAsC,IACxC,SACE,EAAE,mCAAmC,IACrC;AAEN,cAAI,CAAC,MAAM,QAAQ;AACjB,mBAAO,gBAAAnB,MAACM,QAAA,EAAK,MAAK,MAAM,uBAAY;AAAA,UACtC;AAEA,gBAAM,oBAAoB,YAAY;AAAA,YACpC;AAAA,YACA,OAAO,MAAM,MAAM;AAAA,UACrB;AACA,iBAAO,gBAAAN,MAACM,QAAA,EAAK,MAAK,MAAM,6BAAkB;AAAA,QAC5C;AAEA,QAAAC,OAAM,QAAQ;AAAA,UACZ;AAAA,UACA,SAAS,WAAW;AAAA,UACpB,UAAU,YAAY;AAAA,UAAC;AAAA,UACvB,MAAM,YAAY;AAChB,gBAAI;AAEF,kBAAI,8BAAwB;AAC1B,sBAAM,oBAAoB,MAAM,MAAM;AAAA,cACxC,OAAO;AACL,sBAAM,uBAAuB,MAAM,MAAM;AAAA,cAC3C;AACA,sBAAQ;AACR,qBAAO,QAAQ,QAAQ,IAAI;AAAA,YAC7B,SAAS,OAAO;AAEd,kBAAI,OAAO,YAAY,QAAW;AAEhC,sBAAM,MAAM,MAAM,OAAO;AAAA,cAC3B;AACA,qBAAO,QAAQ,QAAQ,KAAK;AAAA,YAC9B,UAAE;AACA,sBAAQ,QAAQ;AAAA,YAClB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH,GAAG,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC;AAE1B,YAAM,gBAAgB,sBAAsB,QAAQ,CAAC,CAAC;AAEtD,YAAM,aACJ,WAAW,+BAAyB,gBAAgB,MAAM;AAAA,QACxD,cAAc,CAAC;AAAA,MACjB,CAAC,KAAK;AAER,YAAM,cAAcN,UAAQ,MAAM;AAChC,YAAI,kBAAkB;AACpB,iBAAO,gBAAgB,IAAI;AAAA,QAC7B;AACA,eAAO;AAAA,MACT,GAAG,CAAC,MAAM,kBAAkB,iBAAiB,UAAU,CAAC;AAExD,MAAA+D;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,UACL,aAAa,MAAM;AACjB,mBAAO,cAAc,SAAS,cAAc,KAAK;AAAA,UACnD;AAAA,UACA,eAAe,MAAM;AACnB,mBAAO,cAAc;AAAA,UACvB;AAAA,QACF;AAAA,QACA,CAAC,UAAU;AAAA,MACb;AAEA,aAAO;AAAA,QACL;AAAA,QACA,QAAQ,MAAM;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,IAAM,YAAY,CAChB,MACA,WAWG;AACH,YAAM,EAAE,EAAE,IAAI3D,iBAAe;AAC7B,YAAM,CAAC,aAAa,cAAc,IAAIU;AAAA,QACpC,OAAO,gBAAgB;AAAA,MACzB;AACA,YAAM,CAAC,YAAY,aAAa,IAAIA;AAAA,QAClC,OAAO,cAAc,QAAQ;AAAA,MAC/B;AAGA,YAAM,CAAC,YAAY,aAAa,IAAIA,WAAiC,EAAE;AAEvE,YAAM,eACJ,OAAO,cAAc,UACpB,4BAAwB,6CACrB,sBAAsB;AAAA,QACpB,IAAI,oBAAI,KAAK;AAAA,QACb,MAAM,eAAe,QAAQ,oBAAI,KAAK,GAAG,EAAE,CAAC;AAAA,MAC9C,CAAC,IACD,CAAC;AAEP,YAAM,CAAC,WAAW,YAAY,IAAIA,WAG/B,YAAY;AAEf,YAAM,mBAAmB,CAAC,SAA0B;AAClD,sBAAc,IAAI;AAClB,qBAAa;AAAA,UACX,MAAM,iBAAiB,QAAQ,oBAAI,KAAK,GAAG,OAAO,CAAC,CAAC;AAAA,UACpD,IAAI,eAAe,oBAAI,KAAK,CAAC;AAAA,QAC/B,CAAC;AACD,eAAO,QAAQ,CAAC;AAAA,MAClB;AAEA,YAAM,WAAW,CAAC,WAAyC;AACzD,YAAI,OAAO,SAAS,QAAQ;AAC1B,wBAAc,OAAO,KAAK;AAC1B,iBAAO,QAAQ,CAAC;AAAA,QAClB;AAEA,YAAI,OAAO,SAAS,UAAU;AAC5B,yBAAe,OAAO,KAAK;AAC3B,iBAAO,QAAQ,CAAC;AAAA,QAClB;AAEA,YAAI,OAAO,SAAS,aAAa;AAC/B,uBAAa,sBAAsB,OAAO,KAAK,CAAC;AAChD,iBAAO,QAAQ,CAAC;AAEhB,gBAAM,eAAe,sBAAsB,OAAO,KAAK;AACvD,cAAI,aAAa,QAAQ,aAAa,IAAI;AACxC,kBAAM,WACJ,KAAK,IAAI,iBAAiB,aAAa,MAAM,aAAa,EAAE,CAAC,IAAI;AACnE,kBAAM,eAA4D;AAAA,cAChE,GAAG;AAAA,gBACD,MAAM,iBAAiB,oBAAI,KAAK,CAAC;AAAA,gBACjC,IAAI,eAAe,oBAAI,KAAK,CAAC;AAAA,cAC/B;AAAA,cACA,GAAG;AAAA,gBACD,MAAM,iBAAiB,QAAQ,oBAAI,KAAK,GAAG,CAAC,CAAC;AAAA,gBAC7C,IAAI,eAAe,oBAAI,KAAK,CAAC;AAAA,cAC/B;AAAA,cACA,IAAI;AAAA,gBACF,MAAM,iBAAiB,QAAQ,oBAAI,KAAK,GAAG,EAAE,CAAC;AAAA,gBAC9C,IAAI,eAAe,oBAAI,KAAK,CAAC;AAAA,cAC/B;AAAA,cACA,IAAI;AAAA,gBACF,MAAM,iBAAiB,QAAQ,oBAAI,KAAK,GAAG,EAAE,CAAC;AAAA,gBAC9C,IAAI,eAAe,oBAAI,KAAK,CAAC;AAAA,cAC/B;AAAA,YACF;AAEA,kBAAMmD,aAAY,aAAa,QAAQ;AACvC,gBACEA,cACA,cAAcA,WAAU,MAAM,aAAa,IAAI,KAC/C,cAAcA,WAAU,IAAI,aAAa,EAAE,GAC3C;AACA,4BAAc,QAAe;AAAA,YAC/B,OAAO;AACL,4BAAc,IAAI;AAAA,YACpB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,YAAM,cAAcjE,UAAQ,MAAa;AACvC,cAAM,aAAa;AAAA,UACjB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,YACP;AAAA,cACE,OAAO,EAAE,iBAAiB;AAAA,cAC1B,OAAO;AAAA,YACT;AAAA,YACA;AAAA,cACE,OAAO,EAAE,YAAY;AAAA,cACrB,OAAO;AAAA,YACT;AAAA,YACA;AAAA,cACE,OAAO,EAAE,aAAa;AAAA,cACtB,OAAO;AAAA,YACT;AAAA,UACF;AAAA,UACA,OAAO;AAAA,QACT;AAEA,cAAM,kBAAkB;AAAA,UACtB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAEA,cAAM,eAAe;AAAA,UACnB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,YACP;AAAA,cACE,OAAO,EAAE,mBAAmB;AAAA,cAC5B,OAAO;AAAA,YACT;AAAA,YACA;AAAA,cACE,OAAO,EAAE,uBAAuB;AAAA,cAChC,OAAOyC,aAAY;AAAA,YACrB;AAAA,YACA;AAAA,cACE,OAAO,EAAE,sBAAsB;AAAA,cAC/B,OAAOA,aAAY;AAAA,YACrB;AAAA,YACA;AAAA,cACE,OAAO,EAAE,6BAA6B;AAAA,cACtC,OAAOA,aAAY;AAAA,YACrB;AAAA,YACA;AAAA,cACE,OAAO,EAAE,wBAAwB;AAAA,cACjC,OAAOA,aAAY;AAAA,YACrB;AAAA,YACA;AAAA,cACE,OAAO,EAAE,wBAAwB;AAAA,cACjC,OAAOA,aAAY;AAAA,YACrB;AAAA,UACF;AAAA,UACA,OAAO;AAAA,QACT;AACA,gBAAQ,MAAM;AAAA,UACZ;AACE,mBAAO,CAAC,YAAY,cAAc,eAAe;AAAA,UACnD;AACE,mBAAO,CAAC,UAAU;AAAA,UACpB;AACE,mBAAO,CAAC,UAAU;AAAA,UACpB;AACE,mBAAO,CAAC,UAAU;AAAA,UACpB;AACE,mBAAO,CAAC,UAAU;AAAA,UACpB;AACE,mBAAO,CAAC,UAAU;AAAA,UACpB;AACE,mBAAO,CAAC,YAAY,cAAc,eAAe;AAAA,QACrD;AAAA,MACF,GAAG,CAAC,MAAM,YAAY,aAAa,WAAW,CAAC,CAAC;AAEhD,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,YAAY,eAAe,QAAQ,SAAY;AAAA,QAC/C;AAAA,QACA,aAAa,gBAAgB,QAAQ,SAAY;AAAA,QACjD;AAAA,QACA;AAAA,MACF;AAAA,IACF;AA0CO,IAAM,wBAAwB,CAAC,YAAwC;AAAA,MAC5E,MAAM,iBAAiB,OAAO,IAAI;AAAA,MAClC,IAAI,eAAe,OAAO,MAAM,OAAO,IAAI;AAAA,IAC7C;AAAA;AAAA;;;AC5eA,OAAO,SAAS,kBAAkB;AA0BzB,gBAAA1C,aAAA;AA1BT,IAoBa,wBASA;AA7Bb;AAAA;AAAA;AAIA;AACA;AAeO,IAAM,yBAAyB,WAGpC,CAAC,OAAO,QAAQ;AAChB,YAAM,EAAE,SAAS,GAAG,KAAK,IAAI;AAC7B,YAAM,QAAQ,mBAAmB,EAAE,GAAG,MAAM,IAAI,CAAC;AACjD,aAAO,gBAAAA,MAAC,oBAAkB,GAAG,OAAO,SAAkB;AAAA,IACxD,CAAC;AAEM,IAAM,wBAAwB,MAAM,WAiBzC,CAAC,OAAO,QAAQ;AAChB,YAAM,QAAQ,mBAAmB,EAAE,GAAG,OAAO,gBAAgB,MAAM,IAAI,CAAC;AACxE,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ,YAAY,MAAM;AAAA,UAClB,YAAY,MAAM;AAAA,UAClB,UAAU,MAAM;AAAA;AAAA,MAClB;AAAA,IAEJ,CAAC;AAAA;AAAA;;;ACxDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AAAA;AAAA;;;ACLA,OAAOmE,YAAW;AAClB,SAAS,kBAAA9D,wBAAsB;AAC/B,SAAS,eAAAqC,oBAAmB;AAC5B,SAAS,UAAU,YAAY;AAkB3B,SAUM,OAAA1C,OAVN,QAAAa,cAAA;AArBJ,IAQM,4BAMO;AAdb;AAAA;AAAA;AAMA;AAEA,IAAM,6BAA6BsD,OAAM;AAAA,MAAK,MAC5C,oEAAsB,KAAK,CAAC,QAAQ;AAClC,eAAO,EAAE,SAAS,IAAI,uBAAuB;AAAA,MAC/C,CAAC;AAAA,IACH;AAEO,IAAM,SAAuC,CAAC,UAAU;AAC7D,YAAM,EAAE,EAAE,IAAI9D,iBAAe;AAC7B,YAAM,EAAE,6BAA6B,aAAa,IAAI;AACtD,YAAM,cAAoD;AAAA,QACxD;AAAA,MACF;AACA,aACE,gBAAAQ;AAAA,QAAC;AAAA;AAAA,UACC,cAAc,MAAM;AAAA,UACpB,SAAQ;AAAA,UACR,WAAU;AAAA,UACV,YAAY;AAAA,YACV,aAAa;AAAA,UACf;AAAA,UAEA;AAAA,4BAAAb,MAAC,YAAS,wBAAoB,OAAO,EAAE,YAAY,GACjD,0BAAAA,MAACmE,OAAM,UAAN,EAAe,UAAU,MACxB,0BAAAnE;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA,gBAAgB,MAAM;AAAA,gBACrB,GAAG;AAAA;AAAA,YACN,GACF,GACF;AAAA,YACA,gBAAAA,MAAC,YAAS,gCAAwB,OAAO,EAAE,uBAAuB,GAChE,0BAAAA,MAACmE,OAAM,UAAN,EAAe,UAAU,MACxB,0BAAAnE;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL;AAAA,gBACA,cAAc0C,aAAY;AAAA,gBACzB,GAAG;AAAA;AAAA,YACN,GACF,GACF;AAAA,YACA,gBAAA1C,MAAC,YAAS,4BAAsB,OAAO,EAAE,aAAa,GACpD,0BAAAA,MAACmE,OAAM,UAAN,EAAe,UAAU,MACxB,0BAAAnE;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL;AAAA,gBACA,cAAc0C,aAAY;AAAA,gBACzB,GAAG;AAAA;AAAA,YACN,GACF,GACF;AAAA,YACA,gBAAA1C,MAAC,YAAS,8BAAuB,OAAO,EAAE,sBAAsB,GAC9D,0BAAAA,MAACmE,OAAM,UAAN,EAAe,UAAU,MACxB,0BAAAnE;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL;AAAA,gBACA,cAAc0C,aAAY;AAAA,gBAC1B;AAAA,gBACA,gBAAgB,MAAM;AAAA,gBACrB,GAAG;AAAA;AAAA,YACN,GACF,GACF;AAAA,YACA,gBAAA1C,MAAC,YAAS,oCAA0B,OAAO,EAAE,wBAAwB,GACnE,0BAAAA,MAACmE,OAAM,UAAN,EAAe,UAAU,MACxB,0BAAAnE;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL;AAAA,gBACA,cAAc0C,aAAY;AAAA,gBACzB,GAAG;AAAA;AAAA,YACN,GACF,GACF;AAAA,YACA,gBAAA1C,MAAC,YAAS,kCAAyB,OAAO,EAAE,wBAAwB,GAClE,0BAAAA,MAACmE,OAAM,UAAN,EAAe,UAAU,MACxB,0BAAAnE;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL;AAAA,gBACA,cAAc0C,aAAY;AAAA,gBACzB,GAAG;AAAA;AAAA,YACN,GACF,GACF;AAAA;AAAA;AAAA,MASF;AAAA,IAEJ;AAAA;AAAA;;;ACtGA,SAAS,cAAA0B,mBAAkB;AAyBhB,gBAAApE,aAAA;AAzBX,IAMY,SAgBC;AAtBb;AAAA;AAAA;AAGA;AACA;AAEO,IAAK,UAAL,kBAAKqE,aAAL;AACL,MAAAA,SAAA,SAAM;AACN,MAAAA,SAAA,aAAU;AACV,MAAAA,SAAA,WAAQ;AACR,MAAAA,SAAA,YAAS;AACT,MAAAA,SAAA,eAAY;AACZ,MAAAA,SAAA,cAAW;AACX,MAAAA,SAAA,kBAAe;AAPL,aAAAA;AAAA,OAAA;AAgBL,IAAM,eAAeD;AAAA,MAC1B,CAAC,OAAO,QAAQ;AACd,cAAM,QAAQ,gBAAgB,EAAE,GAAG,OAAO,IAAI,CAAC;AAC/C,eAAO,gBAAApE,MAAC,UAAQ,GAAG,OAAO;AAAA,MAC5B;AAAA,IACF;AAAA;AAAA;;;AC3BA;AAIA;AAGA","sourcesContent":["import { ForwardedRef, useImperativeHandle, useRef } from \"react\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { OrderListInstance } from \"./orderList/orderList.script\";\nimport { TabType } from \"./orders.widget\";\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\n return {\n current,\n pnlNotionalDecimalPrecision,\n orderListRef,\n sharePnLConfig,\n };\n};\n\nexport type OrdersBuilderState = ReturnType<typeof useOrdersScript>;\n","import { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport {\n AlgoOrderRootType,\n AlgoOrderType,\n API,\n OrderStatus,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\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 if (algoType === AlgoOrderRootType.TRAILING_STOP) {\n return [i18n.t(\"orderEntry.orderType.trailingStop\")];\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\nexport function getOrderStatus(record: any) {\n return (record as API.Order).status || (record as API.AlgoOrder).algo_status;\n}\n\nexport function isGrayCell(status?: string): boolean {\n return status === OrderStatus.CANCELLED;\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 // UI not show ROI, so we don't need to calculate ROI\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\nexport function areDatesEqual(date1?: Date, date2?: Date): boolean {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n\nexport function isTrailingStopOrder(order: API.AlgoOrderExt) {\n return order.algo_type === OrderType.TRAILING_STOP;\n}\n\nexport function getNotional(order: API.AlgoOrderExt, dp = 2) {\n if (order.price && order.quantity) {\n return new Decimal(order.price)\n .mul(order.quantity)\n .toFixed(dp, Decimal.ROUND_DOWN);\n }\n\n return 0;\n}\n/**\n * api order type ==> orderEntry type\n */\nexport function convertApiOrderTypeToOrderEntryType(order: API.AlgoOrderExt) {\n if (order.algo_type === OrderType.TRAILING_STOP) {\n return order.algo_type;\n }\n\n const isAlgoOrder = order.algo_order_id !== undefined;\n\n if (isAlgoOrder && order.algo_type !== AlgoOrderRootType.BRACKET) {\n return `STOP_${order.type}` as OrderType;\n }\n\n return order.type;\n}\n","import { createContext, useContext } from \"react\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\n\nexport interface 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<SymbolContextState>(\n {} as SymbolContextState,\n);\n\nexport const useSymbolContext = () => {\n return useContext<SymbolContextState>(SymbolContext);\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { SymbolContext, SymbolContextState } from \"./symbolContext\";\n\ninterface FormatterProviderProps {\n symbol: string;\n}\n\nexport const SymbolProvider: FC<PropsWithChildren<FormatterProviderProps>> = (\n props,\n) => {\n const { symbol, children } = props;\n const symbolInfo = useSymbolsInfo()[symbol];\n const memoizedValue = useMemo<SymbolContextState>(() => {\n return {\n symbol: symbol,\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 origin: symbolInfo(),\n quote_max: symbolInfo(\"quote_max\"),\n quote_min: symbolInfo(\"quote_min\"),\n };\n }, [symbol, symbolInfo]);\n return (\n <SymbolContext.Provider value={memoizedValue}>\n {children}\n </SymbolContext.Provider>\n );\n};\n","import { FC } from \"react\";\nimport { ShareIcon } from \"@kodiak-finance/orderly-ui\";\nimport { ShareButtonScriptReturn } from \"./shareButton.script\";\n\nexport const ShareButton: FC<ShareButtonScriptReturn> = (props) => {\n if (props.sharePnLConfig == null) {\n return null;\n }\n\n return (\n <button\n type=\"button\"\n onClick={(e: any) => {\n e.stopPropagation();\n props.showModal();\n }}\n >\n <ShareIcon color=\"white\" opacity={0.54} size={props.iconSize ?? 16} />\n </button>\n );\n};\n","import { useMemo } from \"react\";\nimport { useReferralInfo, useLeverageBySymbol } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\n\nexport type ShareButtonScriptReturn = ReturnType<typeof useShareButtonScript>;\n\nexport const useShareButtonScript = (props: {\n order: any;\n sharePnLConfig?: SharePnLConfig;\n modalId: string;\n iconSize?: number;\n}) => {\n const { sharePnLConfig, order, iconSize } = props;\n const { t } = useTranslation();\n const { getFirstRefCode } = useReferralInfo();\n const refCode = useMemo(() => {\n return getFirstRefCode()?.code;\n }, [getFirstRefCode]);\n const leverage = useLeverageBySymbol(order.symbol);\n\n const showModal = () => {\n modal.show(props.modalId, {\n pnl: {\n entity: {\n symbol: order.symbol,\n pnl: order.realized_pnl,\n side:\n order.side == \"BUY\"\n ? t(\"share.pnl.share.long\")\n : t(\"share.pnl.share.short\"),\n openPrice: order.average_executed_price,\n openTime: order.updated_time,\n quantity: order.quantity,\n },\n refCode,\n leverage,\n ...sharePnLConfig,\n },\n });\n };\n\n return {\n iconSize,\n sharePnLConfig,\n showModal,\n };\n};\n","import React from \"react\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { useShareButtonScript } from \"./shareButton.script\";\nimport { ShareButton } from \"./shareButton.ui\";\n\nexport const ShareButtonWidget: React.FC<{\n order: any;\n sharePnLConfig?: SharePnLConfig;\n modalId: string;\n iconSize?: number;\n}> = (props) => {\n const state = useShareButtonScript(props);\n return <ShareButton {...state} />;\n};\n","export { ShareButton } from \"./shareButton.ui\";\nexport { ShareButtonWidget } from \"./shareButton.widget\";\n","import { memo } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\ntype AvgPriceProps = {\n symbol: string;\n value: string;\n};\n\nexport const AvgPrice = memo((props: AvgPriceProps) => {\n const symbolsInfo = useSymbolsInfo();\n\n const info = symbolsInfo[props.symbol];\n\n if (!props.value) {\n return \"--\";\n }\n\n return (\n <Text.numeral\n padding={false}\n dp={info(\"quote_dp\", 2)}\n rm={Decimal.ROUND_UP}\n >\n {props.value}\n </Text.numeral>\n );\n});\n","import { useMemo } from \"react\";\nimport { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Tooltip,\n Text,\n cn,\n EditIcon,\n useModal,\n modal,\n} from \"@kodiak-finance/orderly-ui\";\nimport { calcBracketRoiAndPnL } from \"../../../utils/util\";\nimport { useSymbolContext } from \"../../provider/symbolContext\";\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 } = 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\")}:`} </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\")}:`} </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 itemAlign={\"center\"} justify={\"start\"} gap={2}>\n <Flex direction={\"column\"} justify={\"start\"} itemAlign={\"start\"}>\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 <EditBracketOrder order={order} />\n </Flex>\n </Tooltip>\n );\n};\n\nconst EditBracketOrder = (props: { order: API.AlgoOrderExt }) => {\n const { order } = props;\n\n const onEdit = () => {\n modal.show(\"EditBracketOrderDialogId\", {\n order,\n });\n };\n\n return (\n <EditIcon\n size={16}\n className=\"oui-text-base-contrast oui-cursor-pointer\"\n onClick={() => {\n onEdit();\n }}\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 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 \n </span>\n }\n >\n {value}\n </Text.numeral>\n ) : (\n <></>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { API, OrderEntity } from \"@kodiak-finance/orderly-types\";\n\nexport interface OrderListContextState {\n onCancelOrder: (order: API.Order | API.AlgoOrder) => 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","import { FC, useState } from \"react\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { ThrottledButton, toast } from \"@kodiak-finance/orderly-ui\";\nimport { useOrderListContext } from \"../orderListContext\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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","export enum EditType {\n quantity,\n price,\n triggerPrice,\n callbackValue,\n callbackRate,\n}\n","import { memo } from \"react\";\nimport { useTranslation, Trans } from \"@kodiak-finance/orderly-i18n\";\nimport { Button, CloseIcon, ThrottledButton } from \"@kodiak-finance/orderly-ui\";\nimport { commify } from \"@kodiak-finance/orderly-utils\";\nimport { EditType } from \"../../../../type\";\n\ntype ConfirmContentProps = {\n type: EditType;\n base: string;\n value: string;\n cancelPopover: () => void;\n isSubmitting: boolean;\n onConfirm: (e: any) => void;\n};\n\nexport const ConfirmContent = memo((props: ConfirmContentProps) => {\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 key=\"0\" 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 case EditType.callbackValue:\n return (\n // @ts-ignore\n <Trans i18nKey=\"order.edit.confirm.callbackValue\" {...common} />\n );\n case EditType.callbackRate:\n return (\n // @ts-ignore\n <Trans i18nKey=\"order.edit.confirm.callbackRate\" {...common} />\n );\n }\n };\n\n return (\n <div className=\"oui-relative oui-pt-5\">\n <div className=\"desktop:oui-text-sm oui-text-2xs oui-text-base-contrast-54\">\n {renderLabel()}\n </div>\n <div className=\"oui-mt-5 oui-grid oui-grid-cols-2 oui-gap-2\">\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\nConfirmContent.displayName = \"ConfirmContent\";\n","import { useCallback, useEffect, useRef, useState, MouseEvent } from \"react\";\n\ntype PopoverStateProps = {\n originValue: string;\n value: string;\n setValue: (value: string) => void;\n};\n\nexport function usePopoverState(props: PopoverStateProps) {\n const { originValue, value, setValue } = props;\n\n const [open, setOpen] = useState(false);\n const [editing, setEditing] = useState(false);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const closePopover = useCallback(() => {\n setOpen(false);\n setEditing(false);\n }, []);\n\n const cancelPopover = useCallback(() => {\n closePopover();\n setValue(originValue);\n }, [originValue]);\n\n const onClick = useCallback(\n async (event: MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n\n // if value is not changed, then don't open popover\n if (value === originValue) {\n setEditing(false);\n return;\n }\n\n setOpen(true);\n },\n [value, originValue],\n );\n\n useEffect(() => {\n const handleClickOutside = (event: any) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node) &&\n !open\n ) {\n cancelPopover();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [open, cancelPopover]);\n\n return {\n value,\n setValue,\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n };\n}\n","import { useEffect, useMemo } from \"react\";\nimport { OrderValidationResult, useOrderEntity } from \"@kodiak-finance/orderly-hooks\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport { API, OrderlyOrder, OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { convertApiOrderTypeToOrderEntryType } from \"../../../../utils/util\";\n\nexport function useValidateField(props: {\n order: API.OrderExt | API.AlgoOrderExt;\n originValue?: string;\n value: string;\n field: keyof OrderValidationResult;\n fieldValues?: Partial<OrderlyOrder>;\n}) {\n const { order, field, originValue, value, fieldValues } = props;\n const changeFields = fieldValues || { [field]: value };\n\n const orderType = useMemo(\n () => convertApiOrderTypeToOrderEntryType(order as API.AlgoOrderExt),\n [order],\n );\n\n const { errors, validate, clearErrors } = useOrderEntity({\n symbol: order.symbol,\n order_type: orderType,\n side: order.side as OrderSide,\n ...(changeFields as any),\n });\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors);\n\n const error = useMemo(\n () => (field ? getErrorMsg(field) : undefined),\n [getErrorMsg, field],\n );\n\n useEffect(() => {\n // if value is not changed, then don't validate\n if (value === originValue) {\n clearErrors();\n return;\n }\n validate()\n .then((order) => {\n console.log(\"order\", order);\n })\n .catch((errors) => {\n console.error(`${field} validate error:`, errors);\n });\n }, [value, originValue]);\n\n return { error, errors, getErrorMsg };\n}\n","import { FC, useCallback, useEffect, useRef, MouseEvent } from \"react\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport {\n inputFormatter,\n Input,\n InputProps,\n CheckIcon,\n cn,\n Flex,\n} from \"@kodiak-finance/orderly-ui\";\n\nexport type EditableCellInputProps = {\n id?: string;\n name?: string;\n placeholder?: string;\n suffix?: React.ReactNode;\n value?: InputProps[\"value\"];\n onChange?: (value: string) => void;\n error?: string;\n formatters?: InputProps[\"formatters\"];\n overrideFormatters?: InputProps[\"formatters\"];\n classNames?: InputProps[\"classNames\"];\n readonly?: boolean;\n onClick: (e: MouseEvent) => void;\n onFocus?: (e: any) => void;\n onBlur?: (e: any) => void;\n handleKeyDown?: (e: any) => void;\n};\n\nexport const EditableCellInput: FC<EditableCellInputProps> = (props) => {\n const { onClick } = props;\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleKeyDown = useCallback(\n (event: any) => {\n if (event.key === \"Enter\") {\n onClick(event);\n }\n },\n [onClick],\n );\n\n useEffect(() => {\n const input = inputRef.current;\n if (input) {\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }\n }, [props.value]);\n\n return (\n <Input.tooltip\n ref={inputRef}\n tooltip={props.error}\n autoComplete=\"off\"\n autoFocus\n type=\"text\"\n size=\"sm\"\n placeholder={props.readonly ? \"\" : props.placeholder || \"\"}\n id={props.id}\n name={props.name}\n color={props.error ? \"danger\" : undefined}\n value={props.readonly ? \"\" : props.value || \"\"}\n onValueChange={props.onChange}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onKeyDown={props.handleKeyDown || handleKeyDown}\n inputMode=\"decimal\"\n formatters={\n props.overrideFormatters || [\n ...(props.formatters ?? EMPTY_LIST),\n inputFormatter.numberFormatter,\n inputFormatter.decimalPointFormatter,\n ]\n }\n classNames={{\n root: \"oui-bg-base-700 oui-px-2 oui-py-1 oui-rounded\",\n input: \"oui-pr-2\",\n }}\n readOnly={props.readonly}\n suffix={\n <Flex gapX={1}>\n {props.suffix}\n <button onClick={onClick} disabled={!!props.error}>\n <CheckIcon\n size={18}\n color=\"white\"\n opacity={1}\n className={cn(\n \"oui-opacity-50\",\n props.error\n ? \"oui-cursor-not-allowed\"\n : \"oui-cursor-pointer hover:oui-opacity-100\",\n )}\n />\n </button>\n </Flex>\n }\n />\n );\n};\n","import { memo } from \"react\";\nimport { cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { isGrayCell } from \"../../../../utils/util\";\n\ntype PreviewCellProps = {\n status?: string;\n value: string;\n setEditing: (isEditing: boolean) => void;\n disabled?: boolean;\n suffix?: string;\n className?: string;\n};\n\nexport const PreviewCell = memo((props: PreviewCellProps) => {\n const { status, value, disabled } = props;\n\n return (\n <div\n className={cn(\n \"oui-flex oui-items-center oui-justify-start\",\n \"oui-relative oui-max-w-[110px] oui-gap-1 oui-font-semibold\",\n isGrayCell(status) && \"oui-text-base-contrast-20\",\n props.className,\n )}\n onClick={(e) => {\n if (!disabled) {\n e.stopPropagation();\n e.preventDefault();\n props.setEditing(true);\n }\n }}\n >\n <Flex\n r=\"base\"\n className={cn(\n \"oui-h-[28px] oui-min-w-[70px]\",\n !disabled && \"oui-border oui-border-line-12 oui-bg-base-7 oui-px-2\",\n )}\n >\n <Text size=\"2xs\">\n {commifyOptional(value)}\n {props.suffix}\n </Text>\n </Flex>\n </div>\n );\n});\n","import { useCallback, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { inputFormatter, Popover, toast } from \"@kodiak-finance/orderly-ui\";\nimport { EditType } from \"../../../../type\";\nimport { getOrderStatus } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { usePopoverState } from \"../hooks/usePopoverState\";\nimport { useValidateField } from \"../hooks/useValidateField\";\nimport { EditableCellInput } from \"./editableCellInput\";\nimport { PreviewCell } from \"./previewCell\";\n\nexport const ActivedPriceCell = (props: {\n order: API.AlgoOrderExt;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const { t } = useTranslation();\n // the value before editing, initial value\n const originValue = order.activated_price?.toString() ?? \"\";\n\n const [value, setValue] = useState<string>(originValue);\n const [submitting, setSubmitting] = useState(false);\n const disabled = props.disabled || order.is_activated || order.is_triggered;\n\n const { editAlgoOrder } = useOrderListContext();\n const { base, quote_dp } = useSymbolContext();\n\n const {\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n } = usePopoverState({\n originValue,\n value,\n setValue,\n });\n\n const { error } = useValidateField({\n order,\n field: \"activated_price\",\n originValue,\n value,\n });\n\n const onConfirm = useCallback(() => {\n setSubmitting(true);\n\n const data: any = {\n algo_order_id: order.algo_order_id,\n activated_price: value,\n };\n\n editAlgoOrder(order.algo_order_id.toString(), data)\n .then((result: any) => {\n closePopover();\n setValue(value);\n })\n .catch((err: any) => {\n toast.error(err.message);\n cancelPopover();\n })\n .finally(() => setSubmitting(false));\n }, [order.algo_order_id, value, cancelPopover]);\n\n if (!order.activated_price && order.type === OrderType.MARKET) {\n return <span>{t(\"common.marketPrice\")}</span>;\n }\n\n const renderContent = () => {\n if (!editing || disabled) {\n return (\n <PreviewCell\n value={value}\n status={getOrderStatus(order)}\n setEditing={setEditing}\n disabled={disabled}\n />\n );\n }\n\n return (\n <EditableCellInput\n value={value}\n onChange={setValue}\n onClick={onClick}\n // when editing, value should not be empty\n error={value ? error : t(\"orderEntry.triggerPrice.error.required\")}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\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={value}\n cancelPopover={cancelPopover}\n isSubmitting={submitting}\n onConfirm={onConfirm}\n />\n }\n >\n <div\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n ref={containerRef}\n >\n {renderContent()}\n </div>\n </Popover>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { inputFormatter, Popover, toast } from \"@kodiak-finance/orderly-ui\";\nimport { EditType } from \"../../../../type\";\nimport { getOrderStatus } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { usePopoverState } from \"../hooks/usePopoverState\";\nimport { useValidateField } from \"../hooks/useValidateField\";\nimport { EditableCellInput } from \"./editableCellInput\";\nimport { PreviewCell } from \"./previewCell\";\n\nexport const PriceCell = (props: {\n order: API.OrderExt;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const { t } = useTranslation();\n\n const originValue = useMemo(() => {\n if (order.type === OrderType.MARKET && !order.price) {\n return \"Market\";\n }\n return order.price?.toString() ?? \"Market\";\n }, [order.price, order.type]);\n\n const [value, setValue] = useState<string>(originValue);\n\n const isAlgoOrder = order?.algo_order_id !== undefined;\n\n const [submitting, setSubmitting] = useState(false);\n\n const { editOrder, editAlgoOrder } = useOrderListContext();\n\n const { base, quote_dp } = useSymbolContext();\n\n const {\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n } = usePopoverState({\n originValue,\n value,\n setValue,\n });\n\n const { error, getErrorMsg } = useValidateField({\n order,\n field: \"order_price\",\n originValue,\n value,\n fieldValues: {\n order_price: value,\n // add order quantity to validate total\n order_quantity: order.quantity?.toString(),\n // need to pass trigger_price to validate order_price, because order_price is depend on trigger_price when type is stop limit\n trigger_price: order.trigger_price?.toString(),\n },\n });\n\n const onConfirm = () => {\n setSubmitting(true);\n\n let order_id = order.order_id;\n // if reduce only is true, edit order must add symbol, order_type, side, order_price, order_quantity, reduce_only\n let data: any = {\n symbol: order.symbol,\n order_type: order.type,\n side: order.side,\n order_quantity: order.quantity,\n order_price: value,\n };\n\n if (order.reduce_only) {\n data.reduce_only = order.reduce_only;\n }\n\n if (order.order_tag) {\n data.order_tag = order.order_tag;\n }\n\n if (order.client_order_id) {\n data.client_order_id = order.client_order_id;\n }\n\n if (isAlgoOrder) {\n order_id = order.algo_order_id as number;\n data = {\n ...data,\n order_id,\n price: value,\n algo_order_id: order_id,\n };\n }\n\n // edit order don't need to set visible quantity again\n // if (order?.visible_quantity === 0) {\n // data[\"visible_quantity\"] = 0;\n // }\n\n // TODO: remove this, because order not have this field\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((result: any) => {\n closePopover();\n setValue(value);\n })\n .catch((err: any) => {\n toast.error(err.message);\n cancelPopover();\n })\n .finally(() => setSubmitting(false));\n };\n\n const isAlgoMarketOrder = order.algo_order_id && order.type == \"MARKET\";\n\n if (isAlgoMarketOrder || value === \"Market\") {\n return <span>{t(\"common.marketPrice\")}</span>;\n }\n\n const renderContent = () => {\n if (!editing || props.disabled) {\n return (\n <PreviewCell\n value={value}\n status={getOrderStatus(order)}\n setEditing={setEditing}\n disabled={props.disabled}\n />\n );\n }\n\n return (\n <EditableCellInput\n value={value}\n onChange={setValue}\n onClick={onClick}\n error={error || getErrorMsg(\"total\")}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\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={value}\n cancelPopover={cancelPopover}\n isSubmitting={submitting}\n onConfirm={onConfirm}\n />\n }\n >\n <div\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n ref={containerRef}\n >\n {renderContent()}\n </div>\n </Popover>\n );\n};\n","import {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n unstable_serialize,\n useAccount,\n useMemoizedFn,\n useMutation,\n useSWRConfig,\n utils,\n} from \"@kodiak-finance/orderly-hooks\";\nimport {\n findTPSLOrderPriceFromOrder,\n findTPSLFromOrder,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { API, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { AlgoOrderType } from \"@kodiak-finance/orderly-types\";\nimport { useSymbolContext } from \"../provider/symbolContext\";\n\nexport type TPSLOrderRowContextState = {\n order: API.AlgoOrderExt;\n tp_trigger_price?: number;\n sl_trigger_price?: number;\n sl_order_price?: number | OrderType;\n tp_order_price?: number | OrderType;\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<TPSLOrderRowContextState>(\n {} as TPSLOrderRowContextState,\n);\n\nexport const useTPSLOrderRowContext = () => {\n return useContext(TPSLOrderRowContext);\n};\n\nexport const TPSLOrderRowProvider: FC<\n PropsWithChildren<{ order: API.AlgoOrderExt }>\n> = (props) => {\n const { order, children } = 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 = useMemoizedFn(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 = useMemoizedFn(\n async (order: API.AlgoOrderExt, params: any) => {\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\n const getRelatedPosition = useMemoizedFn(\n (symbol: string): API.PositionTPSLExt => {\n const positions = config.cache.get(positionKey);\n return positions?.data?.rows?.find(\n (p: API.PositionTPSLExt) => p.symbol === symbol,\n );\n },\n );\n\n const {\n sl_trigger_price,\n tp_trigger_price,\n tpPnL,\n slPnL,\n sl_order_price,\n tp_order_price,\n } = calcTPSLPnL({\n order: order,\n position,\n quote_dp,\n });\n\n useEffect(() => {\n if (\"algo_type\" in order || ((order as any)?.reduce_only ?? false)) {\n const position = getRelatedPosition(order.symbol);\n if (position) {\n setPosition(position);\n }\n }\n }, [order.symbol]);\n\n const memoizedValue = useMemo<TPSLOrderRowContextState>(() => {\n return {\n order: order,\n sl_trigger_price,\n tp_trigger_price,\n sl_order_price,\n tp_order_price,\n tpPnL,\n slPnL,\n position,\n onCancelOrder,\n onUpdateOrder,\n getRelatedPosition,\n };\n }, [\n order,\n sl_trigger_price,\n tp_trigger_price,\n sl_order_price,\n tp_order_price,\n tpPnL,\n slPnL,\n position,\n onCancelOrder,\n onUpdateOrder,\n getRelatedPosition,\n ]);\n\n return (\n <TPSLOrderRowContext.Provider value={memoizedValue}>\n {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 isTPSLOrder = \"algo_type\" in order && Array.isArray(order.child_orders);\n\n const { sl_trigger_price, tp_trigger_price } = isTPSLOrder\n ? findTPSLFromOrder(order)\n : {\n sl_trigger_price: undefined,\n tp_trigger_price: undefined,\n };\n const { sl_order_price, tp_order_price } = isTPSLOrder\n ? findTPSLOrderPriceFromOrder(order)\n : {\n sl_order_price: undefined,\n tp_order_price: undefined,\n };\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 sl_order_price,\n tp_order_price,\n slPnL,\n tpPnL,\n };\n}\n","import { FC, useEffect } from \"react\";\nimport { CheckIcon, Input, inputFormatter, Tooltip } from \"@kodiak-finance/orderly-ui\";\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 { FC, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useMaxQty, utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { AlgoOrderRootType } from \"@kodiak-finance/orderly-types\";\nimport {\n cn,\n Flex,\n Popover,\n toast,\n Text,\n Slider,\n Button,\n PopoverTrigger,\n PopoverRoot,\n PopoverContent,\n} from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional, Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { EditType } from \"../../../../type\";\nimport { grayCell } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { useTPSLOrderRowContext } from \"../../tpslOrderRowContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { InnerInput } from \"../editOrder/innerInput\";\n\nexport const QuantityCell = (props: {\n order: API.OrderExt | API.AlgoOrder;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const { reduce_only } = order;\n const originValue = order.quantity.toString();\n const [value, setValue] = useState(originValue);\n\n const [editing, setEditing] = useState(false);\n\n const { t } = useTranslation();\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 setValue(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 useEffect(() => {\n setQuantity(order.quantity.toString());\n }, [props.order.quantity]);\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 if (!!error) {\n return;\n }\n\n if (Number(value) === 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, value);\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: value,\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) {\n params.order_tag = order.order_tag;\n }\n\n if (order.client_order_id) {\n params.client_order_id = order.client_order_id;\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(value.toString());\n },\n (err: any) => {\n toast.error(err.message);\n setQuantity(order.quantity.toString());\n cancelPopover();\n },\n )\n .finally(() => setIsSubmitting(false));\n }, [value]);\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 renderContent = () => {\n if (!editing || props.disabled) {\n return (\n <PreviewCell\n order={order}\n value={value}\n setEditing={setEditing}\n disable={props.disabled}\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={value}\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\n return (\n <Popover\n open={open}\n onOpenChange={setOpen}\n content={\n <ConfirmContent\n type={EditType.quantity}\n base={base}\n value={value}\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 {renderContent()}\n </div>\n </Popover>\n );\n};\n\nconst PreviewCell: FC<{\n order: API.AlgoOrder | API.OrderExt;\n value: string;\n setEditing: any;\n disable?: boolean;\n}> = (props) => {\n const { order, value } = 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-relative oui-max-w-[110px]\",\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-h-[28px] oui-min-w-[70px]\",\n !props.disable &&\n \"oui-border oui-border-line-12 oui-bg-base-7 oui-px-2\",\n )}\n >\n <Text size=\"2xs\">{value}</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 setEditing,\n handleKeyDown,\n onClick,\n onClose,\n error,\n symbol,\n reduce_only,\n positionQty,\n confirmOpen,\n order,\n } = props;\n\n const maxBuyQty = useMaxQty(symbol, order.side, 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(maxBuyQty);\n }, [order.quantity, maxBuyQty, 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(maxQty)\n .abs()\n .mul(100)\n .toNumber();\n setSliderValue(sliderValue);\n }\n }, [sliderValue, maxQty, 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}`, maxQty);\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), maxQty)).toString();\n setQuantity(e, maxQty);\n if (e.endsWith(\".\")) return;\n if (Number(quantity) === 0) {\n setSliderValue(0);\n return;\n }\n const sliderValue = new Decimal(e)\n .div(maxQty)\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(maxQty)\n .abs()\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n setQuantity(quantity, maxQty);\n }}\n onValueCommit={(values) => {\n const quantity = new Decimal(values[0])\n .div(100)\n .mul(maxQty)\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(maxQty)\n .abs()\n .toFixed(base_dp, Decimal.ROUND_DOWN);\n quantity = utils.formatNumber(quantity, base_tick) ?? quantity;\n\n setQuantity(quantity, maxQty);\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\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 { useCallback, useMemo, useState } from \"react\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Popover, toast, inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { EditType } from \"../../../../type\";\nimport { getOrderStatus } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { usePopoverState } from \"../hooks/usePopoverState\";\nimport { useValidateField } from \"../hooks/useValidateField\";\nimport { EditableCellInput } from \"./editableCellInput\";\nimport { PreviewCell } from \"./previewCell\";\n\nexport const TrailingCallbackCell = (props: {\n order: API.AlgoOrderExt;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const { callback_value, callback_rate } = order;\n\n const isCallbackValue = !!callback_value;\n const isCallbackRate = !!callback_rate;\n\n const originValue = useMemo(() => {\n return callback_rate\n ? (callback_rate * 100).toString()\n : callback_value?.toString()!;\n }, [callback_value, callback_rate]);\n\n const [value, setValue] = useState<string>(originValue!);\n const [submitting, setSubmitting] = useState(false);\n\n const disabled = props.disabled || order.is_triggered;\n\n const { editAlgoOrder } = useOrderListContext();\n\n const { base, quote_dp } = useSymbolContext();\n\n const {\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n } = usePopoverState({\n originValue,\n value,\n setValue,\n });\n\n const { error } = useValidateField({\n order,\n originValue,\n value,\n field: isCallbackValue ? \"callback_value\" : \"callback_rate\",\n fieldValues: {\n callback_value: isCallbackValue ? value : undefined,\n callback_rate: isCallbackRate ? value : undefined,\n },\n });\n\n const onConfirm = useCallback(() => {\n setSubmitting(true);\n\n const data: any = {\n algo_order_id: order.algo_order_id,\n callback_value: isCallbackValue ? value : undefined,\n callback_rate: isCallbackRate ? `${Number(value) / 100}` : undefined,\n };\n\n editAlgoOrder(order.algo_order_id.toString(), data)\n .then((result: any) => {\n closePopover();\n setValue(value);\n })\n .catch((err: any) => {\n toast.error(err.message);\n cancelPopover();\n })\n .finally(() => setSubmitting(false));\n }, [order.algo_order_id, value, cancelPopover]);\n\n const renderContent = () => {\n const suffix = isCallbackRate ? \"%\" : undefined;\n\n if (!editing || disabled) {\n return (\n <PreviewCell\n status={getOrderStatus(order)}\n value={value}\n setEditing={setEditing}\n disabled={disabled}\n suffix={suffix}\n />\n );\n }\n\n const formatters = isCallbackRate\n ? [inputFormatter.dpFormatter(1)]\n : [\n inputFormatter.currencyFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ];\n\n return (\n <EditableCellInput\n value={value}\n onChange={setValue}\n onClick={onClick}\n error={error}\n suffix={suffix}\n formatters={formatters}\n />\n );\n };\n\n return (\n <Popover\n open={open}\n onOpenChange={setOpen}\n content={\n <ConfirmContent\n type={isCallbackRate ? EditType.callbackRate : EditType.callbackValue}\n base={base}\n value={isCallbackRate ? `${value}%` : value}\n cancelPopover={cancelPopover}\n isSubmitting={submitting}\n onConfirm={onConfirm}\n />\n }\n >\n <div\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n ref={containerRef}\n >\n {renderContent()}\n </div>\n </Popover>\n );\n};\n","import { useCallback, useState } from \"react\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Popover, toast, inputFormatter } from \"@kodiak-finance/orderly-ui\";\nimport { EditType } from \"../../../../type\";\nimport { getOrderStatus } from \"../../../../utils/util\";\nimport { useSymbolContext } from \"../../../provider/symbolContext\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { ConfirmContent } from \"../editOrder/confirmContent\";\nimport { usePopoverState } from \"../hooks/usePopoverState\";\nimport { useValidateField } from \"../hooks/useValidateField\";\nimport { EditableCellInput } from \"./editableCellInput\";\nimport { PreviewCell } from \"./previewCell\";\n\nexport const TriggerPriceCell = (props: {\n order: API.AlgoOrderExt;\n disabled?: boolean;\n}) => {\n const { order } = props;\n const originValue = order.trigger_price?.toString();\n\n const [value, setValue] = useState<string>(originValue);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const disabled = props.disabled || order.is_triggered;\n\n const { editAlgoOrder } = useOrderListContext();\n const { base, quote_dp } = useSymbolContext();\n\n const {\n open,\n setOpen,\n editing,\n setEditing,\n containerRef,\n closePopover,\n cancelPopover,\n onClick,\n } = usePopoverState({\n originValue,\n value,\n setValue,\n });\n\n const { error } = useValidateField({\n order,\n field: \"trigger_price\",\n originValue,\n value,\n });\n\n const onConfirm = useCallback(() => {\n setIsSubmitting(true);\n\n const data: any = {\n trigger_price: value,\n algo_order_id: order.algo_order_id,\n };\n\n editAlgoOrder(`${order.algo_order_id}`, data)\n .then((result: any) => {\n closePopover();\n setValue(value);\n })\n .catch((err: any) => {\n toast.error(err.message);\n cancelPopover();\n })\n .finally(() => setIsSubmitting(false));\n }, [order.algo_order_id, value, cancelPopover]);\n\n const renderContent = () => {\n if (!editing || disabled) {\n return (\n <PreviewCell\n value={value}\n status={getOrderStatus(order)}\n setEditing={setEditing}\n disabled={disabled}\n />\n );\n }\n\n return (\n <EditableCellInput\n value={value}\n onChange={setValue}\n onClick={onClick}\n error={error}\n formatters={[inputFormatter.dpFormatter(quote_dp)]}\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={value}\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={containerRef}\n >\n {renderContent()}\n </div>\n </Popover>\n );\n};\n","import { FC, useCallback, useState } from \"react\";\nimport { useConfig, useMutation } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderEntity } from \"@kodiak-finance/orderly-types\";\nimport { Button } from \"@kodiak-finance/orderly-ui\";\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 side: record.side,\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 if (record.order_tag) {\n data.order_tag = record.order_tag;\n }\n\n if (record.client_order_id) {\n data.client_order_id = record.client_order_id;\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 { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { PositionTPSLPopover } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { useSymbolContext } from \"../../provider/symbolContext\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\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 {\n findTPSLOrderPriceFromOrder,\n findTPSLFromOrder,\n useSymbolsInfo,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { i18n, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderType } from \"@kodiak-finance/orderly-types\";\nimport { Text } from \"@kodiak-finance/orderly-ui\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\n\nexport const TPSLOrderPrice = () => {\n const {\n sl_trigger_price,\n tp_trigger_price,\n sl_order_price,\n tp_order_price,\n order,\n } = useTPSLOrderRowContext();\n const { t } = useTranslation();\n const symbolInfo = useSymbolsInfo()[order.symbol]();\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\")} -`} </Text>\n <TPSLOrderPriceItem\n price={tp_order_price}\n quoteDP={symbolInfo.quote_dp}\n />\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\")} -`} \n </span>\n <TPSLOrderPriceItem\n price={sl_order_price}\n quoteDP={symbolInfo.quote_dp}\n />\n </div>\n ) : null}\n </div>\n );\n};\n\nconst TPSLOrderPriceItem = ({\n price,\n quoteDP,\n}: {\n price?: number | OrderType;\n quoteDP: number;\n}) => {\n const { t } = useTranslation();\n if (!price) {\n return null;\n }\n if (price === OrderType.MARKET) {\n return <span>{t(\"common.marketPrice\")}</span>;\n }\n\n return (\n <Text.numeral\n className=\"oui-text-base-contrast-80\"\n rule={\"price\"}\n dp={quoteDP}\n >\n {price}\n </Text.numeral>\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 : 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, useMemo } from \"react\";\nimport {\n OrderValidationResult,\n useSymbolsInfo,\n useTpslPriceChecker,\n utils,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, AlgoOrderType } from \"@kodiak-finance/orderly-types\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { cn, Text, Tooltip } from \"@kodiak-finance/orderly-ui\";\nimport { CloseToLiqPriceIcon } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\n\nexport const OrderTriggerPrice = () => {\n const { sl_trigger_price, tp_trigger_price, order, position } =\n useTPSLOrderRowContext();\n\n const positionSide =\n position?.position_qty && position.position_qty > 0\n ? OrderSide.BUY\n : OrderSide.SELL;\n const slPriceError = useTpslPriceChecker({\n slPrice: sl_trigger_price?.toString() ?? undefined,\n liqPrice: position?.est_liq_price ?? null,\n side: positionSide,\n });\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 slPriceError={slPriceError}\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 slPriceError: OrderValidationResult | null;\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\")} -`} \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 \"oui-flex oui-items-center\",\n )}\n as=\"div\"\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\")} -`} \n </span>\n ) : (\n \"\"\n )\n }\n suffix={\n <CloseToLiqPriceIcon\n slPriceError={props.slPriceError}\n className=\"oui-ml-1\"\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 }, [\n props.takeProfitPrice,\n props.stopLossPrice,\n order?.symbol,\n t,\n props.slPriceError,\n ]);\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 { format } from \"date-fns\";\nimport { SymbolsInfo, utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation, i18n } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AlgoOrderRootType,\n AlgoOrderType,\n API,\n OrderSide,\n OrderStatus,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\nimport { cn, Column, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Badge } from \"@kodiak-finance/orderly-ui\";\nimport {\n SharePnLConfig,\n SharePnLDialogId,\n} from \"@kodiak-finance/orderly-ui-share\";\nimport {\n commifyOptional,\n Decimal,\n formatNum,\n getTrailingStopPrice,\n} from \"@kodiak-finance/orderly-utils\";\nimport {\n grayCell,\n parseBadgesFor,\n upperCaseFirstLetter,\n isTrailingStopOrder,\n getNotional,\n} from \"../../../utils/util\";\nimport { TabType } from \"../../orders.widget\";\nimport { useSymbolContext } from \"../../provider/symbolContext\";\nimport { ShareButtonWidget } from \"../../shareButton\";\nimport { AvgPrice } from \"./avgPrice\";\nimport { BracketOrderPrice } from \"./bracketOrderPrice\";\nimport { CancelButton } from \"./cancelBtn\";\nimport { ActivedPriceCell } from \"./components/activedPriceCell\";\nimport { PriceCell } from \"./components/priceCell\";\nimport { QuantityCell } from \"./components/quantityCell\";\nimport { TrailingCallbackCell } from \"./components/trailingCallbackCell\";\nimport { TriggerPriceCell } from \"./components/triggerPriceCell\";\nimport { Renew } from \"./renew\";\nimport { TP_SLEditButton } from \"./tpslEdit\";\nimport { TPSLOrderPrice, useTPSLOrderPrice } from \"./tpslPrice\";\nimport { OrderTriggerPrice } from \"./tpslTriggerPrice\";\n\nexport const useOrderColumn = (props: {\n _type: TabType;\n onSymbolChange?: (symbol: API.Symbol) => void;\n pnlNotionalDecimalPrecision?: number;\n sharePnLConfig?: SharePnLConfig;\n symbolsInfo?: SymbolsInfo;\n}) => {\n const {\n _type,\n onSymbolChange,\n pnlNotionalDecimalPrecision,\n sharePnLConfig,\n symbolsInfo,\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(\"common.orderPrice\"),\n disableEdit: true,\n enableSort: false,\n }),\n avgOpen({ width: 130, enableSort: false, symbolsInfo }),\n tpslTriggerPrice({ width: 130, symbolsInfo: props.symbolsInfo }),\n realizedPnL({\n width: 124,\n pnlNotionalDecimalPrecision: pnlNotionalDecimalPrecision,\n sharePnLConfig: sharePnLConfig,\n symbolsInfo: props.symbolsInfo,\n hideShare: true,\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 trailingCallback({ width: 162 }),\n triggerPrice({ width: 162, className: \"oui-pr-0\", isPending: true }),\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: 80 }),\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 }),\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(\"common.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,\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({\n width: 124,\n disableEdit: true,\n tabType: TabType.orderHistory,\n }),\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 hideShare: true,\n }),\n estTotal({ width: 124 }),\n trailingCallback({ width: 124, disableEdit: true }),\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-h-7 oui-w-1 oui-shrink-0 oui-rounded-[1px]\",\n record.side === OrderSide.BUY\n ? \"oui-bg-trade-profit\"\n : \"oui-bg-trade-loss\",\n )}\n />\n <Flex direction=\"column\" itemAlign={\"start\"}>\n <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-whitespace-nowrap oui-break-normal\"\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 <QuantityCell order={record} disabled={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 <QuantityCell 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 tabType?: TabType;\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 const isTrailingStop = isTrailingStopOrder(record);\n if (isTrailingStop) {\n // TODO: fix precision\n return option?.tabType === TabType.orderHistory\n ? i18n.t(\"common.marketPrice\")\n : getTrailingStopPrice(record) || \"--\";\n }\n return commifyOptional(record.price, {\n fallback: i18n.t(\"common.marketPrice\"),\n });\n },\n render: (value: string, record: any) => {\n const isTrailingStop = isTrailingStopOrder(record);\n if (isTrailingStop) {\n // TODO: fix precision\n return option?.tabType === TabType.orderHistory\n ? i18n.t(\"common.marketPrice\")\n : getTrailingStopPrice(record) || \"--\";\n }\n\n return <PriceCell order={record} disabled={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 symbolsInfo?: SymbolsInfo;\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 renderPlantText: (value: string, record: any) => {\n return commifyOptional(value);\n },\n render: (value: string, record: any) => {\n return <AvgPrice symbol={record.symbol} value={value} />;\n },\n };\n}\n\nfunction triggerPrice(option?: {\n enableSort?: boolean;\n width?: number;\n className?: string;\n disableEdit?: boolean;\n isPending?: boolean;\n}): Column<API.Order> {\n const { isPending } = option || {};\n const checkOrderType = (record: any) => {\n const isAlgoOrder = record?.algo_order_id !== undefined;\n const isBracketOrder = record?.algo_type === \"BRACKET\";\n return isAlgoOrder && !isBracketOrder;\n };\n\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 if (!checkOrderType(record)) {\n return \"--\";\n }\n if (isTrailingStopOrder(record) && isPending) {\n return record.activated_price\n ? commifyOptional(record.activated_price)\n : \"--\";\n }\n return commifyOptional(value);\n },\n render: (value: string, record: any) => {\n if (!checkOrderType(record)) {\n return \"--\";\n }\n\n if (isTrailingStopOrder(record) && isPending) {\n return (\n <ActivedPriceCell order={record} disabled={option?.disableEdit} />\n );\n }\n return <TriggerPriceCell order={record} disabled={option?.disableEdit} />;\n },\n };\n}\n\nfunction tpslTriggerPrice(option?: {\n enableSort?: boolean;\n width?: number;\n className?: string;\n title?: string;\n symbolsInfo?: SymbolsInfo;\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?: SymbolsInfo;\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).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.notional className=\"oui-break-normal oui-whitespace-nowrap oui-font-semibold\">\n {value ?? \"--\"}\n </Text.notional>\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 : `${formatNum\n .notional(new Decimal(record.mark_price).mul(record.quantity))\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 : `${formatNum\n .notional(new Decimal(record.mark_price).mul(record.quantity))\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 symbolsInfo?: SymbolsInfo;\n}): Column<API.Order> {\n return {\n title: i18n.t(\"common.avgPrice\"),\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\n return <AvgPrice symbol={record.symbol} value={value} />;\n },\n renderPlantText: (value: string, record: any) => {\n return value ? commifyOptional(value) : \"--\";\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 return getNotional(record) || \"--\";\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\nfunction trailingCallback(option?: {\n title?: string;\n width?: number;\n className?: string;\n disableEdit?: boolean;\n}): Column<API.Order> {\n return {\n title: option?.title ?? i18n.t(\"orderEntry.trailing\"),\n dataIndex: \"callback_value\",\n className: option?.className,\n width: option?.width,\n renderPlantText: (value: string, record: any) => {\n const { callback_value, callback_rate } = record;\n const val =\n callback_value || (callback_rate ? `${callback_rate * 100}%` : \"--\");\n return val?.toString();\n },\n render: (value: string, record: any) => {\n if (isTrailingStopOrder(record)) {\n return (\n <TrailingCallbackCell order={record} disabled={option?.disableEdit} />\n );\n }\n\n return \"--\";\n },\n };\n}\n","import {\n FC,\n PropsWithChildren,\n ReactNode,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { useTpslPriceChecker } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AlgoOrderRootType,\n API,\n OrderStatus,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport {\n Badge,\n cn,\n Flex,\n Statistic,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { SharePnLBottomSheetId } from \"@kodiak-finance/orderly-ui-share\";\nimport { CloseToLiqPriceIcon } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { Decimal, getTrailingStopPrice } from \"@kodiak-finance/orderly-utils\";\nimport {\n getNotional,\n parseBadgesFor,\n upperCaseFirstLetter,\n} from \"../../../utils/util\";\nimport { ShareButtonWidget } from \"../../shareButton\";\nimport { useTPSLOrderRowContext } from \"../tpslOrderRowContext\";\nimport { OrderCellState } from \"./orderCell.script\";\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.created_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(() => getNotional(item), [item.price, item.quantity]);\n\n const rendrerContent = () => {\n if (value) {\n return (\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 );\n }\n\n return \"--\";\n };\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 {rendrerContent()}\n </Statistic>\n );\n};\n\nexport const TriggerPrice: FC<\n OrderCellState & {\n align?: \"start\" | \"end\";\n isPending?: boolean;\n }\n> = (props) => {\n const { item, isPending } = props;\n const { t } = useTranslation();\n\n const isTrailingStop = item?.algo_type === AlgoOrderRootType.TRAILING_STOP;\n\n const rendrerContent = () => {\n if (isTrailingStop && isPending && item.activated_price) {\n return (\n <Text.numeral\n dp={props.quote_dp}\n intensity={80}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n >\n {item.activated_price}\n </Text.numeral>\n );\n }\n\n if (item.trigger_price) {\n return (\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 );\n }\n\n return \"--\";\n };\n\n return (\n <Statistic\n label={isTrailingStop ? t(\"common.trigger\") : t(\"common.triggerPrice\")}\n classNames={{\n root: \"oui-text-xs\",\n label: \"oui-text-2xs\",\n }}\n align={props.align}\n >\n {rendrerContent()}\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 isTrailingStop = item?.algo_type === AlgoOrderRootType.TRAILING_STOP;\n const isStopMarket = item?.type === \"MARKET\" && isAlgoOrder;\n\n const rendrerContent = () => {\n if (isTrailingStop) {\n return \"--\";\n }\n if (isStopMarket) {\n return <Text>{t(\"common.marketPrice\")}</Text>;\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.price ?? \"--\"}\n </Text.numeral>\n );\n };\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 {rendrerContent()}\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\")}:`} </Text>}\n suffix={<Text intensity={20}> 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, position: item } = useTPSLOrderRowContext();\n const { t } = useTranslation();\n\n const side = (item?.position_qty ?? 0) > 0 ? OrderSide.BUY : OrderSide.SELL;\n const slPriceError = useTpslPriceChecker({\n slPrice: sl_trigger_price?.toString() ?? undefined,\n liqPrice: item?.est_liq_price ?? null,\n side: side,\n });\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\")}:`} </Text>\n }\n suffix={<Text intensity={20}> 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 as=\"div\"\n rm={Decimal.ROUND_DOWN}\n color=\"sell\"\n padding={false}\n suffix={<CloseToLiqPriceIcon slPriceError={slPriceError} />}\n className={cn(\n sl_trigger_price\n ? \"oui-border-b oui-border-dashed oui-border-base-contrast-12\"\n : undefined,\n \"oui-flex oui-items-center\",\n )}\n >\n {sl_trigger_price ?? \"--\"}\n </Text.numeral>\n </MobileTooltip>\n </Statistic>\n );\n};\n\nexport const TPPrice: FC<OrderCellState> = (props) => {\n const { t } = useTranslation();\n const { tp_order_price } = useTPSLOrderRowContext();\n\n const renderOrderPrice = useMemo(() => {\n if (tp_order_price === undefined) {\n return <Text>--</Text>;\n }\n if (tp_order_price === OrderType.MARKET) {\n return <Text>{t(\"common.marketPrice\")}</Text>;\n }\n return (\n <Text.numeral\n dp={props.quote_dp}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n padding={false}\n >\n {tp_order_price}\n </Text.numeral>\n );\n }, [tp_order_price]);\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 {renderOrderPrice}\n </Statistic>\n );\n};\nexport const SLPrice: FC<OrderCellState> = (props) => {\n const { t } = useTranslation();\n const { sl_order_price } = useTPSLOrderRowContext();\n\n const renderOrderPrice = useMemo(() => {\n if (sl_order_price === undefined) {\n return <Text>--</Text>;\n }\n if (sl_order_price === OrderType.MARKET) {\n return <Text>{t(\"common.marketPrice\")}</Text>;\n }\n return (\n <Text.numeral\n dp={props.quote_dp}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n padding={false}\n >\n {sl_order_price}\n </Text.numeral>\n );\n }, [sl_order_price]);\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 {renderOrderPrice}\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.base_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(\"common.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\nexport const Fee: FC<OrderCellState> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex justify=\"end\" gapX={1} mt={1}>\n <Text size=\"2xs\" intensity={36}>\n {t(\"common.fee\")}:\n </Text>\n <Text size=\"2xs\" intensity={80}>\n {props.item?.total_fee ?? \"--\"}\n </Text>\n </Flex>\n );\n};\n\nexport const TrailingCallback: FC<OrderCellState> = (props) => {\n const { item } = props;\n const { t } = useTranslation();\n\n const { callback_value, callback_rate } = item;\n\n return (\n <Statistic\n label={t(\"orderEntry.trailing\")}\n align=\"end\"\n classNames={{\n root: \"oui-text-xs\",\n label: \"oui-text-2xs\",\n }}\n >\n {callback_rate ? (\n <Text intensity={80}>{`${callback_rate * 100}%`}</Text>\n ) : (\n <Text.numeral\n dp={props.quote_dp}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n padding={false}\n >\n {callback_value ?? \"--\"}\n </Text.numeral>\n )}\n </Statistic>\n );\n};\n\nexport const TrailingPrice: FC<OrderCellState> = (props) => {\n const { item } = props;\n const { t } = useTranslation();\n\n const value = useMemo(() => {\n return getTrailingStopPrice(item);\n }, [item]);\n\n return (\n <Statistic\n label={t(\"common.price\")}\n align=\"start\"\n classNames={{\n root: \"oui-text-xs\",\n label: \"oui-text-2xs\",\n }}\n >\n {value ? (\n <Text.numeral\n dp={props.quote_dp}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n padding={false}\n >\n {value}\n </Text.numeral>\n ) : (\n \"--\"\n )}\n </Statistic>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, EditIcon, Flex, Text, modal } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { MobileTooltip } from \"../items\";\nimport { BracketOrderPriceState } from \"./bracketOrderPrice.script\";\n\nexport const BracketOrderPrice: FC<BracketOrderPriceState> = (props) => {\n const { t } = useTranslation();\n\n const onEdit = () => {\n modal.show(\"EditBracketOrderSheetId\", {\n order: props.order,\n });\n };\n\n if (!props.sl_trigger_price && !props.tp_trigger_price) return <></>;\n\n return (\n <Flex gap={1} itemAlign={\"center\"} justify={\"start\"}>\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\")}:`} </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\")}:`} </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 <EditIcon\n onClick={onEdit}\n opacity={1}\n className=\"oui-cursor-pointer oui-text-base-contrast-54\"\n size={16}\n />\n </Flex>\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} `}: \n </span>\n }\n >\n {value}\n </Text.numeral>\n ) : (\n <></>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { calcBracketRoiAndPnL } from \"../../../../utils/util\";\nimport { OrderCellState } from \"../orderCell.script\";\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 } = calcBracketRoiAndPnL(order);\n\n return {\n sl_trigger_price,\n order,\n tp_trigger_price,\n pnl,\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","export { BracketOrderPrice } from \"./bracketOrderPrice.ui\";\nexport { BracketOrderPriceWidget } from \"./bracketOrderPrice.widget\";\nexport { useBracketOrderPriceScript } from \"./bracketOrderPrice.script\";\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Button, SimpleDialog, Text } from \"@kodiak-finance/orderly-ui\";\nimport { CancelBtnState } from \"./cancelBtn.script\";\n\nexport const CancelBtn: FC<CancelBtnState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Button\n variant=\"outlined\"\n fullWidth\n color=\"secondary\"\n size=\"sm\"\n className=\"oui-border-base-contrast-36\"\n onClick={(e) => props.onCancel(e)}\n >\n {t(\"common.cancel\")}\n </Button>\n );\n};\n","import { FC, useState } from \"react\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { toast } from \"@kodiak-finance/orderly-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","export { CancelBtn } from \"./cancelBtn.ui\";\nexport { CancelBtnWidget } from \"./cancelBtn.widget\";\nexport { useCancelBtnScript } from \"./cancelBtn.script\";\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Button } from \"@kodiak-finance/orderly-ui\";\nimport { EditBtnState } from \"./editBtn.script\";\n\nexport const EditBtn: FC<EditBtnState> = (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={() => {\n props.onShowEditSheet();\n }}\n >\n {t(\"common.edit\")}\n </Button>\n </>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { OrderValidationResult } from \"@kodiak-finance/orderly-hooks\";\nimport { OrderlyOrder } from \"@kodiak-finance/orderly-types\";\nimport { SymbolContextState } from \"../../../../provider/symbolContext\";\n\nexport type EditSheetContextState = {\n symbolInfo: SymbolContextState;\n getErrorMsg: (\n key: keyof OrderValidationResult,\n customValue?: string,\n ) => string;\n setOrderValue: (key: keyof OrderlyOrder, value: any) => void;\n};\n\nexport const EditSheetContext = createContext({} as EditSheetContextState);\n\nexport function useEditSheetContext() {\n return useContext(EditSheetContext);\n}\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype ActivitedPriceInputProps = {\n activated_price?: string | number;\n disabled?: boolean;\n};\n\nexport const ActivitedPriceInput = memo((props: ActivitedPriceInputProps) => {\n const { activated_price } = props;\n const { t } = useTranslation();\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n const { quote, quote_dp } = symbolInfo;\n\n const error = activated_price\n ? getErrorMsg(\"activated_price\")\n : t(\"orderEntry.triggerPrice.error.required\");\n\n return (\n <Input.tooltip\n prefix={\n <Text intensity={54} className=\"oui-px-3\">\n {t(\"common.trigger\")}\n </Text>\n }\n suffix={\n <Text intensity={54} className=\"oui-px-3\">\n {quote}\n </Text>\n }\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ]}\n value={activated_price}\n onValueChange={(val) => setOrderValue(\"activated_price\", val)}\n disabled={props.disabled}\n tooltip={error}\n tooltipProps={{\n content: {\n className: \"oui-bg-base-5 oui-max-w-[360px]\",\n },\n arrow: {\n className: \"oui-fill-base-5\",\n },\n }}\n classNames={{\n input: \"oui-text-base-contrast\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n});\n\nActivitedPriceInput.displayName = \"ActivitedPriceInput\";\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { Badge, Checkbox, Divider, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { parseBadgesFor } from \"../../../../../utils/util\";\nimport { EditSheetState } from \"../editSheet.script\";\n\nexport const ConfirmDialogContent: FC<EditSheetState> = (props) => {\n const { item } = props;\n const {\n formattedOrder,\n symbolInfo,\n isStopMarket,\n showTriggerPrice,\n isTrailingStop,\n } = props;\n const { t } = useTranslation();\n\n const showPrice = !isTrailingStop;\n const showActivatedPrice = isTrailingStop && formattedOrder.activated_price;\n const showTrailingCallback = isTrailingStop;\n\n const header = (\n <>\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 {item.symbol}\n </Text.formatted>\n <Flex direction={\"row\"} gap={1}>\n {parseBadgesFor(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 {item.side === OrderSide.BUY ? (\n <Badge color=\"success\" size=\"xs\">\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge color=\"danger\" size=\"xs\">\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n </>\n );\n\n const triggerPriceItem = showTriggerPrice && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"common.triggerPrice\")}</Text>\n <Text.numeral\n intensity={80}\n dp={symbolInfo.quote_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n suffix={<Text intensity={54}>{\" USDC\"}</Text>}\n >\n {formattedOrder.trigger_price ?? \"--\"}\n </Text.numeral>\n </Flex>\n );\n\n const priceItem = showPrice && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"common.price\")}</Text>\n <Text.numeral\n intensity={80}\n dp={symbolInfo.quote_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n suffix={<Text intensity={54}>{\" USDC\"}</Text>}\n placeholder={isStopMarket ? t(\"common.marketPrice\") : \"--\"}\n >\n {isStopMarket\n ? t(\"common.marketPrice\")\n : (formattedOrder.order_price ?? \"--\")}\n </Text.numeral>\n </Flex>\n );\n\n const activatedPriceItem = showActivatedPrice && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"common.triggerPrice\")}</Text>\n {formattedOrder.activated_price ? (\n <Text.numeral\n intensity={80}\n dp={symbolInfo.quote_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n suffix={<Text intensity={54}>{\" USDC\"}</Text>}\n >\n {formattedOrder.activated_price}\n </Text.numeral>\n ) : (\n t(\"common.marketPrice\")\n )}\n </Flex>\n );\n\n const trailingCallbackItem = showTrailingCallback && (\n <>\n {formattedOrder.callback_value && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"orderEntry.trailingValue\")}</Text>\n <Text.numeral\n dp={symbolInfo.quote_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n >\n {formattedOrder.callback_value}\n </Text.numeral>\n </Flex>\n )}\n {formattedOrder.callback_rate && (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"orderEntry.trailingRate\")}</Text>\n <Text className=\"oui-text-base-contrast\">\n {formattedOrder.callback_rate}%\n </Text>\n </Flex>\n )}\n </>\n );\n\n const quantityItem = (\n <Flex justify={\"between\"} width={\"100%\"} gap={1}>\n <Text>{t(\"common.qty\")}</Text>\n <Text.numeral\n color={item.side === OrderSide.BUY ? \"buy\" : \"sell\"}\n dp={symbolInfo.base_dp}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n >\n {formattedOrder.order_quantity}\n </Text.numeral>\n </Flex>\n );\n\n const orderConfirmCheckbox = (\n <Flex className=\"oui-gap-[2px]\">\n <Checkbox\n color=\"white\"\n id=\"oui-checkbox-disableOrderConfirmation\"\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 );\n\n return (\n <div className=\"oui-pt-2\">\n {header}\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 {triggerPriceItem}\n {priceItem}\n {quantityItem}\n {activatedPriceItem}\n {trailingCallbackItem}\n </Flex>\n\n {orderConfirmCheckbox}\n </div>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, OrderSide } from \"@kodiak-finance/orderly-types\";\nimport { Badge, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { parseBadgesFor } from \"../../../../../utils/util\";\n\ntype EditSheetHeaderProps = {\n item: API.AlgoOrderExt;\n};\n\nexport const EditSheetHeader = (props: EditSheetHeaderProps) => {\n const { item } = props;\n const { t } = useTranslation();\n\n return (\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={e.toLocaleLowerCase() === \"position\" ? \"primary\" : \"neutral\"}\n size=\"xs\"\n >\n {e}\n </Badge>\n ))}\n {item.side === OrderSide.BUY ? (\n <Badge color=\"success\" size=\"xs\">\n {t(\"common.buy\")}\n </Badge>\n ) : (\n <Badge color=\"danger\" size=\"xs\">\n {t(\"common.sell\")}\n </Badge>\n )}\n </Flex>\n </Flex>\n );\n};\n","import { memo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype PriceInputProps = {\n order_price?: string | number;\n disabled?: boolean;\n};\n\nexport const PriceInput = memo((props: PriceInputProps) => {\n const [focus, setFocus] = useState(false);\n const { t } = useTranslation();\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n const { quote, quote_dp } = symbolInfo;\n\n const error =\n getErrorMsg(\"order_price\") || (focus ? getErrorMsg(\"total\") : \"\");\n\n return (\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 {quote}\n </Text>\n }\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ]}\n disabled={props.disabled}\n value={props.order_price}\n onValueChange={(val) => setOrderValue(\"order_price\", val)}\n onBlur={() => {\n setFocus(false);\n }}\n onFocus={() => {\n setFocus(true);\n }}\n tooltip={error}\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\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n});\n\nPriceInput.displayName = \"PriceInput\";\n","import { memo, useState } from \"react\";\nimport { utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype QuantityInputProps = {\n value: string | number;\n};\n\nexport const QuantityInput = memo((props: QuantityInputProps) => {\n const [focus, setFocus] = useState(false);\n const { t } = useTranslation();\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n\n const { base_dp, base_tick, base } = symbolInfo;\n\n const error =\n getErrorMsg(\"order_quantity\") || (focus ? getErrorMsg(\"total\") : \"\");\n\n const setQuantity = (val: string) => {\n setOrderValue(\"order_quantity\", val);\n };\n\n const onBlur = (value: string) => {\n if (base_tick && base_tick > 0) {\n const formatQty = utils.formatNumber(value, base_tick) ?? value;\n setQuantity(formatQty);\n }\n };\n\n return (\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 {base}\n </Text>\n }\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(base_dp),\n // inputFormatter.rangeFormatter({ max: props.maxQty }),\n ]}\n value={props.value}\n onValueChange={setQuantity}\n onBlur={(event) => {\n onBlur(event.target.value);\n setFocus(false);\n }}\n onFocus={() => {\n setFocus(true);\n }}\n tooltip={error}\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\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n});\n\nQuantityInput.displayName = \"QuantityInput\";\n","import { memo, useMemo } from \"react\";\nimport { useThrottledCallback, utils } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, Slider, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype QuantitySliderProps = {\n maxQty: number;\n quantity: string | number;\n};\n\nexport const QuantitySlider = memo((props: QuantitySliderProps) => {\n const { quantity, maxQty } = props;\n const { t } = useTranslation();\n\n const { symbolInfo, setOrderValue } = useEditSheetContext();\n const { base_dp, base_tick } = symbolInfo;\n\n const sliderValue = useMemo(() => {\n if (quantity && Number(quantity) !== 0 && maxQty !== 0) {\n const value = new Decimal(quantity)\n .div(maxQty)\n .mul(100)\n .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n .toNumber();\n return value;\n }\n return 0;\n }, [quantity, maxQty]);\n\n const sliderToQuantity = useThrottledCallback(\n (value: number) => {\n const newQty = new Decimal(value)\n .div(100)\n .mul(maxQty)\n .toDecimalPlaces(base_dp, Decimal.ROUND_DOWN)\n .toNumber();\n\n setOrderValue(\"order_quantity\", utils.formatNumber(newQty, base_tick));\n },\n 50,\n {},\n );\n\n const percentages =\n props.quantity && props.maxQty\n ? Math.min(Number(props.quantity) / props.maxQty, 1)\n : undefined;\n\n return (\n <>\n <Slider\n markCount={4}\n value={[sliderValue]}\n onValueChange={(e) => {\n sliderToQuantity(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\n gap={1}\n onClick={() => {\n setOrderValue(\"order_quantity\", maxQty.toString());\n }}\n >\n <Text size=\"2xs\" color=\"primary\">\n {t(\"common.max\")}\n </Text>\n <Text.numeral intensity={54} size=\"2xs\" dp={base_dp}>\n {props.maxQty}\n </Text.numeral>\n </Flex>\n </Flex>\n </>\n );\n});\n\nQuantitySlider.displayName = \"QuantitySlider\";\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype TrailingCallbackInputProps = {\n isCallbackValue?: boolean;\n callback_value?: number;\n callback_rate?: number;\n};\n\nexport const TrailingCallbackInput = memo(\n (props: TrailingCallbackInputProps) => {\n const { isCallbackValue, callback_value, callback_rate } = props;\n const { t } = useTranslation();\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n const { quote, quote_dp } = symbolInfo;\n\n const label = isCallbackValue\n ? t(\"orderEntry.trailingValue\")\n : t(\"orderEntry.trailingRate\");\n\n const field = isCallbackValue ? \"callback_value\" : \"callback_rate\";\n\n const suffix = isCallbackValue ? (\n <Text intensity={54} className=\"oui-px-3\">\n {quote}\n </Text>\n ) : (\n \"%\"\n );\n\n const error = getErrorMsg(field);\n\n const formatters = [\n inputFormatter.numberFormatter,\n inputFormatter.decimalPointFormatter,\n ];\n\n return (\n <Input.tooltip\n prefix={\n <Text intensity={54} className=\"oui-px-3\">\n {label}\n </Text>\n }\n suffix={suffix}\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={\n isCallbackValue\n ? [\n ...formatters,\n inputFormatter.currencyFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ]\n : [...formatters, inputFormatter.dpFormatter(1)]\n }\n value={isCallbackValue ? callback_value : callback_rate}\n onValueChange={(val) => setOrderValue(field, val)}\n tooltip={error}\n tooltipProps={{\n content: {\n // mobile max width\n className: \"oui-bg-base-5 oui-max-w-[360px]\",\n },\n arrow: {\n className: \"oui-fill-base-5\",\n },\n }}\n classNames={{\n input: \"oui-text-base-contrast\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n },\n);\n\nTrailingCallbackInput.displayName = \"TrailingCallbackInput\";\n","import { memo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Input, inputFormatter, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useEditSheetContext } from \"./editSheetContext\";\n\ntype TriggerPriceInputProps = {\n trigger_price?: string | number;\n disabled?: boolean;\n};\n\nexport const TriggerPriceInput = memo((props: TriggerPriceInputProps) => {\n const { t } = useTranslation();\n\n const { symbolInfo, setOrderValue, getErrorMsg } = useEditSheetContext();\n const { quote, quote_dp } = symbolInfo;\n\n const error = getErrorMsg(\"trigger_price\");\n\n return (\n <Input.tooltip\n prefix={\n <Text intensity={54} className=\"oui-px-3\">\n {t(\"common.triggerPrice\")}\n </Text>\n }\n suffix={\n <Text intensity={54} className=\"oui-px-3\">\n {quote}\n </Text>\n }\n color={error ? \"danger\" : undefined}\n align=\"right\"\n fullWidth\n autoComplete=\"off\"\n inputMode=\"decimal\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(quote_dp),\n ]}\n value={props.trigger_price}\n onValueChange={(val) => setOrderValue(\"trigger_price\", val)}\n disabled={props.disabled}\n tooltip={error}\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 oui-w-full\",\n root: cn(\"oui-outline-line-12\", error && \"oui-outline-danger\"),\n }}\n />\n );\n});\n\nTriggerPriceInput.displayName = \"TriggerPriceInput\";\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useOrderEntryFormErrorMsg } from \"@kodiak-finance/orderly-react-app\";\nimport {\n Button,\n Divider,\n Flex,\n SimpleDialog,\n Text,\n ThrottledButton,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ActivitedPriceInput } from \"./components/activitedPriceInput\";\nimport { ConfirmDialogContent } from \"./components/editDialogContent\";\nimport { EditSheetContext } from \"./components/editSheetContext\";\nimport { EditSheetHeader } from \"./components/editSheetHeader\";\nimport { PriceInput } from \"./components/priceInput\";\nimport { QuantityInput } from \"./components/quantityInput\";\nimport { QuantitySlider } from \"./components/quantitySlider\";\nimport { TrailingCallbackInput } from \"./components/trailingCallbackInput\";\nimport { TriggerPriceInput } from \"./components/triggerPriceInput\";\nimport { EditSheetState } from \"./editSheet.script\";\n\nexport const EditSheet: FC<EditSheetState> = (props) => {\n const {\n item,\n symbolInfo,\n formattedOrder,\n isStopMarket,\n isTrailingStop,\n setOrderValue,\n errors,\n } = props;\n const { t } = useTranslation();\n\n const { getErrorMsg } = useOrderEntryFormErrorMsg(errors!);\n\n const disabled =\n !props.isChanged ||\n Object.keys(errors!).length > 0 ||\n // when activated price is not empty, the activated price input should not be empty\n (!!item.activated_price && !formattedOrder.activated_price);\n\n const header = <EditSheetHeader item={item} />;\n\n const lastPrice = (\n <Flex width={\"100%\"} justify={\"between\"}>\n <Text>{t(\"common.lastPrice\")}</Text>\n <Text.numeral dp={symbolInfo.quote_dp}>\n {props.markPrice ?? \"--\"}\n </Text.numeral>\n </Flex>\n );\n\n const triggerPriceInput = props.showTriggerPrice && (\n <TriggerPriceInput\n trigger_price={formattedOrder.trigger_price}\n disabled={!!item.is_triggered}\n />\n );\n\n const renderPriceInput = () => {\n if (isTrailingStop) {\n return (\n item.activated_price && (\n <ActivitedPriceInput\n activated_price={formattedOrder.activated_price}\n disabled={item.is_activated}\n />\n )\n );\n }\n\n return (\n <PriceInput\n order_price={\n isStopMarket\n ? t(\"orderEntry.orderType.market\")\n : formattedOrder.order_price\n }\n disabled={isStopMarket}\n />\n );\n };\n\n const trailingCallbackInput = isTrailingStop && (\n <TrailingCallbackInput\n isCallbackValue={!!item.callback_value}\n callback_value={formattedOrder.callback_value}\n callback_rate={formattedOrder.callback_rate}\n />\n );\n\n const quantityInput = <QuantityInput value={formattedOrder.order_quantity} />;\n\n const quantitySlider = (\n <QuantitySlider\n maxQty={props.maxQty}\n quantity={formattedOrder.order_quantity}\n />\n );\n\n const buttons = (\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={disabled}\n >\n {t(\"common.confirm\")}\n </ThrottledButton>\n </Flex>\n );\n\n const ctxValue = useMemo(() => {\n return {\n symbolInfo,\n getErrorMsg,\n setOrderValue,\n };\n }, [symbolInfo, getErrorMsg, setOrderValue]);\n\n return (\n <EditSheetContext.Provider value={ctxValue}>\n <Flex\n direction={\"column\"}\n gap={3}\n width={\"100%\"}\n itemAlign={\"start\"}\n className=\"oui-text-sm\"\n >\n {header}\n <Divider intensity={8} className=\"oui-w-full\" />\n {lastPrice}\n <Flex width={\"100%\"} direction={\"column\"} itemAlign={\"stretch\"} gap={2}>\n {triggerPriceInput}\n {renderPriceInput()}\n {trailingCallbackInput}\n {quantityInput}\n {quantitySlider}\n </Flex>\n {buttons}\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 </EditSheetContext.Provider>\n );\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useOrderEntity } from \"@kodiak-finance/orderly-hooks\";\nimport {\n API,\n OrderlyOrder,\n OrderSide,\n OrderType,\n} from \"@kodiak-finance/orderly-types\";\n\nexport const useEditOrderEntry = (props: {\n order: API.AlgoOrderExt;\n orderType: OrderType;\n maxQty: number;\n}) => {\n const { order, orderType, maxQty } = props;\n\n const [formattedOrder, setFormattedOrder] = useState({\n symbol: order.symbol,\n side: order.side as OrderSide,\n reduce_only: order.reduce_only,\n order_type: orderType,\n // TODO: trailing stop order edit price twice, order.price will be 0\n order_price: order.price || undefined,\n order_quantity: order.quantity,\n trigger_price: order.trigger_price,\n activated_price: order.activated_price,\n callback_value: order.callback_value,\n callback_rate: order.callback_rate ? order.callback_rate * 100 : undefined,\n });\n\n const { markPrice, errors, validate, clearErrors } = useOrderEntity(\n formattedOrder,\n {\n maxQty,\n },\n );\n\n const setOrderValue = useCallback((key: keyof OrderlyOrder, value: any) => {\n setFormattedOrder((oldValue) => ({\n ...oldValue,\n [key]: value,\n }));\n }, []);\n\n const {\n order_price,\n order_quantity,\n trigger_price,\n activated_price,\n callback_value,\n callback_rate,\n } = formattedOrder;\n\n const isChanged =\n (order.price && order.price != order_price) ||\n (order.quantity && order.quantity != order_quantity) ||\n (order.trigger_price && order.trigger_price != trigger_price) ||\n // trailing stop fields\n (order.activated_price && order.activated_price != activated_price) ||\n (order.callback_value && order.callback_value != callback_value) ||\n (order.callback_rate && order.callback_rate * 100 != callback_rate);\n\n useEffect(() => {\n if (isChanged) {\n validate()\n .then((order) => {\n console.log(\"validate success\", order);\n })\n .catch((err) => {\n console.log(\"validate error\", err);\n });\n } else {\n clearErrors();\n }\n }, [\n isChanged,\n order_price,\n order_quantity,\n trigger_price,\n activated_price,\n callback_value,\n callback_rate,\n ]);\n\n return {\n markPrice,\n errors,\n validate,\n setOrderValue,\n formattedOrder,\n isChanged,\n };\n};\n","import { useMemo } from \"react\";\nimport { useMaxQty } from \"@kodiak-finance/orderly-hooks\";\nimport { API, OrderSide } from \"@kodiak-finance/orderly-types\";\n\nexport function useEditOrderMaxQty(\n order: API.AlgoOrderExt,\n positionQty?: number,\n) {\n const { reduce_only } = order;\n\n const maxQty = useMaxQty(order.symbol, order.side as OrderSide, reduce_only);\n\n return useMemo(() => {\n if (reduce_only) {\n return Math.abs(positionQty ?? 0);\n }\n return order.quantity + Math.abs(maxQty);\n }, [order.quantity, maxQty, reduce_only, positionQty]);\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { API, OrderEntity, OrderType } from \"@kodiak-finance/orderly-types\";\nimport { AlgoOrderRootType } from \"@kodiak-finance/orderly-types\";\nimport { toast, useModal } from \"@kodiak-finance/orderly-ui\";\nimport { convertApiOrderTypeToOrderEntryType } from \"../../../../utils/util\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useEditOrderEntry } from \"./hooks/useEditOrderEntry\";\nimport { useEditOrderMaxQty } from \"./hooks/useEditOrderMaxQty\";\n\nexport const useEditSheetScript = (props: {\n state: OrderCellState;\n position?: API.PositionTPSLExt;\n editAlgoOrder: (id: string, order: OrderEntity) => Promise<any>;\n editOrder: (id: string, order: OrderEntity) => Promise<any>;\n}) => {\n const { state, editAlgoOrder, editOrder, position } = props;\n const { item: order } = state;\n const { hide: onClose } = 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\n const isStopMarket = order?.type === \"MARKET\" && isAlgoOrder;\n const isTrailingStop = order.algo_type === OrderType.TRAILING_STOP;\n\n const showTriggerPrice = isAlgoOrder && !isTrailingStop;\n\n const orderType = useMemo(\n () => convertApiOrderTypeToOrderEntryType(order),\n [order],\n );\n\n const [orderConfirm, setOrderConfirm] = useLocalStorage(\n \"orderly_order_confirm\",\n true,\n );\n\n const maxQty = useEditOrderMaxQty(order, position?.position_qty);\n\n const {\n formattedOrder,\n setOrderValue,\n markPrice,\n errors,\n validate,\n isChanged,\n } = useEditOrderEntry({\n order,\n orderType,\n maxQty,\n });\n\n useEffect(() => {}, [order.price, formattedOrder.order_price]);\n\n const onCloseDialog = useCallback(() => {\n setDialogOpen(false);\n }, []);\n\n const onSubmit = useCallback(\n async (values: OrderEntity) => {\n let future;\n const 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 if (order.order_tag) {\n values.order_tag = order.order_tag;\n }\n\n if (order.client_order_id) {\n values.client_order_id = order.client_order_id;\n }\n\n if (order.algo_order_id !== undefined) {\n if (isTrailingStop) {\n if (values.callback_rate) {\n values = {\n ...values,\n callback_rate: (Number(values.callback_rate) / 100).toString(),\n };\n } else if (isStopMarket && \"order_price\" in values) {\n const { order_price, ...rest } = values;\n values = rest;\n }\n }\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, isTrailingStop],\n );\n\n const onDialogConfirm = () => {\n if (formattedOrder) {\n return onSubmit(formattedOrder as any);\n }\n return Promise.reject();\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 return {\n ...state,\n markPrice,\n isStopMarket,\n isTrailingStop,\n showTriggerPrice,\n formattedOrder,\n setOrderValue,\n maxQty,\n onClose,\n onSheetConfirm,\n errors,\n isChanged,\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","import { API, OrderEntity } from \"@kodiak-finance/orderly-types\";\nimport { OrderCellState } from \"../orderCell.script\";\nimport { useEditSheetScript } from \"./editSheet.script\";\nimport { EditSheet } from \"./editSheet.ui\";\n\ntype EditSheetWidgetProps = {\n state: OrderCellState;\n editAlgoOrder: (id: string, order: OrderEntity) => Promise<any>;\n editOrder: (id: string, order: OrderEntity) => Promise<any>;\n position?: API.PositionTPSLExt;\n};\n\nexport const EditSheetWidget = (props: EditSheetWidgetProps) => {\n const state = useEditSheetScript(props);\n return <EditSheet {...state} />;\n};\n","export { EditSheet } from \"./editSheet.ui\";\nexport { EditSheetWidget } from \"./editSheet.widget\";\nexport { useEditSheetScript } from \"./editSheet.script\";\n","import { useCallback } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport { PositionTPSLSheet } from \"@kodiak-finance/orderly-ui-tpsl\";\nimport { TabType } from \"../../../orders.widget\";\nimport { useOrderListContext } from \"../../orderListContext\";\nimport { useTPSLOrderRowContext } from \"../../tpslOrderRowContext\";\nimport { EditSheetWidget } from \"../editSheet\";\nimport { OrderCellState } from \"../orderCell.script\";\n\nexport const useEditBtnScript = (props: { state: OrderCellState }) => {\n const { state } = props;\n const { t } = useTranslation();\n const symbolInfo = useSymbolsInfo()[props.state.item.symbol]();\n\n const { editAlgoOrder, editOrder } = useOrderListContext();\n const { position } = useTPSLOrderRowContext();\n\n const onShowEditSheet = useCallback(() => {\n if (props.state.type === TabType.tp_sl) {\n modal\n .sheet({\n content: (\n <PositionTPSLSheet\n symbol={props.state.item.symbol}\n symbolInfo={symbolInfo}\n isEditing\n order={props.state.item}\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 state={state}\n position={position}\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 { OrderCellState } from \"../orderCell.script\";\nimport { useEditBtnScript } from \"./editBtn.script\";\nimport { EditBtn } from \"./editBtn.ui\";\n\nexport const EditBtnWidget = (props: { state: OrderCellState }) => {\n const state = useEditBtnScript(props);\n return <EditBtn {...state} />;\n};\n","export { EditBtn } from \"./editBtn.ui\";\nexport { EditBtnWidget } from \"./editBtn.widget\";\nexport { useEditBtnScript } from \"./editBtn.script\";\n","import React, { FC } from \"react\";\nimport { AlgoOrderRootType } from \"@kodiak-finance/orderly-types\";\nimport { Divider, Flex, Grid, Text } from \"@kodiak-finance/orderly-ui\";\nimport { TabType } from \"../../orders.widget\";\nimport { BracketOrderPriceWidget } from \"./bracketOrderPrice\";\nimport { CancelBtnWidget } from \"./cancelBtn\";\nimport { EditBtnWidget } from \"./editBtn\";\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 Fee,\n TrailingCallback,\n TrailingPrice,\n} from \"./items\";\nimport { OrderCellState } from \"./orderCell.script\";\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 const isTrailingStop =\n props.item?.algo_type === AlgoOrderRootType.TRAILING_STOP;\n\n if (isTrailingStop) {\n return (\n <>\n <Qty {...props} />\n <Filled {...props} />\n <EstTotal {...props} />\n <TriggerPrice {...props} isPending={true} />\n <TrailingPrice {...props} />\n <TrailingCallback {...props} />\n </>\n );\n }\n\n return (\n <>\n <Qty {...props} />\n <Filled {...props} />\n <EstTotal {...props} />\n <TriggerPrice {...props} isPending={true} />\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 {/* placeholder */}\n <div></div>\n {/* placeholder */}\n <div></div>\n <Fee {...props} />\n </>\n );\n }\n}\n","import { API } from \"@kodiak-finance/orderly-types\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { TabType } from \"../../orders.widget\";\nimport { useSymbolContext } from \"../../provider/symbolContext\";\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 // use symbolInfo replace ...symbolInfo\n symbolInfo,\n };\n};\n\nexport type OrderCellState = ReturnType<typeof useOrderCellScript>;\n","import { API } from \"@kodiak-finance/orderly-types\";\nimport { useOrderCellScript } from \"./orderCell.script\";\nimport { OrderCell } from \"./orderCell.ui\";\nimport { TabType } from \"../../orders.widget\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-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","export { OrderCell } from \"./orderCell.ui\";\nexport { OrderCellWidget } from \"./orderCell.widget\";\nexport { useOrderCellScript } from \"./orderCell.script\";\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { getMinNotional, useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useMemoizedFn } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, OrderEntity } from \"@kodiak-finance/orderly-types\";\nimport { OrderListContext, OrderListContextState } from \"./orderListContext\";\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 { cancelOrder, editOrder, cancelAlgoOrder, editAlgoOrder } = props;\n const { t } = useTranslation();\n const symbolsInfo = useSymbolsInfo();\n\n const onCancelOrder = useMemoizedFn(\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 const checkMinNotional = useMemoizedFn(\n (symbol: string, price?: string | number, qty?: string | number) => {\n const { min_notional } = symbolsInfo[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 );\n\n const memoizedValue = useMemo<OrderListContextState>(() => {\n return {\n onCancelOrder,\n editOrder,\n editAlgoOrder,\n checkMinNotional,\n };\n }, [onCancelOrder, editOrder, editAlgoOrder, checkMinNotional]);\n\n return (\n <OrderListContext.Provider value={memoizedValue}>\n {props.children}\n </OrderListContext.Provider>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Flex,\n ListView,\n Button,\n Grid,\n Picker,\n DataFilter,\n cn,\n TableFeatures,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { formatSymbol } from \"@kodiak-finance/orderly-utils\";\nimport { grayCell } from \"../../utils/util\";\nimport { TabType } from \"../orders.widget\";\nimport { SymbolProvider } from \"../provider/symbolProvider\";\nimport { useOrderColumn } from \"./desktop/useColumn\";\nimport { OrderCellWidget } from \"./mobile\";\nimport { OrdersBuilderState } from \"./orderList.script\";\nimport { OrderListProvider } from \"./orderListProvider\";\nimport { TPSLOrderRowProvider } from \"./tpslOrderRowContext\";\n\nexport const DesktopOrderList: FC<\n OrdersBuilderState & { testIds?: { tableBody?: string } }\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\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 {props.filterItems.length > 0 && (\n <DataFilter\n items={props.filterItems}\n onFilter={(value: any) => {\n props.onFilter(value);\n }}\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?: { root?: string; cell?: string; content?: string };\n showFilter?: boolean;\n onExport?: () => void;\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-w-full oui-grid-rows-[auto,1fr]\"\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\n gap={2}\n p={2}\n justify={\"between\"}\n itemAlign={\"center\"}\n className=\"oui-rounded-b-xl oui-bg-base-9\"\n >\n <Flex gap={2}>\n {props.filterItems.map((item) => {\n // not support range type\n if (item.type !== \"select\") {\n return null;\n }\n return (\n <Picker\n key={`item-${item.name}`}\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 {props.onExport && (\n <Button\n variant=\"outlined\"\n size=\"xs\"\n color=\"secondary\"\n onClick={props.onExport}\n >\n {t(\"common.export\") || \"Export CSV\"}\n </Button>\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 const { symbol } = props;\n\n const formattedSymbol = symbol ? formatSymbol(symbol, \"base\") : symbol;\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 {symbol\n ? t(\"orders.cancelAll.ofSymbol\", { symbol: formattedSymbol })\n : t(\"orders.cancelAll\")}\n </Button>\n );\n};\n","import { useMemo } from \"react\";\nimport { API, AlgoOrderRootType, OrderStatus } from \"@kodiak-finance/orderly-types\";\n\nexport const useFormatOrderHistory = (data: API.AlgoOrderExt[]) => {\n const formattedData = useMemo(() => {\n const _data: API.AlgoOrder[] = [];\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","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n ForwardedRef,\n useImperativeHandle,\n} from \"react\";\nimport { differenceInDays, setHours, subDays } from \"date-fns\";\nimport {\n useLocalStorage,\n useOrderStream,\n useSymbolsInfo,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport {\n AlgoOrderRootType,\n OrderStatus,\n OrderSide,\n API,\n} from \"@kodiak-finance/orderly-types\";\nimport { modal, usePagination, Text, Table } from \"@kodiak-finance/orderly-ui\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { areDatesEqual } from \"../../utils/util\";\nimport { TabType } from \"../orders.widget\";\nimport { useFormatOrderHistory } from \"./useFormatOrderHistory\";\n\nexport type OrderListInstance = {\n getRowCount?: () => number;\n getDataSource?: () => any[] | null;\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 {\n orderStatus,\n ordersSide,\n dateRange,\n filterItems,\n onFilter,\n filterDays,\n updateFilterDays,\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 const [\n data,\n {\n isLoading,\n loadMore,\n cancelOrder,\n updateOrder,\n cancelAlgoOrder,\n updateAlgoOrder,\n cancelAllPendingOrders,\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 sourceTypeAll: type === TabType.orderHistory,\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 isPending = props.type === TabType.pending;\n const isTPSL = props.type === TabType.tp_sl;\n\n const title = isPending\n ? t(\"orders.pending.cancelAll\")\n : isTPSL\n ? t(\"orders.tpsl.cancelAll\")\n : \"\";\n\n const getContent = (): React.ReactNode => {\n const baseMessage = isPending\n ? t(\"orders.pending.cancelAll.description\")\n : isTPSL\n ? t(\"orders.tpsl.cancelAll.description\")\n : \"\";\n\n if (!props.symbol) {\n return <Text size=\"sm\">{baseMessage}</Text>;\n }\n\n const messageWithSymbol = baseMessage.replace(\n \"?\",\n ` in ${props.symbol}?`,\n );\n return <Text size=\"sm\">{messageWithSymbol}</Text>;\n };\n\n modal.confirm({\n title: title,\n content: getContent(),\n onCancel: async () => {},\n onOk: async () => {\n try {\n // await cancelAll(null, { source_type: \"ALL\" });r\n if (type === TabType.tp_sl) {\n await cancelAllTPSLOrders(props.symbol);\n } else {\n await cancelAllPendingOrders(props.symbol);\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, props.symbol]);\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 useImperativeHandle(\n props.ref,\n () => ({\n getRowCount: () => {\n return tableInstance.current?.getRowCount?.() ?? 0;\n },\n getDataSource: () => {\n return dataSource ?? null;\n },\n }),\n [dataSource],\n );\n\n return {\n type,\n symbol: props.symbol,\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 filterDays,\n updateFilterDays,\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 /// default is 90d\n const [filterDays, setFilterDays] = useState<1 | 7 | 30 | 90 | null>(90);\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(), 89)),\n })\n : {});\n\n const [dateRange, setDateRange] = useState<{\n from?: Date;\n to?: Date;\n }>(defaultRange);\n\n const updateFilterDays = (days: 1 | 7 | 30 | 90) => {\n setFilterDays(days);\n setDateRange({\n from: offsetStartOfDay(subDays(new Date(), days - 1)),\n to: offsetEndOfDay(new Date()),\n });\n option.setPage(1);\n };\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 const newDateRange = formatDatePickerRange(filter.value);\n if (newDateRange.from && newDateRange.to) {\n const diffDays =\n Math.abs(differenceInDays(newDateRange.from, newDateRange.to)) + 1;\n const dateRangeMap: { [key: number]: { from: Date; to: Date } } = {\n 1: {\n from: offsetStartOfDay(new Date())!,\n to: offsetEndOfDay(new Date())!,\n },\n 7: {\n from: offsetStartOfDay(subDays(new Date(), 6))!,\n to: offsetEndOfDay(new Date())!,\n },\n 30: {\n from: offsetStartOfDay(subDays(new Date(), 29))!,\n to: offsetEndOfDay(new Date())!,\n },\n 90: {\n from: offsetStartOfDay(subDays(new Date(), 89))!,\n to: offsetEndOfDay(new Date())!,\n },\n };\n\n const dateRange = dateRangeMap[diffDays];\n if (\n dateRange &&\n areDatesEqual(dateRange.from, newDateRange.from) &&\n areDatesEqual(dateRange.to, newDateRange.to)\n ) {\n setFilterDays(diffDays as any);\n } else {\n setFilterDays(null);\n }\n }\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 filterDays,\n updateFilterDays,\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 React, { forwardRef } from \"react\";\nimport { OrderSide, OrderStatus, API } from \"@kodiak-finance/orderly-types\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { TabType } from \"../orders.widget\";\nimport { OrderListInstance, useOrderListScript } from \"./orderList.script\";\nimport { DesktopOrderList, MobileOrderList } from \"./orderList.ui\";\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 = React.forwardRef<\n OrderListInstance,\n {\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?: { root?: string; cell?: string; content?: string };\n showFilter?: boolean;\n filterConfig?: {\n side?: OrderSide | \"all\";\n range?: { from?: Date; to?: Date };\n };\n onExport?: () => void;\n }\n>((props, ref) => {\n const state = useOrderListScript({ ...props, enableLoadMore: true, ref });\n return (\n <MobileOrderList\n {...state}\n classNames={props.classNames}\n showFilter={props.showFilter}\n onExport={props.onExport}\n />\n );\n});\n","export { DesktopOrderList, MobileOrderList } from \"./orderList.ui\";\nexport {\n DesktopOrderListWidget,\n MobileOrderListWidget,\n} from \"./orderList.widget\";\nexport { useOrderListScript, type OrderListInstance } from \"./orderList.script\";\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { OrderStatus } from \"@kodiak-finance/orderly-types\";\nimport { TabPanel, Tabs } from \"@kodiak-finance/orderly-ui\";\nimport type { DesktopOrderListWidgetProps } from \"./orderList/orderList.widget\";\nimport { OrdersBuilderState } from \"./orders.script\";\nimport { TabType } from \"./orders.widget\";\n\nconst LazyDesktopOrderListWidget = React.lazy(() =>\n import(\"./orderList\").then((mod) => {\n return { default: mod.DesktopOrderListWidget };\n }),\n);\n\nexport const Orders: React.FC<OrdersBuilderState> = (props) => {\n const { t } = useTranslation();\n const { pnlNotionalDecimalPrecision, orderListRef } = props;\n const commonProps: Partial<DesktopOrderListWidgetProps> = {\n pnlNotionalDecimalPrecision: pnlNotionalDecimalPrecision,\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 <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.all}\n pnlNotionalDecimalPrecision={pnlNotionalDecimalPrecision}\n sharePnLConfig={props.sharePnLConfig}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.pending} title={t(\"orders.status.pending\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.pending}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.tp_sl} title={t(\"common.tpsl\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.tp_sl}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.filled} title={t(\"orders.status.filled\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.filled}\n ordersStatus={OrderStatus.FILLED}\n pnlNotionalDecimalPrecision={pnlNotionalDecimalPrecision}\n sharePnLConfig={props.sharePnLConfig}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.cancelled} title={t(\"orders.status.canceled\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.cancelled}\n ordersStatus={OrderStatus.CANCELLED}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n <TabPanel value={TabType.rejected} title={t(\"orders.status.rejected\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n ref={orderListRef}\n type={TabType.rejected}\n ordersStatus={OrderStatus.REJECTED}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel>\n {/* <TabPanel value={TabType.orderHistory} title={t(\"orders.orderHistory\")}>\n <React.Suspense fallback={null}>\n <LazyDesktopOrderListWidget\n type={TabType.orderHistory}\n {...commonProps}\n />\n </React.Suspense>\n </TabPanel> */}\n </Tabs>\n );\n};\n// ----------------- Orders ui component end -----------------\n","import { forwardRef } from \"react\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\nimport { OrderListInstance } from \"./orderList/orderList.script\";\nimport { useOrdersScript } from \"./orders.script\";\nimport { Orders } from \"./orders.ui\";\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 return <Orders {...state} />;\n },\n);\n","export {\n OrdersWidget,\n TabType,\n} from \"./components/orders.widget\";\nexport { useOrdersScript } from \"./components/orders.script\";\nexport type { OrdersBuilderState } from \"./components/orders.script\";\n\nexport * from \"./components/orderList\";\n"]}
|