@orderly.network/trading 2.6.0-alpha.0 → 2.6.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/desktop/dataList/dataList.ui.tsx","../src/components/base/positionHeader/positionHeader.ui.tsx","../src/components/base/positionHeader/positionHeader.script.tsx","../src/hooks/useTradingLocalStorage.ts","../src/hooks/usePositionsCount.ts","../src/hooks/usePendingOrderCount.ts","../src/components/base/positionHeader/positionHeader.widget.tsx","../src/provider/tradingPageContext.tsx","../src/components/desktop/dataList/dataList.script.tsx","../src/components/desktop/dataList/setting/setting.ui.tsx","../src/components/desktop/dataList/setting/setting.script.tsx","../src/components/desktop/dataList/setting/setting.widget.tsx","../src/components/desktop/dataList/dataList.widget.tsx","../src/components/base/lastTrades/lastTrades.ui.tsx","../src/components/base/lastTrades/lastTrades.script.tsx","../src/components/base/lastTrades/lastTrades.widget.tsx","../src/components/desktop/assetView/assetView.ui.tsx","../src/components/desktop/assetView/faucet/faucet.ui.tsx","../src/components/desktop/assetView/faucet/faucet.script.tsx","../src/components/desktop/assetView/faucet/faucet.widget.tsx","../src/components/desktop/assetView/assetView.script.tsx","../src/components/desktop/assetView/assetView.widget.tsx","../src/components/base/orderBook/orderBook.ui.tsx","../src/components/desktop/orderBook/index.desktop.tsx","../src/components/base/orderBook/orderContext.tsx","../src/components/desktop/orderBook/asks.desktop.tsx","../src/components/desktop/orderBook/listBox.desktop.tsx","../src/components/desktop/orderBook/cell.desktop.tsx","../src/components/base/orderBook/cellBar.tsx","../src/components/desktop/orderBook/bids.desktop.tsx","../src/components/desktop/orderBook/depthSelect.desktop.tsx","../src/components/desktop/orderBook/header.desktop.tsx","../src/components/desktop/orderBook/markPrice.desktop.tsx","../src/components/base/orderBook/midPriceView.tsx","../src/components/base/orderBook/markPrice.tsx","../src/components/mobile/orderBook/index.tsx","../src/components/mobile/fundingRate/fundingRate.ui.tsx","../src/components/mobile/fundingRate/fundingRate.script.tsx","../src/components/mobile/fundingRateModal/fundingRateModal.widget.tsx","../src/components/mobile/fundingRateModal/fundingRateModal.script.tsx","../src/components/mobile/fundingRateModal/fundingRateModal.ui.tsx","../src/components/mobile/fundingRate/fundingRate.widget.tsx","../src/components/mobile/orderBook/asks.tsx","../src/components/mobile/orderBook/listBox.tsx","../src/components/mobile/orderBook/cell.tsx","../src/components/mobile/orderBook/bids.tsx","../src/components/mobile/orderBook/depthSelect.tsx","../src/components/mobile/orderBook/header.tsx","../src/components/mobile/orderBook/markPrice.tsx","../src/components/base/orderBook/orderBook.script.tsx","../src/utils/utils.ts","../src/components/base/orderBook/orderBook.widget.tsx","../src/components/desktop/riskRate/riskRate.ui.tsx","../src/components/desktop/riskRate/riskRate.script.tsx","../src/components/desktop/riskRate/riskRate.widget.tsx","../src/components/desktop/orderBookAndTrades/orderBookAndTrades.ui.tsx","../src/components/desktop/orderBookAndTrades/orderBookAndTrades.script.tsx","../src/components/desktop/orderBookAndTrades/orderBookAndTrades.widget.tsx","../src/components/desktop/layout/splitLayout/splitLayout.tsx","../src/components/desktop/layout/splitLayout/splitLineBar.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.ui.tsx","../src/components/mobile/bottomNavBar/account/account.widget.tsx","../src/components/mobile/bottomNavBar/account/account.script.tsx","../src/components/mobile/accountSheet/accountSheet.ui.tsx","../src/components/mobile/accountSheet/icons.tsx","../src/components/mobile/accountSheet/accountSheet.script.tsx","../src/components/mobile/accountSheet/accountSheet.widget.tsx","../src/components/mobile/bottomNavBar/account/account.ui.tsx","../src/components/mobile/bottomNavBar/balance/balance.ui.tsx","../src/components/mobile/bottomNavBar/balance/balance.script.tsx","../src/components/mobile/bottomNavBar/balance/balance.widget.tsx","../src/components/mobile/bottomNavBar/chain/chain.ui.tsx","../src/components/mobile/bottomNavBar/chain/chain.script.tsx","../src/components/mobile/bottomNavBar/chain/chain.widget.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.script.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.widget.tsx","../src/components/mobile/portfolioSheet/portfolioSheet.ui.tsx","../src/components/mobile/portfolioSheet/portfolioSheet.script.tsx","../src/components/mobile/portfolioSheet/riskIndicator.tsx","../src/components/mobile/portfolioSheet/portfolioSheet.widget.tsx","../src/pages/trading/trading.ui.mobile.tsx","../src/components/mobile/dataList/dataList.ui.tsx","../src/components/mobile/dataList/dataList.script.tsx","../src/components/mobile/dataList/dataList.widget.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.ui.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.script.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.widget.tsx","../src/components/mobile/topTab/topTab.ui.tsx","../src/components/mobile/lastTrades/lastTrades.widget.tsx","../src/components/mobile/tradeData/tradeData.ui.tsx","../src/components/mobile/tradeData/tradeData.script.tsx","../src/components/mobile/tradeData/tradeData.widget.tsx","../src/components/mobile/tradingview/tradingview.ui.tsx","../src/components/base/icons.tsx","../src/components/mobile/tradingview/tradingview.script.tsx","../src/components/mobile/tradingview/tradingview.widget.tsx","../src/components/mobile/topTab/topTab.script.tsx","../src/components/mobile/topTab/topTab.widget.tsx","../src/pages/trading/trading.ui.desktop.tsx","../src/components/desktop/layout/removablePanel.tsx","../src/components/desktop/layout/switchLayout.tsx","../src/pages/trading/trading.script.tsx","../src/components/desktop/layout/useSplitPersistent.ts","../src/pages/trading/hooks/useFirstTimeDeposit.ts","../src/pages/trading/trading.ui.tsx","../src/pages/trading/trading.widget.tsx","../src/provider/tradingPageProvider.tsx","../src/pages/trading/trading.page.tsx"],"names":["useTranslation","OrderStatus","Box","Divider","Flex","TabPanel","Tabs","DesktopOrderListWidget","TabType","LiquidationWidget","PositionHistoryWidget","PositionsWidget","Checkbox","Statistic","Text","useScreen","Decimal","jsx","jsxs","PositionHeader","props","isMobile","MobileLayout","DesktopLayout","UnrealPnL","Notional","checked","unrealPnLClsName","unrealPnLROIClsName","usePositionStream","useDataTap","useLocalStorage","useTradingLocalStorage","unPnlPriceBasis","setUnPnlPriceBasic","pnlNotionalDecimalPrecision","setPnlNotionalDecimalPrecision","showAllSymbol","setShowAllSymbol","hideAssets","setHideAssets","useMemo","usePositionsCount","symbol","data","count","useOrderStream","AlgoOrderRootType","usePendingOrderCount","pendingOrdersPageSizeKey","tpslOrdersPageSizeKey","pendingOrders","pendingCount","tpslOrders","tpslCount","pendingOrderCount","tpSlOrderCount","usePositionHeaderScript","calcMode","aggregated","unrealPnL","unrealPnlROI","notional","PositionHeaderWidget","state","createContext","useContext","TradingPageContext","useTradingPageContext","useDataListScript","current","sharePnLConfig","includedPendingOrder","localStorage","onSymbolChange","positionCount","useState","Button","DropdownMenuContent","DropdownMenuRoot","DropdownMenuTrigger","SettingFillIcon","Setting","open","setOpen","t","DecimalPrecisionCheckbox","e","UnPnlPriceBasisCheckBox","value","onValueChange","RadioButton","sel","label","onCheckChange","SelIcon","UnselIcon","useSettingScript","SettingWidget","DataList","PositionsView","DataListWidget","cn","Grid","ListView","OrderSide","commifyOptional","LastTrades","Header","List","Row","left","mid","right","classNames","item","index","useMarketTradeStream","useSymbolsInfo","useLastTradesScript","isLoading","config","base","quote","baseDp","quoteDp","LastTradesWidget","useCallback","useAccount","useAppContext","AccountStatusEnum","ArrowDownShortIcon","EyeIcon","EyeCloseIcon","ChevronDownIcon","Tooltip","gradientTextVariants","AuthGuard","LTVRiskTooltipWidget","FaucetUi","useConfig","useMutation","useWalletConnector","ChainNamespace","isTestnet","modal","toast","useFaucetScript","connectedChain","namespace","account","operatorUrl","getTestUSDC","isMutating","loading","setLoading","showFaucet","message","res","resolve","error","FaucetWidget","Fragment","calculateTextColor","val","useCurrentStatusText","wrongNetwork","disabledConnect","statusText","TooltipContent","description","formula","TotalValue","totalValue","visible","onToggleVisibility","AssetDetail","unit","rule","placeholder","LTVDetail","AssetValueList","freeCollateral","marginRatioVal","renderMMR","isConnected","currentLtv","optionsOpen","setOptionsOpen","toggleOpen","prevOpen","showLTV","AssetView","networkId","isFirstTimeDeposit","onDeposit","onWithdraw","onTransfer","toggleVisible","isMainAccount","hasSubAccount","title","titleColor","titleClsName","transferButton","depositButton","withdrawButton","useAccountInstance","useEventEmitter","useCollateral","useMarginRatio","useComputedLTV","DepositAndWithdrawWithDialogId","TransferDialogId","useAssetViewScript","ee","marginRatio","mmr","positionsInfo","openDepositAndWithdraw","viewName","onSettle","setVisible","_freeCollateral","_marginRatioVal","_mmr","_totalValue","AssetViewWidget","useEffect","useRef","EMPTY_LIST","Spinner","React","OrderBookContext","useOrderBookContext","ORDERBOOK_COIN_TYPE_KEY","ORDERBOOK_MOBILE_COIN_TYPE_KEY","OrderBookProvider","mode","setMode","totalMode","setTotalMode","memoizedValue","TooltipTrigger","TooltipRoot","TooltipArrow","parseNumber","getPrecisionByNumber","CellBar","direction","transform","x","DesktopOrderBookCell","cellHeight","showTotal","onItemClick","depth","symbolInfo","currentHover","accumulated","accumulatedAmount","price","quantity","base_dp","quote_dp","coinType","width","dp","totalAmount","isPendingOrder","priceStr","DesktopListBox","type","countQty","findMaxItem","priceDp","maxQty","a","b","hoverIndex","setHoverIndex","Tip","isHover","calcHintInfo","totalInfo","hintInfo","info","content","contentDp","DesktopAsks","max","len","DesktopBids","Select","DesktopDepthSelect","options","d","CaretDownIcon","CaretUpIcon","Popover","Option","onClick","setCoinType","DesktopHeader","popoverOpen","TriggerIcon","Title","children","className","justifyEnd","ArrowUpShortIcon","MiddlePriceView","markPrice","lastPrice","iconSize","prevLastPrice","middlePrice","down","up","SimpleDialog","MarkPriceView","FlagIcon","DesktopMarkPrice","asks","bids","Spread","spread","bid1","ask1","dValue","DesktopOrderBook","onDepthChange","divRef","setShowTotal","resizeObserver","entries","entry","targetDiv","FundingRate","predFundingRate","countDown","useFundingRate","i18n","registerSimpleDialog","registerSimpleSheet","useFundingDetails","useFundingRateModalScript","fundingPeriod","capFunding","floorFunding","FundingRateModal","FundingRateModalWidget","FundingRateDialogId","FundingRateSheetId","useFundingRateScript","FundingRateWidget","OrderBookCell","coinUnit","setCoinUnit","renderCell","ListBox","Asks","Bids","Picker","DepthSelect","_","MarkPrice","OrderBook","useOrderbookStream","removeTrailingZeros","getBasicSymbolInfo","DEFAULT_CELL_HEIGHT","SPACE","useOrderBookScript","height","setCellHeight","level","setLevel","allDepths","usePendingOrderStream","cellsHeight","restSpace","selDepth","depths","OrderBookWidget","EditIcon","LeverageWidgetWithDialogId","RiskRate","riskRate","riskRateColor","currentLeverage","maxLeverage","isHigh","isMedium","isLow","textColor","useLeverage","getRiskRateColor","useRiskRateScript","curLeverage","riskRateNumber","_curLeverage","_maxLeverage","RiskRateWidget","OrderBookAndTrades","TwoColLayout","TabLayout","tab","useOrderBookAndTradesScript","containerSize","setContainerSize","setTab","containerRef","OrderBookAndTradesWidget","forwardRef","Split","SplitLineBar","onMouseDown","rest","disable","filterCls","cls","SplitLayout","ref","onSizeChange","barProps","num","ScanQRCodeWidget","ExtensionPositionEnum","ExtensionSlot","installExtension","ArrowRightShortIcon","HeadIcon","CopyIcon","USDCIcon","size","OrderlyIcon","AccountSheet","AccountInfo","ReferralInfo","TradingRewardsInfo","TWType","useChains","useCurEpochEstimate","useEpochInfo","useReferralInfo","useModal","useAccountSheetScript","linkDeviceStorage","accountId","address","hide","disconnect","chainId","showGetTestUSDC","chainName","useGetChains","onCopyAddress","affiliateCommission30D","traderCommission30D","isAffiliate","isTrader","onClickReferral","useReferral","curEpochId","estRewards","onClickTradingRewards","useTradingRewards","onDisconnect","gettingTestUSDC","_onClickReferral","_onClick","curEpochEstimate","list","curEpoch","mainChains","findByChainId","chain","AccountSheetWidget","useAccountScript","referral","tradingRewards","bottomSheetLeading","formatAddress","Account","MobileAccountMenuExtension","Balance","useBalanceScript","BalanceWidget","ChainIcon","ChainSelectorSheetId","Chain","r","useChainScript","currentChainId","setCurrentChainId","ChainWidget","BottomNavBar","renderContent","LinkDevice","showScanQRCode","showDialog","hideDialog","DesktopIcon","Dot","LinkIcon","MobileIcon","DotIcon","useBottomNavBarScript","BottomNavBarWidget","useId","Trans","ArrowLeftRightIcon","Input","inputFormatter","PlusIcon","ReduceIcon","RefreshIcon","useDebouncedCallback","DepositAndWithdrawWithSheetId","TransferSheetId","usePortfolioSheetScript","assets","useAssets","useMarginRatioAndLeverage","subAccounts","showSliderTip","setShowSliderTip","onSettlePnL","toggleHideAssets","totalCollateral","availableBalance","totalUnrealizedROI","update","leverageLevers","marks","leverage","setLeverage","step","onLeverageChange","onSave","err","onValueCommit","debouncedCommit","onInputChange","parsed","raw","clamped","prev","getMarginRatioColor","imr","high","low","RiskIndicator","PortfolioSheet","Asset","MarginRatio","Buttons","onUnsettleClick","clsName","PortfolioSheetWidget","MarketsSheetWidget","SymbolInfoBarWidget","SimpleSheet","MobileOrderListWidget","MobileLiquidationWidget","MobilePositionHistoryWidget","MobilePositionsWidget","subTab","setSubTab","cancelAllOrders","cancelAllTPSLOrders","OrdersView","HistoryTab","SymbolControlHeader","OrderEntryWidget","OrderBookAndEntry","setHeight","div","useOrderBookAndEntryScript","OrderBookAndEntryWidget","MWebLastTrades","TradeData","showUSDC","useTickerStream","useTradeDataScript","ticker","vol_24h","close","volume","openInterest","TradeDataWidget","TradingviewWidget","KlineDragIcon","TradingviewUi","MaxHeight","MinHeight","Key","useTradingviewScript","dragging","setDragging","dragRef","boxRef","offsetY","setOffsetY","topRef","handleTouchStart","event","rect","handleTouchMove","newHeight","handleTouchEnd","drag","useTopTabScript","TopTab","tradingViewConfig","ChevronIcon","TopTabWidget","MaybeEqual","topBar","SideMarketsWidget","SymbolInfoBarFullWidget","TradingviewFullscreenKey","DepositStatusWidget","RemovablePanel","showIndicator","TopIcon","MiddleIcon","BottomIcon","Icon","idx","IndicatorIcon","CloseIcon","DropdownMenuPortal","SwitchLayout","SwitchLayoutDropDown","LayoutIcon","renderItem","position","OrderEntryIcon","useMediaQuery","useSplitPersistent","key","defaulValue","dep","useAssetsHistory","AssetHistorySideEnum","AssetHistoryStatusEnum","useFirstTimeDeposit","unavailable","startTime","endTime","meta","scrollBarWidth","topBarHeight","bottomBarHeight","space","symbolInfoBarHeight","orderEntryMinWidth","orderEntryMaxWidth","orderbookMinWidth","orderbookMaxWidth","orderbookMinHeight","orderbookMaxHeight","tradindviewMinHeight","tradingViewMinWidth","dataListMaxHeight","dataListInitialHeight","useTradingScript","openMarketsSheet","setOpenMarketsSheet","restrictedInfo","onRouteChange","total","max2XL","min3XL","max4XL","layout","setLayout","canTrade","onShowPortfolioSheet","horizontalDraggable","positionsState","useOrderEntryPositions","marketsCollapseState","useMarketsCollapse","observerState","useObserverOrderEntry","marketsWidth","tradindviewMaxHeight","dataListMinHeight","splitSizeState","useSplitSize","tradingViewHeightState","useExtraHeight","map","collapsable","animating","setAnimating","collapsed","setCollapsed","onCollapse","_collapsed","positions","setPositions","updatePositions","currentIdx","targetIdx","pos","i","showPositionIcon","mainSplitSize","setMainSplitSize","dataListSplitSize","setDataListSplitSize","orderBookSplitSize","setOrderbookSplitSize","dataListSplitHeightSM","setDataListSplitHeightSM","orderBookSplitHeightSM","setOrderbookSplitHeightSM","orderEntryHeight","setOrderEntryHeight","orderEntryViewRef","element","getOffsetSizeNum","tradingviewAndOrderbookSplitRef","max2XLSplitRef","extraHeight","setExtraHeight","dataListHeight","setDataListHeight","preSize","nextSize","boxHeight","splitTradingviewHeight","splitOrderbookHeight","tradingviewHeight","orderbookHeight","offset","splitDataListHeight","onLayout","tradingViewFullScreen","minScreenHeight","minScreenHeightSM","marketsWidget","marketsView","trailing","symbolInfoBarView","library_path","restTradingViewConfig","tradingviewWidget","tradingView","orderbookWidget","orderbookView","dataListWidget","dataListView","assetsOrderEntryMargin","orderEntryWidget","orderEntryView","tradingViewAndOrderbookView","renderTradingViewAndOrderbookView","mainView","Trading","TradingWidget","TradingPageProvider","basicSymbol","TradingPage"],"mappings":"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","sourcesContent":["import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { Box, Divider, Flex, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { DesktopOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport {\n LiquidationWidget,\n PositionHistoryWidget,\n PositionsWidget,\n} from \"@orderly.network/ui-positions\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\nimport { DataListState, DataListTabType } from \"./dataList.script\";\nimport { SettingWidget } from \"./setting\";\n\nexport const DataList: FC<DataListState> = (props) => {\n const { t } = useTranslation();\n\n // return (\n // <DesktopOrderListWidget\n // type={TabType.orderHistory}\n // onSymbolChange={props.onSymbolChange}\n // />\n // );\n return (\n <Tabs\n defaultValue={props.current || DataListTabType.positions}\n variant=\"contained\"\n trailing={\n <SettingWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n setPnlNotionalDecimalPrecision={props.setPnlNotionalDecimalPrecision}\n unPnlPriceBasis={props.unPnlPriceBasis}\n setUnPnlPriceBasic={props.setUnPnlPriceBasic}\n hideOtherSymbols={!props.showAllSymbol}\n setHideOtherSymbols={(value: boolean) =>\n props.setShowAllSymbol(!value)\n }\n />\n }\n size=\"lg\"\n className=\"oui-h-full\"\n classNames={{\n // tabsList: \"oui-px-3\",\n tabsContent: \"oui-h-[calc(100%_-_32px)]\",\n }}\n >\n <TabPanel\n testid=\"oui-testid-dataList-position-tab\"\n value={DataListTabType.positions}\n title={`${t(\"common.positions\")} ${\n (props.positionCount ?? 0) > 0 ? `(${props.positionCount})` : \"\"\n }`}\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-pending-tab\"\n value={DataListTabType.pending}\n title={`${t(\"orders.status.pending\")} ${\n (props.pendingOrderCount ?? 0) > 0\n ? `(${props.pendingOrderCount})`\n : \"\"\n }`}\n >\n <DesktopOrderListWidget\n type={TabType.pending}\n ordersStatus={OrderStatus.INCOMPLETE}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n testIds={{\n tableBody: \"oui-testid-dataList-pending-table-body\",\n }}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-tpsl-tab\"\n value={DataListTabType.tp_sl}\n title={`${t(\"common.tpsl\")} ${\n (props.tpSlOrderCount ?? 0) > 0 ? `(${props.tpSlOrderCount})` : \"\"\n }`}\n >\n <DesktopOrderListWidget\n type={TabType.tp_sl}\n ordersStatus={OrderStatus.INCOMPLETE}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n testIds={{\n tableBody: \"oui-testid-dataList-tpsl-table-body\",\n }}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-filled-tab\"\n value={DataListTabType.filled}\n title={t(\"orders.status.filled\")}\n >\n <DesktopOrderListWidget\n type={TabType.filled}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n ordersStatus={OrderStatus.FILLED}\n onSymbolChange={props.onSymbolChange}\n testIds={{\n tableBody: \"oui-testid-dataList-filled-table-body\",\n }}\n sharePnLConfig={props.sharePnLConfig}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-positionHistory-tab\"\n value={DataListTabType.positionHistory}\n title={t(\"positions.positionHistory\")}\n >\n <PositionHistoryWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n sharePnLConfig={props.sharePnLConfig}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-orderHistory-tab\"\n value={DataListTabType.orderHistory}\n title={t(\"orders.orderHistory\")}\n >\n <DesktopOrderListWidget\n type={TabType.orderHistory}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n testIds={{\n tableBody: \"oui-testid-dataList-orderHistory-table-body\",\n }}\n sharePnLConfig={props.sharePnLConfig}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-liquidation-tab\"\n value={DataListTabType.liquidation}\n title={t(\"positions.liquidation\")}\n >\n <LiquidationWidget\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n />\n </TabPanel>\n </Tabs>\n );\n};\n\nconst PositionsView: FC<DataListState> = (props) => {\n return (\n <Flex direction=\"column\" width=\"100%\" height=\"100%\">\n <PositionHeaderWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n unPnlPriceBasis={props.unPnlPriceBasis}\n />\n <Divider className=\"oui-w-full\" />\n <Box className=\"oui-h-[calc(100%_-_60px)]\" width=\"100%\">\n <PositionsWidget\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n sharePnLConfig={props.sharePnLConfig}\n calcMode={props.calcMode}\n includedPendingOrder={props.includedPendingOrder}\n onSymbolChange={props.onSymbolChange}\n />\n </Box>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport {\n Checkbox,\n Divider,\n Flex,\n Statistic,\n Text,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { PositionHeaderState } from \"./positionHeader.script\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const PositionHeader: FC<PositionHeaderState> = (props) => {\n const { isMobile } = useScreen();\n\n return isMobile ? <MobileLayout {...props} /> : <DesktopLayout {...props} />;\n};\n\nconst MobileLayout: FC<PositionHeaderState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={2}\n width={\"100%\"}\n itemAlign={\"start\"}\n p={2}\n className=\"oui-bg-base-9 oui-rounded-b-xl\"\n >\n <Flex width={\"100%\"} justify={\"between\"}>\n <UnrealPnL\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n root: \"oui-text-sm\",\n }}\n {...props}\n />\n <Notional\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n root: \"oui-text-sm\",\n }}\n {...props}\n />\n </Flex>\n <Divider className=\"oui-w-full\" />\n <Flex className=\"oui-gap-[2px] oui-cursor-pointer\">\n <Checkbox\n id=\"oui-checkbox-hideOtherSymbols\"\n color=\"white\"\n checked={!props.showAllSymbol}\n onCheckedChange={(checked: boolean) => {\n props.setShowAllSymbol(!checked);\n }}\n />\n\n <label\n className=\"oui-text-2xs oui-text-base-contrast-54 oui-cursor-pointer\"\n htmlFor=\"oui-checkbox-hideOtherSymbols\"\n >\n {t(\"trading.hideOtherSymbols\")}\n </label>\n </Flex>\n </Flex>\n );\n};\nconst DesktopLayout: FC<PositionHeaderState> = (props) => {\n return (\n <Flex py={2} px={3} gap={6} width={\"100%\"} justify={\"start\"}>\n <UnrealPnL\n {...props}\n classNames={{ label: \"oui-text-base-contrast-54\" }}\n />\n <Notional\n {...props}\n classNames={{ label: \"oui-text-base-contrast-54\" }}\n />\n </Flex>\n );\n};\n\nconst UnrealPnL: FC<\n PositionHeaderState & {\n classNames?:\n | {\n root?: string;\n label?: string;\n value?: string;\n }\n | undefined;\n }\n> = (props) => {\n const { t } = useTranslation();\n\n const unrealPnLClsName =\n typeof props.unrealPnL === \"number\"\n ? props.unrealPnL >= 0\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\"\n : \"oui-text-base-contrast-80\";\n\n const unrealPnLROIClsName =\n typeof props.unrealPnL === \"number\" && props.unrealPnlROI\n ? props.unrealPnlROI >= 0\n ? \"oui-text-success-darken\"\n : \"oui-text-danger-darken\"\n : \"oui-text-base-contrast-80\";\n\n return (\n <Statistic label={t(\"common.unrealizedPnl\")} classNames={props.classNames}>\n <Flex gap={1}>\n <Text.numeral\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n className={unrealPnLClsName}\n >\n {props.unrealPnL ?? \"--\"}\n </Text.numeral>\n {typeof props.unrealPnlROI !== \"undefined\" && (\n <Text.numeral\n prefix=\"(\"\n suffix=\")\"\n rule=\"percentages\"\n size=\"2xs\"\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n className={unrealPnLROIClsName}\n >\n {props.unrealPnlROI}\n </Text.numeral>\n )}\n </Flex>\n </Statistic>\n );\n};\n\nconst Notional: FC<\n PositionHeaderState & {\n classNames?:\n | {\n root?: string;\n label?: string;\n value?: string;\n }\n | undefined;\n }\n> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Statistic label={t(\"common.notional\")} classNames={props.classNames}>\n <Text.numeral\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n >\n {props.notional ?? \"--\"}\n </Text.numeral>\n </Statistic>\n );\n};\n","import { usePositionStream } from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { useTradingLocalStorage } from \"../../../hooks\";\n\nexport const usePositionHeaderScript = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n}) => {\n const { pnlNotionalDecimalPrecision, unPnlPriceBasis, symbol } = props;\n const calcMode = unPnlPriceBasis;\n\n const [data] = usePositionStream(symbol, {\n calcMode,\n });\n const aggregated = useDataTap(data.aggregated);\n\n const unrealPnL = aggregated?.total_unreal_pnl;\n const unrealPnlROI = aggregated?.unrealPnlROI;\n const notional = aggregated?.notional;\n const { showAllSymbol, setShowAllSymbol } = useTradingLocalStorage();\n\n return {\n pnlNotionalDecimalPrecision,\n unrealPnL,\n unrealPnlROI,\n notional,\n showAllSymbol,\n setShowAllSymbol,\n };\n};\n\nexport type PositionHeaderState = ReturnType<typeof usePositionHeaderScript>;\n","import { useLocalStorage } from \"@orderly.network/hooks\";\n\nexport const useTradingLocalStorage = (props?: {\n pnlNotionalDecimalPrecision?: number;\n}) => {\n const [unPnlPriceBasis, setUnPnlPriceBasic] = useLocalStorage(\n \"unPnlPriceBasis\",\n \"markPrice\",\n );\n const [pnlNotionalDecimalPrecision, setPnlNotionalDecimalPrecision] =\n useLocalStorage(\n \"pnlNotionalDecimalPrecision\",\n props?.pnlNotionalDecimalPrecision ?? 2,\n );\n const [showAllSymbol, setShowAllSymbol] = useLocalStorage(\n \"showAllSymbol\",\n true,\n );\n\n const [hideAssets, setHideAssets] = useLocalStorage(\"hideAssets\", false);\n\n return {\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n showAllSymbol,\n setShowAllSymbol,\n hideAssets,\n setHideAssets,\n };\n};\n","import { useMemo } from \"react\";\nimport { usePositionStream } from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\n\nexport const usePositionsCount = (symbol?: string) => {\n const { showAllSymbol } = useTradingLocalStorage();\n const [data] = usePositionStream(showAllSymbol ? undefined : symbol);\n\n const count = useMemo(() => {\n return data.rows?.length;\n }, [data.rows?.length]);\n\n const positionCount = useDataTap(count) ?? 0;\n\n return {\n positionCount,\n };\n};\n","import { useOrderStream } from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { AlgoOrderRootType, OrderStatus } from \"@orderly.network/types\";\nimport { TabType } from \"@orderly.network/ui-orders\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\n\nexport const usePendingOrderCount = (symbol?: string) => {\n const { showAllSymbol } = useTradingLocalStorage();\n\n const pendingOrdersPageSizeKey = `orderly_${TabType.pending}_pageSize`;\n const tpslOrdersPageSizeKey = `orderly_${TabType.tp_sl}_pageSize`;\n //\n // const [pendingOrderPageSize] = useLocalStorage(pendingOrdersPageSizeKey, 500);\n // const [tpslOrderPageSize] = useLocalStorage(tpslOrdersPageSizeKey, 500);\n\n const [pendingOrders, { total: pendingCount }] = useOrderStream(\n {\n symbol: showAllSymbol ? undefined : symbol,\n status: OrderStatus.INCOMPLETE,\n excludes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n // size: pendingOrderPageSize,\n size: 500,\n // sourceTypeAll: true,\n },\n {\n keeplive: true,\n },\n );\n\n const [tpslOrders, { total: tpslCount }] = useOrderStream(\n {\n symbol: showAllSymbol ? undefined : symbol,\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n // size: tpslOrderPageSize,\n size: 500,\n // sourceTypeAll: true,\n },\n {\n keeplive: true,\n },\n );\n\n const pendingOrderCount = useDataTap(pendingCount) ?? 0;\n const tpSlOrderCount = useDataTap(tpslCount) ?? 0;\n\n return {\n pendingOrderCount,\n tpSlOrderCount,\n };\n};\n","import { usePositionHeaderScript } from \"./positionHeader.script\";\nimport { PositionHeader } from \"./positionHeader.ui\";\n\nexport const PositionHeaderWidget = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n}) => {\n const state = usePositionHeaderScript(props);\n return <PositionHeader {...state}/>;\n};\n","import { createContext, useContext } from \"react\";\nimport { TradingPageState } from \"../types/types\";\n\nexport const TradingPageContext = createContext({} as TradingPageState);\n\nexport const useTradingPageContext = () => {\n return useContext(TradingPageContext);\n};\n","import { PositionsProps } from \"@orderly.network/ui-positions\";\nimport {\n usePendingOrderCount,\n usePositionsCount,\n useTradingLocalStorage,\n} from \"../../../hooks\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport enum DataListTabType {\n positions = \"Positions\",\n pending = \"Pending\",\n tp_sl = \"TP/SL\",\n filled = \"Filled\",\n positionHistory = \"Position history\",\n orderHistory = \"Order history\",\n liquidation = \"Liquidation\",\n}\n\nexport const useDataListScript = (\n props: {\n current?: DataListTabType;\n } & PositionsProps,\n) => {\n const {\n current,\n pnlNotionalDecimalPrecision,\n sharePnLConfig,\n symbol,\n includedPendingOrder,\n } = props;\n const localStorage = useTradingLocalStorage({\n pnlNotionalDecimalPrecision,\n });\n const { onSymbolChange } = useTradingPageContext();\n\n const { positionCount } = usePositionsCount(props.symbol);\n const { pendingOrderCount, tpSlOrderCount } = usePendingOrderCount(\n props.symbol,\n );\n\n return {\n current,\n sharePnLConfig,\n symbol,\n calcMode: localStorage.unPnlPriceBasis,\n includedPendingOrder,\n ...localStorage,\n positionCount,\n pendingOrderCount,\n tpSlOrderCount,\n onSymbolChange,\n };\n};\n\nexport type DataListState = ReturnType<typeof useDataListScript>;\n","import { FC, useCallback, useState } from \"react\";\nimport {\n Button,\n Checkbox,\n Divider,\n DropdownMenuContent,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n SettingFillIcon,\n Text,\n} from \"@orderly.network/ui\";\nimport { SettingState } from \"./setting.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Setting: FC<SettingState> = (props) => {\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n return (\n <Flex gap={0}>\n <Flex gap={1}>\n <Checkbox\n id=\"oui-checkbox-hideOtherSymbols\"\n color=\"white\"\n checked={props.hideOtherSymbols}\n onCheckedChange={(checked: boolean) => {\n props.setHideOtherSymbols(checked);\n }}\n />\n <label\n className=\"oui-text-xs oui-text-base-contrast-54 oui-cursor-pointer\"\n htmlFor=\"oui-checkbox-hideOtherSymbols\"\n >\n {t(\"trading.hideOtherSymbols\")}\n </label>\n </Flex>\n\n <DropdownMenuRoot open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"xs\"\n type=\"button\"\n variant=\"contained\"\n className=\"oui-bg-transparent hover:oui-bg-transparent\"\n >\n <SettingFillIcon\n size={16}\n color=\"white\"\n opacity={1}\n className=\"oui-text-white/[.36] hover:oui-text-white/80\"\n />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"oui-px-5 oui-py-3 oui-w-[360px]\"\n alignOffset={2}\n align=\"end\"\n >\n <div className=\"oui-flex oui-flex-col oui-text-sm\">\n <Text className=\"oui-text-base oui-pb-3\">\n {t(\"trading.portfolioSettings\")}\n </Text>\n <Divider />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n {t(\"trading.portfolioSettings.decimalPrecision\")}\n </Text>\n <DecimalPrecisionCheckbox\n value={props.pnlNotionalDecimalPrecision}\n onValueChange={(e) => {\n props.setPnlNotionalDecimalPrecision(e);\n setOpen(false);\n }}\n />\n <Divider className=\"oui-my-3\" />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n {t(\"trading.portfolioSettings.unrealPnlPriceBasis\")}\n </Text>\n <UnPnlPriceBasisCheckBox\n value={props.unPnlPriceBasis}\n onValueChange={(e) => {\n props.setUnPnlPriceBasic(e);\n setOpen(false);\n }}\n />\n </div>\n </DropdownMenuContent>\n </DropdownMenuRoot>\n </Flex>\n );\n};\n\nconst UnPnlPriceBasisCheckBox = (props: {\n value: string;\n onValueChange: (value: string) => void;\n}) => {\n const { value, onValueChange } = props;\n const { t } = useTranslation();\n\n // \"markPrice\" | \"lastPrice\"\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === \"markPrice\"}\n label={t(\"common.markPrice\")}\n value={\"markPrice\"}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === \"lastPrice\"}\n label={t(\"common.lastPrice\")}\n value={\"lastPrice\"}\n onCheckChange={onValueChange}\n />\n </Flex>\n );\n};\n\nconst DecimalPrecisionCheckbox = (props: {\n value: number;\n onValueChange: (value: number) => void;\n}) => {\n const { value, onValueChange } = props;\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === 0}\n label={1}\n value={0}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === 1}\n label={0.1}\n value={1}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === 2}\n label={0.01}\n value={2}\n onCheckChange={onValueChange}\n />\n </Flex>\n );\n};\n\n// const InnerCheckbox = (props: {\n// sel: boolean;\n// label: any;\n// value: any;\n// onCheckChange: (value: any) => void;\n// }) => {\n// const { sel, label, value, onCheckChange } = props;\n// return (\n// <Flex\n// onClick={(e) => {\n// onCheckChange(value);\n// e.stopPropagation();\n// }}\n// gap={1}\n// >\n// <Checkbox color=\"white\" checked={sel} />\n// <Text size=\"xs\" intensity={sel ? 98 : 54}>\n// {`${label}`}\n// </Text>\n// </Flex>\n// );\n// };\n\nconst RadioButton = (props: {\n sel: boolean;\n label: any;\n value: any;\n onCheckChange: (value: any) => void;\n}) => {\n const { sel, label, value, onCheckChange } = props;\n return (\n <Flex\n onClick={(e) => {\n onCheckChange(value);\n e.stopPropagation();\n }}\n gap={1}\n className=\"oui-cursor-pointer\"\n >\n {sel ? <SelIcon /> : <UnselIcon />}\n <Text size=\"2xs\" intensity={sel ? 98 : 54}>\n {label}\n </Text>\n </Flex>\n );\n};\n\nconst SelIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-white\"\n >\n <path\n d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <circle cx=\"8\" cy=\"8\" r=\"3.333\" />\n </svg>\n );\n};\n\nconst UnselIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n );\n};\n","import { SettingWidgetProps } from \"./setting.widget\";\n\nexport const useSettingScript = (props: SettingWidgetProps) => {\n return {\n ...props,\n };\n};\n\nexport type SettingState = ReturnType<typeof useSettingScript>;\n","import { useSettingScript } from \"./setting.script\";\nimport { Setting } from \"./setting.ui\";\n\nexport type SettingWidgetProps = {\n pnlNotionalDecimalPrecision: any;\n setPnlNotionalDecimalPrecision: (value: number) => void;\n unPnlPriceBasis: any;\n setUnPnlPriceBasic: (value: string) => void;\n hideOtherSymbols: any;\n setHideOtherSymbols: (value: boolean) => void;\n}\n\nexport const SettingWidget = (props: SettingWidgetProps) => {\n const state = useSettingScript(props);\n return <Setting {...state} />;\n};\n","import { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { DataListTabType, useDataListScript } from \"./dataList.script\";\nimport { DataList } from \"./dataList.ui\";\n\nexport const DataListWidget = (\n props: {\n current?: DataListTabType;\n } & PositionsProps\n) => {\n const state = useDataListScript({\n ...props,\n });\n return <DataList {...state} />;\n};\n","import React, { FC, ReactNode } from \"react\";\nimport { Box, cn, Grid, ListView, Text } from \"@orderly.network/ui\";\nimport { LastTradesState } from \"./lastTrades.script\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const LastTrades: FC<\n LastTradesState & {\n classNames?: {\n root?: string;\n list?: string;\n listHeader?: string;\n listItem?: {\n left?: string;\n mid?: string;\n right?: string;\n };\n };\n style?: React.CSSProperties;\n }\n> = (props) => {\n return (\n <Box\n className={cn(\n \"oui-grid oui-grid-rows=[auto,1fr] oui-h-full oui-w-full\",\n props.classNames?.root\n )}\n style={props.style}\n >\n <Box className=\"oui-pr-1\">\n <Header\n base={props.base}\n quote={props.quote}\n className={props.classNames?.listHeader}\n />\n </Box>\n <List\n data={props.data}\n isLoading={props.isLoading}\n baseDp={props.baseDp}\n quoteDp={props.quoteDp}\n classNames={props.classNames?.listItem}\n className={props.classNames?.list}\n />\n </Box>\n );\n};\n\nconst Row = (props: {\n key?: React.Key | null;\n classNames?: {\n root?: string;\n left?: string;\n mid?: string;\n right?: string;\n };\n left: ReactNode | string;\n mid: ReactNode | string;\n right: ReactNode | string;\n}) => {\n const { left, mid, right, classNames } = props;\n return (\n // <Flex\n // key={key}\n // height={20}\n // gap={2}\n // width={\"100%\"}\n // className={cn(\"oui-text-xs oui-tabular-nums\", classNames?.root)}\n // >\n // <Box className={cn(\"oui-flex-1\", classNames?.left)}>{left}</Box>\n // <Box className={cn(\"oui-flex-1\", classNames?.mid)}>{mid}</Box>\n // <Box className={cn(\"oui-flex-1 oui-text-right\", classNames?.right)}>\n // {right}\n // </Box>\n // </Flex>\n\n <Grid\n cols={3}\n gapX={2}\n width=\"100%\"\n className={cn(\"oui-text-xs oui-tabular-nums\", classNames?.root)}\n >\n <div className={cn(\"oui-flex-1\", classNames?.left)}>{left}</div>\n <div className={cn(\"oui-flex-1\", classNames?.mid)}>{mid}</div>\n <div className={cn(\"oui-flex-1 oui-text-right\", classNames?.right)}>\n {right}\n </div>\n </Grid>\n );\n};\n\nconst Header = (props: { base: string; quote: string; className?: string }) => {\n const { t } = useTranslation();\n return (\n <Row\n left={t(\"common.time\")}\n mid={`${t(\"common.price\")}(${props.quote})`}\n right={`${t(\"common.qty\")}(${props.base})`}\n classNames={{\n root: cn(\n \"oui-text-base-contrast-54 oui-h-[32px] oui-sticky\",\n props.className\n ),\n }}\n />\n );\n};\n\nconst List = (props: {\n data?: any[];\n isLoading?: boolean;\n baseDp: number;\n quoteDp: number;\n classNames?: {\n left?: string;\n mid?: string;\n right?: string;\n };\n className?: string;\n}) => {\n return (\n <ListView\n dataSource={props.data}\n className={cn(\n \"oui-last-trades-list\",\n \"oui-w-full oui-h-full\",\n props.className,\n \"oui-overflow-auto\"\n )}\n contentClassName=\"!oui-space-y-0 oui-pr-[-4px]\"\n renderItem={(item, index) => {\n return (\n <Row\n key={index}\n left={\n <Text.formatted rule={\"date\"} formatString=\"HH:mm:ss\">\n {item?.ts}\n </Text.formatted>\n }\n mid={commifyOptional(item?.price, { fix: props.quoteDp })}\n right={commifyOptional(item?.size, { fix: props.baseDp })}\n classNames={{\n left: cn(\"oui-text-base-contrast-80\", props.classNames?.left),\n right: cn(\n item.side === OrderSide.BUY\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\",\n props.classNames?.mid\n ),\n mid: cn(\n item.side === OrderSide.BUY\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\",\n props.classNames?.right\n ),\n }}\n />\n );\n }}\n />\n );\n};\n","import { useMarketTradeStream, useSymbolsInfo } from \"@orderly.network/hooks\";\n\nexport const useLastTradesScript = (symbol: string) => {\n const { data, isLoading } = useMarketTradeStream(symbol);\n // const { quote, quote_dp, base, base_dp } = useContext(SymbolContext);\n const config = useSymbolsInfo()?.[symbol];\n const base = config?.(\"base\");\n const quote = config?.(\"quote\");\n const baseDp = config?.(\"base_dp\");\n const quoteDp = config?.(\"quote_dp\");\n// console.log(\"base, quote\", base, quote, \"baseDp, quoteDp\", baseDp, quoteDp);\n\n return {\n base,\n quote,\n data,\n isLoading,\n baseDp,\n quoteDp,\n };\n};\n\nexport type LastTradesState = ReturnType<typeof useLastTradesScript>;\n","import { useLastTradesScript } from \"./lastTrades.script\";\nimport { LastTrades } from \"./lastTrades.ui\";\n\nexport const LastTradesWidget = (props: {\n symbol: string;\n classNames?: {\n root?: string;\n list?: string;\n listHeader?: string;\n listItem?: {\n left?: string;\n mid?: string;\n right?: string;\n }\n };\n style?: React.CSSProperties;\n}) => {\n const state = useLastTradesScript(props.symbol);\n return <LastTrades {...state} classNames={props.classNames} style={props.style} />;\n};\n","import { FC, useMemo, useState, useCallback, ReactNode } from \"react\";\nimport { useAccount, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Flex,\n Text,\n Box,\n Button,\n ArrowDownShortIcon,\n EyeIcon,\n EyeCloseIcon,\n ChevronDownIcon,\n Tooltip,\n Divider,\n gradientTextVariants,\n cn,\n} from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { LTVRiskTooltipWidget } from \"@orderly.network/ui-order-entry\";\nimport { AssetViewState } from \"./assetView.script\";\nimport { FaucetWidget } from \"./faucet/faucet.widget\";\n\ninterface StatusInfo {\n title: string;\n description: string;\n titleColor?: any;\n titleClsName?: string;\n}\n\ninterface TooltipContentProps {\n description: ReactNode;\n formula: ReactNode;\n}\n\ninterface TotalValueProps {\n totalValue?: number;\n visible?: boolean;\n onToggleVisibility?: () => void;\n}\n\ninterface AssetDetailProps {\n label: string;\n description?: ReactNode;\n formula?: ReactNode;\n visible: boolean;\n value?: number | string;\n unit?: string;\n rule?: \"percentages\";\n isConnected?: boolean;\n showPercentage?: boolean;\n placeholder?: string;\n}\n\ninterface AssetValueListProps {\n visible?: boolean;\n freeCollateral?: number | null;\n marginRatioVal?: number;\n renderMMR?: string | number;\n isConnected: boolean;\n currentLtv?: string | number;\n}\n\nconst calculateTextColor = (val: number): string => {\n if (val >= 0 && val < 50) {\n return \"oui-text-success\";\n } else if (val >= 50 && val < 80) {\n return \"oui-text-warning\";\n } else if (val >= 80) {\n return \"oui-text-danger\";\n } else {\n return \"\";\n }\n};\n\nconst useCurrentStatusText = (): StatusInfo => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { t } = useTranslation();\n\n return useMemo(() => {\n const statusText = {\n wrongNetwork: {\n title: t(\"connector.wrongNetwork\"),\n description: t(\"connector.wrongNetwork.tooltip\"),\n titleColor: \"warning\",\n },\n connectWallet: {\n title: t(\"connector.connectWallet\"),\n description: t(\"connector.trade.connectWallet.tooltip\"),\n titleClsName:\n \"oui-text-transparent oui-bg-clip-text oui-gradient-brand\",\n },\n createAccount: {\n title: t(\"connector.createAccount\"),\n description: t(\"connector.trade.createAccount.tooltip\"),\n titleColor: \"primary\",\n },\n enableTrading: {\n title: t(\"connector.enableTrading\"),\n description: t(\"connector.trade.enableTrading.tooltip\"),\n titleColor: \"primary\",\n },\n empty: {\n title: \"\",\n description: \"\",\n },\n };\n\n if (disabledConnect) {\n return statusText.connectWallet;\n }\n\n if (wrongNetwork) {\n return statusText.wrongNetwork;\n }\n\n // EnableTradingWithoutConnected is enabled trading status, so we don't need to show anything\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return statusText.empty;\n }\n\n if (state.status <= AccountStatusEnum.NotConnected) {\n return statusText.connectWallet;\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return statusText.createAccount;\n }\n\n if (state.status < AccountStatusEnum.EnableTrading) {\n return statusText.enableTrading;\n }\n\n return statusText.empty;\n }, [t, state.status, wrongNetwork, disabledConnect]);\n};\n\nexport const TooltipContent: FC<TooltipContentProps> = (props) => {\n const { description, formula } = props;\n return (\n <div className=\"oui-min-w-[204px] oui-max-w-[240px] oui-text-2xs oui-leading-normal oui-text-base-contrast-80\">\n {typeof description !== \"undefined\" && description !== null && (\n <span>{description}</span>\n )}\n <Divider className=\"oui-border-white/10\" my={2} />\n {typeof formula !== \"undefined\" && formula !== null && (\n <span>{formula}</span>\n )}\n </div>\n );\n};\n\nconst TotalValue: FC<TotalValueProps> = (props) => {\n const { t } = useTranslation();\n const { totalValue, visible = true, onToggleVisibility } = props;\n return (\n <Flex\n direction=\"column\"\n gap={1}\n className=\"oui-text-2xs\"\n itemAlign=\"center\"\n >\n <Text.numeral\n visible={visible}\n weight=\"bold\"\n size=\"2xl\"\n className={gradientTextVariants({ color: \"brand\" })}\n as=\"div\"\n padding={false}\n dp={2}\n >\n {totalValue ?? \"--\"}\n </Text.numeral>\n <Flex gap={1} itemAlign=\"center\">\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n {`${t(\"trading.asset.myAssets\")} (USDC)`}\n </Text>\n <button onClick={onToggleVisibility}>\n {visible ? (\n <EyeIcon size={18} className=\"oui-text-base-contrast-54\" />\n ) : (\n <EyeCloseIcon size={18} className=\"oui-text-base-contrast-54\" />\n )}\n </button>\n </Flex>\n </Flex>\n );\n};\n\nconst AssetDetail: FC<AssetDetailProps> = (props) => {\n const {\n label,\n description,\n formula,\n visible,\n value,\n unit,\n rule,\n placeholder,\n } = props;\n return (\n <Flex justify=\"between\">\n <Tooltip\n className={\"\"}\n content={<TooltipContent description={description} formula={formula} />}\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {label}\n </Text>\n </Tooltip>\n <Text.numeral\n visible={visible}\n size=\"2xs\"\n unit={unit}\n unitClassName=\"oui-text-base-contrast-36 oui-ml-0.5\"\n as=\"div\"\n rule={rule}\n padding={false}\n dp={2}\n // suffix={value && unit}\n placeholder={placeholder}\n >\n {value || \"--\"}\n </Text.numeral>\n </Flex>\n );\n};\n\nconst LTVDetail: FC<Pick<AssetDetailProps, \"value\" | \"visible\">> = (props) => {\n const { visible, value } = props;\n const { t } = useTranslation();\n return (\n <Flex justify=\"between\">\n <Tooltip\n className={cn(\"oui-bg-base-6 oui-p-2\")}\n content={<LTVRiskTooltipWidget />}\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {t(\"transfer.LTV\")}\n </Text>\n </Tooltip>\n <Text\n size=\"2xs\"\n className={cn(\n \"select-none\",\n visible && calculateTextColor(Number(value)),\n )}\n >\n {visible ? `${value}%` : \"*****\"}\n </Text>\n </Flex>\n );\n};\n\nconst AssetValueList: FC<AssetValueListProps> = (props) => {\n const {\n visible = true,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n currentLtv,\n } = props;\n\n const [optionsOpen, setOptionsOpen] = useLocalStorage(\n \"orderly_entry_asset_list_open\",\n false,\n );\n const [open, setOpen] = useState<boolean>(optionsOpen);\n\n const { t } = useTranslation();\n\n const toggleOpen = useCallback(() => {\n setOpen((prevOpen) => !prevOpen);\n setTimeout(() => {\n setOptionsOpen(!open);\n }, 0);\n }, []);\n\n const showLTV =\n typeof currentLtv === \"number\" &&\n !Number.isNaN(currentLtv) &&\n currentLtv > 0;\n\n return (\n <Box className=\"oui-group\">\n <Flex\n justify=\"center\"\n gap={1}\n itemAlign=\"center\"\n className=\"oui-cursor-pointer\"\n onClick={toggleOpen}\n >\n <Divider className=\"oui-flex-1\" />\n <ChevronDownIcon\n size={12}\n color=\"white\"\n className={cn(\"oui-transition-transform\", open && \"oui-rotate-180\")}\n />\n <Divider className=\"oui-flex-1\" />\n </Flex>\n <Box\n style={{ transform: \"translateZ(0)\" }}\n className={cn(\n \"oui-select-none oui-space-y-1.5 oui-overflow-hidden\",\n \"oui-transition-[max-height] oui-duration-150\",\n \"group-hover:oui-will-change-[max-height]\",\n open\n ? showLTV\n ? \"oui-max-h-[94px]\"\n : \"oui-max-h-[69px]\"\n : \"oui-max-h-0\",\n )}\n >\n <AssetDetail\n label={t(\"trading.asset.freeCollateral\")}\n description={t(\"trading.asset.freeCollateral.tooltip\")}\n formula={t(\"trading.asset.freeCollateral.formula\")}\n visible={visible}\n // TODO: change AssetDetail value\n value={freeCollateral! === 0 ? (\"0\" as any) : freeCollateral}\n unit=\"USDC\"\n />\n <AssetDetail\n label={t(\"trading.asset.marginRatio\")}\n description={t(\"trading.asset.marginRatio.tooltip\")}\n formula={t(\"trading.asset.marginRatio.formula\")}\n visible={visible}\n value={marginRatioVal}\n isConnected={isConnected}\n rule=\"percentages\"\n showPercentage={true}\n placeholder=\"--%\"\n />\n <AssetDetail\n label={t(\"trading.asset.maintenanceMarginRatio\")}\n description={t(\"trading.asset.maintenanceMarginRatio.tooltip\")}\n formula={t(\"trading.asset.maintenanceMarginRatio.formula\")}\n visible={visible}\n value={renderMMR}\n rule=\"percentages\"\n showPercentage={true}\n placeholder=\"--%\"\n />\n {showLTV && <LTVDetail visible={visible} value={currentLtv} />}\n </Box>\n </Box>\n );\n};\n\nexport const AssetView: FC<\n AssetViewState & { isFirstTimeDeposit?: boolean }\n> = ({\n networkId,\n isFirstTimeDeposit,\n totalValue,\n onDeposit,\n onWithdraw,\n onTransfer,\n toggleVisible,\n visible,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n isMainAccount,\n hasSubAccount,\n currentLtv,\n}) => {\n const { title, description, titleColor, titleClsName } =\n useCurrentStatusText();\n\n const { t } = useTranslation();\n\n const transferButton = hasSubAccount && (\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={onTransfer}\n data-testid=\"oui-testid-assetView-transfer-button\"\n >\n <Text>{t(\"common.transfer\")}</Text>\n </Button>\n );\n\n const depositButton = isMainAccount && (\n <Button\n data-testid=\"oui-testid-assetView-deposit-button\"\n fullWidth\n size=\"md\"\n onClick={onDeposit}\n >\n {!hasSubAccount && <ArrowDownShortIcon color=\"white\" opacity={1} />}\n <Text>{t(\"common.deposit\")}</Text>\n </Button>\n );\n\n const withdrawButton = isMainAccount && (\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={onWithdraw}\n data-testid=\"oui-testid-assetView-withdraw-button\"\n >\n {!hasSubAccount && (\n <ArrowDownShortIcon\n color=\"white\"\n opacity={1}\n className=\"oui-rotate-180\"\n />\n )}\n <Text>{t(\"common.withdraw\")}</Text>\n </Button>\n );\n\n return (\n <Box className=\"oui-relative\">\n {title && description && (\n <Flex direction=\"column\" gap={1} className=\"oui-mb-[32px]\">\n <Text\n size=\"lg\"\n weight=\"bold\"\n color={titleColor || \"inherit\"}\n className={titleClsName}\n >\n {title}\n </Text>\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-text-center\"\n >\n {description}\n </Text>\n </Flex>\n )}\n <AuthGuard\n networkId={networkId}\n buttonProps={{ size: \"md\", fullWidth: true }}\n >\n {isFirstTimeDeposit && isMainAccount ? (\n <>\n <Box>\n <Flex direction=\"column\" gap={1} className=\"oui-mb-[32px]\">\n <Text.gradient size=\"lg\" weight=\"bold\" color=\"brand\">\n {t(\"trading.asset.startTrading\")}\n </Text.gradient>\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n {t(\"trading.asset.startTrading.description\")}\n </Text>\n </Flex>\n </Box>\n <Button\n data-testid=\"oui-testid-assetView-deposit-button\"\n fullWidth\n size=\"md\"\n onClick={onDeposit}\n >\n <ArrowDownShortIcon color=\"white\" opacity={1} />\n <Text>{t(\"common.deposit\")}</Text>\n </Button>\n\n <Box className=\"oui-mt-3\">\n <FaucetWidget />\n </Box>\n </>\n ) : (\n <Box className=\"oui-space-y-4\">\n <TotalValue\n totalValue={totalValue}\n visible={visible}\n onToggleVisibility={toggleVisible}\n />\n <AssetValueList\n visible={visible}\n freeCollateral={freeCollateral}\n marginRatioVal={marginRatioVal}\n renderMMR={renderMMR}\n isConnected={isConnected}\n currentLtv={currentLtv}\n />\n <Flex\n gap={isMainAccount ? (hasSubAccount ? 2 : 3) : 0}\n itemAlign=\"center\"\n >\n {isMainAccount ? (\n <>\n {depositButton}\n {transferButton}\n {withdrawButton}\n </>\n ) : (\n transferButton\n )}\n </Flex>\n {isMainAccount && <FaucetWidget />}\n </Box>\n )}\n </AuthGuard>\n <div\n className={cn(\n \"oui-absolute oui-inset-0 oui-rotate-180\",\n \"oui-pointer-events-none oui-rounded-2xl oui-blur-[200px]\",\n )}\n style={{\n background:\n \"conic-gradient(from -40.91deg at 40.63% 50.41%, rgba(159, 115, 241, 0) -48.92deg, rgba(242, 98, 181, 0) 125.18deg, #5FC5FF 193.41deg, #FFAC89 216.02deg, #8155FF 236.07deg, #789DFF 259.95deg, rgba(159, 115, 241, 0) 311.08deg, rgba(242, 98, 181, 0) 485.18deg)\",\n }}\n />\n </Box>\n );\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Button } from \"@orderly.network/ui\";\nimport { FaucetState } from \"./faucet.script\";\n\nexport function FaucetUi(props: FaucetState) {\n const { t } = useTranslation();\n\n if (!props.showFaucet) {\n return null;\n }\n\n return (\n <Button\n variant=\"outlined\"\n fullWidth\n size=\"md\"\n onClick={props.getFaucet}\n loading={props.loading}\n className=\"oui-text-primary-light oui-border-primary-light oui-rounded\"\n data-testid=\"oui-testid-assetView-getFaucet-button\"\n >\n {t(\"trading.faucet.getTestUSDC\")}\n </Button>\n );\n}\n","import { useMemo, useState } from \"react\";\nimport {\n useAccount,\n useConfig,\n useMutation,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum, ChainNamespace } from \"@orderly.network/types\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport function useFaucetScript() {\n const { t } = useTranslation();\n const { connectedChain, namespace } = useWalletConnector();\n const { state, account } = useAccount();\n const config = useConfig();\n const operatorUrl = config.get<string>(\"operatorUrl\");\n\n const [getTestUSDC, { isMutating }] = useMutation(\n `${operatorUrl}/v1/faucet/usdc`\n );\n const [loading, setLoading] = useState<boolean>(false);\n\n const showFaucet = useMemo(() => {\n if (!connectedChain || !connectedChain.id) {\n return false;\n }\n return (\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected) &&\n isTestnet(parseInt(connectedChain.id as string))\n );\n }, [state, connectedChain]);\n\n const getFaucet = () => {\n if (loading) {\n return;\n }\n setLoading(true);\n const message = t(\"trading.faucet.getTestUSDC.success\", {\n quantity: namespace === ChainNamespace.solana ? \"100\" : \"1,000\",\n });\n\n return getTestUSDC({\n chain_id: account.walletAdapter?.chainId.toString(),\n user_address: state.address,\n broker_id: config.get(\"brokerId\"),\n }).then(\n (res) => {\n setLoading(false);\n if (res.success) {\n return modal.alert({\n title: t(\"trading.faucet.getTestUSDC\"),\n message,\n onOk: () => {\n return new Promise((resolve) => resolve(true));\n },\n });\n }\n res.message && toast.error(res.message);\n },\n (error: Error) => {\n toast.error(error.message);\n }\n );\n };\n return { getFaucet, showFaucet, loading };\n}\n\nexport type FaucetState = ReturnType<typeof useFaucetScript>;\n","import { FaucetUi } from \"./faucet.ui\";\nimport { useFaucetScript } from \"./faucet.script\";\n\nexport function FaucetWidget() {\n const state = useFaucetScript();\n return (\n <FaucetUi {...state}/>\n )\n}","import { useCallback, useMemo } from \"react\";\nimport {\n useAccountInstance,\n useEventEmitter,\n useLocalStorage,\n useAccount,\n useConfig,\n useCollateral,\n useMarginRatio,\n usePositionStream,\n useComputedLTV,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport {\n DepositAndWithdrawWithDialogId,\n TransferDialogId,\n} from \"@orderly.network/ui-transfer\";\n\nexport const useAssetViewScript = () => {\n const { t } = useTranslation();\n const account = useAccountInstance();\n const ee = useEventEmitter();\n\n const { totalValue } = useCollateral({\n dp: 2,\n });\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n const { state, isMainAccount } = useAccount();\n const { freeCollateral } = useCollateral({\n dp: 2,\n });\n const { marginRatio, mmr } = useMarginRatio();\n const isConnected = state.status >= AccountStatusEnum.Connected;\n const [{ aggregated }, positionsInfo] = usePositionStream();\n const marginRatioVal = useMemo(() => {\n return Math.min(\n 10,\n aggregated.notional === 0\n ? positionsInfo[\"margin_ratio\"](10)!\n : marginRatio,\n );\n }, [marginRatio, aggregated]);\n\n // const renderMMR = useMemo(() => {\n // if (!mmr) {\n // return \"\";\n // }\n // const bigMMR = new Decimal(mmr);\n // return bigMMR.mul(100).todp(2, 0).toFixed(2);\n // }, [mmr]);\n\n const openDepositAndWithdraw = useCallback(\n (viewName: \"deposit\" | \"withdraw\") => {\n // desktop always show dialog\n return modal.show(DepositAndWithdrawWithDialogId, {\n activeTab: viewName,\n });\n },\n [],\n );\n\n const onDeposit = useCallback(async () => {\n return openDepositAndWithdraw(\"deposit\");\n }, []);\n\n const onWithdraw = useCallback(async () => {\n return openDepositAndWithdraw(\"withdraw\");\n }, []);\n\n const onTransfer = useCallback(async () => {\n return modal.show(TransferDialogId);\n }, []);\n\n const onSettle = useCallback(async () => {\n return account\n .settle()\n .catch((e) => {\n if (e.code === -1104) {\n toast.error(t(\"settle.settlement.error\"));\n return Promise.reject(e);\n }\n if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n }\n })\n .then((res) => {\n toast.success(t(\"settle.settlement.requested\"));\n return Promise.resolve(res);\n });\n }, [account, t]);\n\n const [visible, setVisible] = useLocalStorage<boolean>(\n \"orderly_assets_visible\",\n true,\n );\n\n const toggleVisible = useCallback(() => {\n // @ts-ignore\n setVisible((visible: boolean) => {\n return !visible;\n });\n }, [visible]);\n\n const currentLtv = useComputedLTV();\n const _freeCollateral = useDataTap(freeCollateral) ?? undefined;\n const _marginRatioVal = useDataTap(marginRatioVal) ?? undefined;\n const _mmr = useDataTap(mmr) ?? undefined;\n const _totalValue = useDataTap(totalValue) ?? undefined;\n\n return {\n onDeposit,\n onWithdraw,\n onTransfer,\n onSettle,\n visible,\n toggleVisible,\n networkId,\n totalValue: _totalValue,\n status: state.status,\n freeCollateral: _freeCollateral,\n marginRatioVal: _marginRatioVal,\n renderMMR: _mmr,\n isConnected,\n isMainAccount,\n hasSubAccount: !!state.subAccounts?.length,\n currentLtv,\n };\n};\n\nexport type AssetViewState = ReturnType<typeof useAssetViewScript>;\n","import { useAssetViewScript } from \"./assetView.script\";\nimport { AssetView } from \"./assetView.ui\";\n\ntype AssetViewWidgetProps = {\n isFirstTimeDeposit?: boolean;\n};\n\nexport const AssetViewWidget = (props: AssetViewWidgetProps) => {\n const state = useAssetViewScript();\n return <AssetView {...state} isFirstTimeDeposit={props.isFirstTimeDeposit} />;\n};\n","import { FC } from \"react\";\nimport { Box } from \"@orderly.network/ui\";\nimport { DesktopOrderBook } from \"../../desktop/orderBook/index.desktop\";\nimport { OrderBook as MWebOrderBook } from \"../../mobile/orderBook\";\nimport type { OrderBookState } from \"./orderBook.script\";\n\nexport const OrderBook: FC<\n OrderBookState & {\n className?: string;\n }\n> = (props) => {\n return (\n <Box className=\"oui-font-semibold\" width={\"100%\"} height={\"100%\"}>\n {props.isMobile ? (\n <MWebOrderBook\n level={props.level}\n asks={props.asks!}\n bids={props.bids!}\n markPrice={props.markPrice!}\n lastPrice={props.lastPrice!}\n depths={props.depths}\n activeDepth={props.selDepth}\n base={props.base}\n quote={props.quote}\n isLoading={props.isLoading}\n onItemClick={props.onItemClick}\n cellHeight={props.cellHeight}\n onDepthChange={props.onDepthChange}\n className={props.className}\n symbolInfo={props.symbolInfo}\n />\n ) : (\n <DesktopOrderBook\n level={props.level}\n asks={props.asks!}\n bids={props.bids!}\n markPrice={props.markPrice!}\n lastPrice={props.lastPrice!}\n depths={props.depths}\n activeDepth={props.selDepth}\n base={props.base}\n quote={props.quote}\n isLoading={props.isLoading}\n onItemClick={props.onItemClick}\n cellHeight={props.cellHeight}\n onDepthChange={props.onDepthChange}\n className={props.className}\n pendingOrders={props.pendingOrders}\n symbolInfo={props.symbolInfo}\n />\n )}\n </Box>\n );\n};\n","import { FC, useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { EMPTY_LIST } from \"@orderly.network/types\";\nimport { cn, Grid, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport {\n ORDERBOOK_COIN_TYPE_KEY,\n OrderBookProvider,\n} from \"../../base/orderBook/orderContext\";\nimport { DesktopAsks } from \"./asks.desktop\";\nimport { DesktopBids } from \"./bids.desktop\";\nimport { DesktopDepthSelect } from \"./depthSelect.desktop\";\nimport { DesktopHeader } from \"./header.desktop\";\nimport { DesktopMarkPrice } from \"./markPrice.desktop\";\n\nexport interface DesktopOrderBookProps {\n asks: any[];\n bids: any[];\n markPrice: number;\n lastPrice: number[];\n onItemClick?: (item: number[]) => void;\n depths: string[];\n activeDepth?: string;\n onDepthChange?: (depth: number) => void;\n //\n autoSize?: boolean;\n level?: number;\n base: string;\n quote: string;\n\n isLoading?: boolean;\n\n cellHeight?: number;\n\n className?: string;\n pendingOrders?: number[];\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const DesktopOrderBook: FC<DesktopOrderBookProps> = (props) => {\n const { lastPrice, markPrice, quote, base, isLoading, onDepthChange } = props;\n\n const divRef = useRef<HTMLDivElement>(null);\n\n const [showTotal, setShowTotal] = useState(false);\n\n const [coinType, setCoinType] = useLocalStorage(\n ORDERBOOK_COIN_TYPE_KEY,\n base,\n );\n\n useEffect(() => {\n if (coinType !== quote && base) {\n setCoinType(base);\n }\n }, [base, quote]);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { inlineSize: width } = entry.borderBoxSize[0];\n setShowTotal(width >= 360);\n }\n });\n\n const targetDiv = divRef.current;\n\n if (targetDiv) {\n resizeObserver.observe(targetDiv);\n }\n\n return () => {\n if (targetDiv) {\n resizeObserver.unobserve(targetDiv);\n }\n };\n }, []);\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n showTotal={showTotal}\n pendingOrders={props.pendingOrders || EMPTY_LIST}\n symbolInfo={props.symbolInfo}\n >\n <Grid\n cols={1}\n rows={5}\n id=\"oui-orderbook-desktop\"\n ref={divRef}\n className=\"oui-relative oui-size-full oui-grid-rows-[auto,auto,1fr,auto,1fr]\"\n >\n <DesktopDepthSelect\n depths={props.depths}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n <DesktopHeader quote={quote} base={base} />\n <DesktopAsks data={[...props.asks]} />\n <DesktopMarkPrice\n lastPrice={lastPrice}\n markPrice={markPrice}\n asks={[...props.asks]}\n bids={[...props.bids]}\n symbolInfo={props.symbolInfo}\n />\n <DesktopBids data={[...props.bids]} />\n {isLoading && (\n <div className=\"oui-bg-bg-8/70 oui-absolute oui-inset-0 oui-z-10 oui-flex oui-items-center oui-justify-center\">\n <Spinner />\n </div>\n )}\n </Grid>\n </OrderBookProvider>\n );\n};\n","import React, {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useState,\n} from \"react\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { QtyMode, TotalMode } from \"./types\";\n\nexport interface OrderBookContextValue {\n cellHeight: number;\n mode: QtyMode;\n depth?: string;\n onModeChange?: (mode: QtyMode) => void;\n onItemClick?: (item: number[]) => void;\n showTotal: boolean;\n totalMode: TotalMode;\n pendingOrders: ReadonlyArray<number> | number[];\n onTotalModeChange?: (mode: TotalMode) => void;\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const OrderBookContext = createContext({\n cellHeight: 22,\n} as OrderBookContextValue);\n\nexport const useOrderBookContext = () => useContext(OrderBookContext);\n\nexport const ORDERBOOK_COIN_TYPE_KEY = \"orderbook_coin_type\";\n\nexport const ORDERBOOK_MOBILE_COIN_TYPE_KEY = \"orderbook_mobile_coin_unit\";\n\ninterface OrderBookProviderProps {\n cellHeight: number;\n depth?: string;\n showTotal: boolean;\n pendingOrders: ReadonlyArray<number> | number[];\n onItemClick?: (item: number[]) => void;\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const OrderBookProvider: FC<\n PropsWithChildren<OrderBookProviderProps>\n> = (props) => {\n const [mode, setMode] = useState<QtyMode>(\"quantity\");\n const [totalMode, setTotalMode] = useState<QtyMode>(\"quantity\");\n const memoizedValue = React.useMemo<OrderBookContextValue>(() => {\n return {\n cellHeight: props.cellHeight,\n onItemClick: props.onItemClick,\n mode,\n totalMode: totalMode || \"quantity\",\n depth: props.depth,\n onModeChange: setMode,\n onTotalModeChange: setTotalMode,\n showTotal: props.showTotal || false,\n pendingOrders: props.pendingOrders,\n symbolInfo: props.symbolInfo,\n };\n }, [\n mode,\n props.cellHeight,\n props.depth,\n props.onItemClick,\n props.pendingOrders,\n props.showTotal,\n props.symbolInfo,\n totalMode,\n ]);\n return (\n <OrderBookContext.Provider value={memoizedValue}>\n {props.children}\n </OrderBookContext.Provider>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { DesktopListBox } from \"./listBox.desktop\";\n\nexport interface Props {\n data: number[][];\n}\n\nexport const DesktopAsks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n const len = data.length;\n let index = 0;\n\n while (Number.isNaN(max) && index < len) {\n max = data[index][2];\n index++;\n }\n\n return max;\n }, [data]);\n\n return (\n <DesktopListBox\n type={OrderBookCellType.ASK}\n data={data}\n countQty={countQty}\n />\n );\n};\n","import { FC, useCallback, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n TooltipContent,\n TooltipTrigger,\n Text,\n TooltipRoot,\n TooltipArrow,\n cn,\n} from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { DesktopOrderBookCell } from \"./cell.desktop\";\n\ninterface DesktopListBoxProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const DesktopListBox: FC<DesktopListBoxProps> = (props) => {\n const { data, type, countQty } = props;\n const { symbolInfo, depth } = useOrderBookContext();\n\n const findMaxItem = useCallback(() => {\n if ((data?.length || 0) === 0) {\n return null;\n }\n if (type === OrderBookCellType.ASK) {\n const index = data.findIndex((item) => !Number.isNaN(item[0]));\n if (index != -1) {\n return data[index];\n }\n return null;\n } else {\n for (let index = data.length - 1; index >= 0; index--) {\n const item = data[index];\n\n if (!Number.isNaN(item[0])) {\n return item;\n }\n }\n return null;\n }\n }, [data, type]);\n\n const priceDp = useMemo(() => {\n if (depth?.toString().includes(\".\")) {\n return depth.toString().split(\".\")[1].length;\n }\n return 0;\n }, [depth]);\n\n const maxQty = useMemo(() => {\n return data.reduce((a, b) => Math.max(a, b[1]), 0);\n }, [data]);\n\n const [hoverIndex, setHoverIndex] = useState<number>(-1);\n\n return (\n <div className=\"oui-order-book-list oui-flex oui-flex-col oui-gap-px\">\n {data.map((item, index) => {\n return (\n <Tip\n key={index}\n index={index}\n item={item}\n countQty={countQty}\n setHoverIndex={setHoverIndex}\n hoverIndex={hoverIndex}\n type={type}\n maxQty={maxQty}\n priceDp={priceDp}\n symbolInfo={symbolInfo}\n findMaxItem={findMaxItem}\n />\n );\n })}\n </div>\n );\n};\n\nconst Tip: FC<{\n index: number;\n item: any;\n countQty: number;\n setHoverIndex: any;\n type: OrderBookCellType;\n maxQty: number;\n hoverIndex: number;\n priceDp: number;\n // base: any;\n // quote: any;\n // baseDp: number;\n // quoteDp: number;\n findMaxItem: () => number[] | null;\n symbolInfo: BasicSymbolInfo;\n}> = (props) => {\n const {\n index,\n item,\n setHoverIndex,\n type,\n maxQty,\n hoverIndex,\n priceDp,\n countQty,\n symbolInfo,\n } = props;\n\n const { base, quote, base_dp: baseDp, quote_dp: quoteDp } = symbolInfo;\n const { t } = useTranslation();\n\n const isHover =\n hoverIndex !== -1\n ? type === OrderBookCellType.ASK\n ? index >= hoverIndex\n : index <= hoverIndex\n : false;\n\n const [open, setOpen] = useState(false);\n\n const calcHintInfo = (\n item: any,\n ): {\n avgPrice: number;\n sumQty: number;\n sumQtyAmount: number;\n } => {\n if (item === null) {\n return {\n sumQty: 0,\n sumQtyAmount: 0,\n avgPrice: 0,\n };\n }\n let totalInfo = { sumQty: 0, sumQtyAmount: 0 };\n if (!Number.isNaN(item[2])) {\n totalInfo = {\n sumQty: item[2],\n sumQtyAmount: item[3],\n };\n }\n\n return {\n ...totalInfo,\n avgPrice:\n totalInfo.sumQtyAmount == 0\n ? 0\n : totalInfo.sumQtyAmount / totalInfo.sumQty,\n };\n };\n\n const hintInfo = useMemo(() => {\n const info = calcHintInfo(item);\n return info.avgPrice === 0 ? calcHintInfo(props.findMaxItem()) : info;\n }, [item, props]);\n\n return (\n <TooltipRoot open={open} onOpenChange={setOpen}>\n <TooltipTrigger>\n <DesktopOrderBookCell\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n count={countQty}\n type={type}\n accumulatedAmount={item[3]}\n maxQty={maxQty}\n isHover={isHover}\n currentHover={hoverIndex === index}\n symbolInfo={symbolInfo}\n base={base}\n quote={quote}\n onMouseEnter={() => {\n setHoverIndex(index);\n setOpen(true);\n }}\n onMouseLeave={() => {\n setHoverIndex(-1);\n setOpen(false);\n }}\n />\n </TooltipTrigger>\n <TooltipContent\n className={cn(\n \"oui-rounded-base oui-flex oui-w-full oui-max-w-[400px] oui-flex-col oui-gap-2 oui-bg-base-6 oui-p-3 oui-text-2xs oui-shadow-md\",\n // type === OrderBookCellType.ASK ? `oui-mb-${30}` : \"oui-mt-0\"\n )}\n align={type === OrderBookCellType.ASK ? \"end\" : \"start\"}\n alignOffset={-25.4}\n side=\"left\"\n sideOffset={2}\n onPointerEnter={(e) => e.preventDefault()}\n >\n <Row\n title={`${t(\"common.avgPrice\")}≈`}\n content={hintInfo.avgPrice}\n contentDp={priceDp}\n />\n <Row\n title={`${t(\"trading.orderBook.sum\")} (${base})`}\n content={hintInfo.sumQty}\n contentDp={baseDp}\n />\n <Row\n title={`${t(\"trading.orderBook.sum\")} (${quote})`}\n content={hintInfo.sumQtyAmount}\n contentDp={quoteDp}\n />\n\n <TooltipArrow\n className=\"oui-fill-base-6\"\n style={{\n transform:\n type === OrderBookCellType.ASK\n ? \"translateX(80%)\"\n : \"translateX(-80%)\",\n }}\n />\n </TooltipContent>\n </TooltipRoot>\n );\n};\n\nconst Row: FC<{ title: string; content: number; contentDp: number }> = (\n props,\n) => {\n const { title, content, contentDp } = props;\n return (\n <div className=\"oui-flex oui-flex-row oui-justify-between oui-gap-4\">\n <div className=\"oui-text-base-contrast-36\">{title}</div>\n <div className=\"oui-text-right\">\n <Text.numeral dp={contentDp}>{content}</Text.numeral>\n </div>\n </div>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { cn, Divider, parseNumber, Text } from \"@orderly.network/ui\";\nimport { getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { CellBar, CellBarDirection } from \"../../base/orderBook/cellBar\";\nimport {\n ORDERBOOK_COIN_TYPE_KEY,\n useOrderBookContext,\n} from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\n\nexport interface DesktopOrderBookCellProps {\n background: string;\n maxQty: number;\n price: number;\n quantity: number;\n // size: number;\n count: number;\n accumulated: number;\n accumulatedAmount: number;\n type: OrderBookCellType;\n symbolInfo: BasicSymbolInfo;\n base: string;\n quote: string;\n isHover: boolean;\n currentHover: boolean;\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n}\n\nexport const DesktopOrderBookCell: FC<DesktopOrderBookCellProps> = (props) => {\n const { cellHeight, showTotal, onItemClick, depth, pendingOrders } =\n useOrderBookContext();\n const {\n symbolInfo,\n currentHover,\n accumulated,\n accumulatedAmount,\n count,\n price,\n quantity,\n base,\n quote,\n } = props;\n\n const { base_dp, quote_dp } = symbolInfo;\n\n const [coinType] = useLocalStorage<string>(ORDERBOOK_COIN_TYPE_KEY, base);\n\n const width = Number.isNaN(price) ? 0 : (accumulated / count) * 100;\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n const totalAmount = Number.isNaN(accumulated)\n ? \"-\"\n : accumulatedAmount?.toString();\n\n const isPendingOrder = useMemo(() => {\n const priceStr = parseNumber(price, { dp: dp, padding: true });\n return pendingOrders.some(\n (item) => priceStr === parseNumber(item, { dp: dp, padding: true }),\n );\n }, [pendingOrders, price, dp]);\n\n return (\n <div\n className=\"oui-relative oui-flex oui-cursor-pointer oui-flex-row oui-justify-between oui-pl-3 oui-text-xs oui-tabular-nums oui-text-base-contrast-80\"\n style={{ height: `${cellHeight}px` }}\n onClick={() => {\n if (Number.isNaN(price) || Number.isNaN(quantity)) {\n return;\n }\n onItemClick?.([price, quantity]);\n }}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n <div\n className={cn(\n \"oui-mr-2 oui-flex oui-basis-7/12 oui-flex-row oui-items-center\",\n showTotal && \"oui-basis-5/12\",\n )}\n >\n <div\n className={cn(\n \"oui-flex-1 oui-text-left\",\n props.type === OrderBookCellType.ASK\n ? \"oui-text-trade-loss\"\n : \"oui-text-trade-profit\",\n )}\n >\n <Text.numeral dp={dp}>{price}</Text.numeral>\n </div>\n <div className=\"oui-flex-1 oui-text-right oui-text-base-contrast-80\">\n <Text.numeral dp={base_dp}>{quantity}</Text.numeral>\n </div>\n </div>\n <div\n className={cn(\n \"oui-fex-row oui-relative oui-flex oui-basis-5/12 oui-items-center oui-justify-end oui-overflow-hidden\",\n showTotal && \"oui-basis-7/12\",\n )}\n >\n {showTotal ? (\n <>\n <div className={cn(\"oui-flex-1 oui-pr-3 oui-text-right\")}>\n <Text.numeral dp={base_dp} className=\"oui-z-10\">\n {accumulated}\n </Text.numeral>\n </div>\n <div className={cn(\"oui-flex-1 oui-pr-3 oui-text-right\")}>\n <Text.numeral dp={0} className=\"oui-z-10\">\n {totalAmount}\n </Text.numeral>\n </div>\n </>\n ) : (\n <div className={cn(\"oui-flex-1 oui-pr-3 oui-text-right\")}>\n {coinType === base && (\n <Text.numeral dp={base_dp} className=\"oui-z-10\">\n {accumulated}\n </Text.numeral>\n )}\n {coinType === quote && (\n <Text.numeral dp={0} className=\"oui-z-10\">\n {totalAmount}\n </Text.numeral>\n )}\n </div>\n )}\n <CellBar\n width={width}\n direction={CellBarDirection.LEFT_TO_RIGHT}\n className={\n props.type === OrderBookCellType.ASK\n ? \"oui-bg-trade-loss/10\"\n : \"oui-bg-trade-profit/10\"\n }\n />\n </div>\n\n {isPendingOrder && (\n <div\n className={cn(\n \"oui-pointer-events-none oui-absolute oui-left-[4px] oui-size-[4px] oui-rounded-full\",\n props.type === OrderBookCellType.ASK && \"oui-bg-trade-loss\",\n props.type === OrderBookCellType.BID && \"oui-bg-trade-profit\",\n )}\n style={{ top: `${cellHeight / 2 - 2}px` }}\n />\n )}\n\n {props.isHover && (\n <div className=\"oui-absolute oui-inset-0 oui-bg-white oui-opacity-[.12]\" />\n )}\n {currentHover && (\n <div\n className={cn(\n \"oui-absolute oui-inset-x-0\",\n props.type === OrderBookCellType.ASK && \"oui-top-0\",\n props.type === OrderBookCellType.BID && \"oui-bottom-0\",\n )}\n >\n <Divider\n lineStyle=\"dashed\"\n className={cn(\n \"oui-w-full\",\n props.type === OrderBookCellType.BID && \"oui-border-trade-profit\",\n props.type === OrderBookCellType.ASK && \"oui-border-trade-loss\",\n )}\n />\n </div>\n )}\n </div>\n );\n};\n","import { cn } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\nexport enum CellBarDirection {\n LEFT_TO_RIGHT,\n RIGHT_TO_LEFT,\n}\n\ninterface CellBarProps {\n width: number;\n className?: string;\n direction?: CellBarDirection\n}\n\nexport const CellBar: FC<CellBarProps> = (props) => {\n const { direction = CellBarDirection.RIGHT_TO_LEFT } = props;\n const transform = useMemo(() => {\n const x = Math.max(props.width, 0);\n if (direction === CellBarDirection.LEFT_TO_RIGHT) {\n return { transform: `translateX(${x}%)` };\n }\n return { transform: `translateX(-${x}%)` };\n \n }, [props.width]);\n\n return (\n <div\n className={cn(\n \"oui-absolute oui-right-[-100%] oui-top-0 oui-h-full oui-w-full oui-transition-transform oui-pointer-events-none\",\n direction === CellBarDirection.LEFT_TO_RIGHT && \"oui-left-[-100%]\",\n props.className\n )}\n style={transform}\n />\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { DesktopListBox } from \"./listBox.desktop\";\n\nexport interface Props {\n data: any[];\n}\n\nexport const DesktopBids: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n // let len = data.length;\n let index = data.length - 1;\n\n while (Number.isNaN(max) && index > 0) {\n max = data[index][2];\n index--;\n }\n\n return max;\n // return data.length > 0 ? data[data.length - 1][2] : 0;\n }, [data]);\n return (\n <DesktopListBox\n type={OrderBookCellType.BID}\n data={data}\n countQty={countQty}\n />\n );\n};\n","import { Box, Select } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\ninterface DesktopDepthSelectProps {\n depths: string[];\n value?: string;\n onChange?: (depth: number) => void;\n}\n\nexport const DesktopDepthSelect: FC<DesktopDepthSelectProps> = (props) => {\n const options = useMemo(() => {\n return props.depths.map((d) => ({\n value: d,\n label: `${d}`,\n }));\n }, [props.depths]);\n\n return (\n <Box pl={3} width={97} className=\"oui-py-[10px]\">\n <Select.options\n options={options}\n size={\"xs\"}\n value={props.value}\n onValueChange={(value: any) => {\n props.onChange?.(value);\n }}\n />\n </Box>\n );\n};\n","import React, { FC, ReactNode } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n CaretDownIcon,\n CaretUpIcon,\n cn,\n Flex,\n Popover,\n} from \"@orderly.network/ui\";\nimport {\n ORDERBOOK_COIN_TYPE_KEY,\n useOrderBookContext,\n} from \"../../base/orderBook/orderContext\";\n\ninterface DesktopHeaderProps {\n quote: string;\n base: string;\n}\n\nconst Option: React.FC<{\n item: string;\n base: string;\n onClick: React.MouseEventHandler<HTMLElement>;\n}> = (props) => {\n const { item, base, onClick } = props;\n const { t } = useTranslation();\n const [coinType, setCoinType] = useLocalStorage(\n ORDERBOOK_COIN_TYPE_KEY,\n base,\n );\n return (\n <Flex\n justify=\"between\"\n itemAlign=\"center\"\n className={cn(\n \"oui-w-full oui-px-2 oui-py-[3px]\",\n \"oui-cursor-pointer\",\n \"oui-text-xs\",\n \"oui-text-base-contrast-54\",\n \"hover:oui-bg-base-6\",\n \"oui-rounded-[3px]\",\n \"oui-transition-all\",\n coinType === item && \"oui-bg-base-5\",\n )}\n onClick={(e) => {\n setCoinType(item);\n onClick(e);\n }}\n >\n {t(\"common.total\")}({item})\n <div\n className={cn(\n \"oui-transition-all\",\n \"oui-w-1\",\n \"oui-h-1\",\n \"oui-rounded-full\",\n \"oui-bg-gradient-to-r\",\n coinType === item &&\n \"oui-from-[rgb(var(--oui-gradient-brand-start))] oui-to-[rgb(var(--oui-gradient-brand-end))]\",\n )}\n />\n </Flex>\n );\n};\n\nexport const DesktopHeader: FC<DesktopHeaderProps> = (props) => {\n const { base, quote } = props;\n const { showTotal } = useOrderBookContext();\n const { t } = useTranslation();\n const [popoverOpen, setOpen] = React.useState<boolean>(false);\n const [coinType] = useLocalStorage(ORDERBOOK_COIN_TYPE_KEY, base);\n const TriggerIcon = popoverOpen ? CaretUpIcon : CaretDownIcon;\n return (\n <Flex pl={3} justify={\"between\"} className=\"oui-py-[6px]\">\n <Flex\n gap={1}\n className={cn(\"oui-basis-7/12\", showTotal && \"oui-basis-1/2\")}\n >\n <Box width={\"100%\"}>\n <Title\n id=\"oui-order-book-header-price\"\n className=\"oui-text-base-contrast-36\"\n >\n {`${t(\"common.price\")}(${quote})`}\n </Title>\n </Box>\n <Box width={\"100%\"}>\n <Title\n justifyEnd\n id=\"oui-order-book-header-qty\"\n className=\"oui-text-base-contrast-36\"\n >\n {`${t(\"common.qty\")}(${base})`}\n </Title>\n </Box>\n </Flex>\n <Flex\n gap={1}\n pr={3}\n className={cn(\"oui-basis-5/12\", showTotal && \"oui-basis-1/2\")}\n >\n {showTotal ? (\n <>\n <Box className=\"oui-text-base-contrast-36\" width={\"100%\"}>\n <Title id=\"oui-order-book-header-total-quote\" justifyEnd>\n {`${t(\"common.total\")}(${base})`}\n </Title>\n </Box>\n <Box className=\"oui-text-base-contrast-36\" width={\"100%\"}>\n <Title justifyEnd id=\"oui-order-book-header-total-base\">\n {`${t(\"common.total\")}(${quote})`}\n </Title>\n </Box>\n </>\n ) : (\n <Box width={\"100%\"}>\n <Popover\n open={popoverOpen}\n onOpenChange={setOpen}\n contentProps={{ className: cn(\"oui-w-28 oui-p-1\") }}\n content={\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n className={cn(\"oui-w-full oui-gap-0.5\")}\n >\n {[base, quote].map((item) => {\n return (\n <Option\n key={`type-${item}`}\n item={item}\n base={base}\n onClick={() => setOpen(false)}\n />\n );\n })}\n </Flex>\n }\n >\n <Flex\n justify=\"end\"\n itemAlign=\"center\"\n className=\"oui-cursor-pointer oui-select-none oui-text-base-contrast-36 oui-transition-all hover:oui-text-base-contrast\"\n >\n <Title justifyEnd id=\"oui-order-book-header-total-base\">\n {`${t(\"common.total\")}(${coinType})`}\n </Title>\n <TriggerIcon\n color=\"inherit\"\n className=\"oui-size-4 oui-text-3xs\"\n />\n </Flex>\n </Popover>\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<{\n justifyEnd?: boolean;\n id?: string;\n children: ReactNode;\n className?: string;\n}> = (props) => {\n const { children, className, justifyEnd = false } = props;\n return (\n <Flex\n id={props.id}\n className={cn(\n className,\n \"oui-items-end oui-text-xs\",\n justifyEnd && \"oui-justify-end\",\n )}\n >\n {children}\n </Flex>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { cn, Flex, Text, Tooltip } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { MiddlePriceView } from \"../../base/orderBook/midPriceView\";\nimport { MarkPriceView } from \"../../base/orderBook/markPrice\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface DesktopMarkPriceProps {\n markPrice: number;\n lastPrice: number[];\n asks: number[][];\n bids: number[][];\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const DesktopMarkPrice: FC<DesktopMarkPriceProps> = (props) => {\n const { markPrice = 0, lastPrice, asks, bids, symbolInfo } = props;\n const { showTotal } = useOrderBookContext();\n\n return (\n <div className=\"oui-flex oui-flex-row oui-pl-3 oui-tabular-nums oui-justify-between oui-text-base-contrast-80 oui-text-xs oui-relative oui-cursor-pointer oui-py-[6px]\">\n <div\n className={cn(\n \"oui-basis-7/12 oui-flex oui-flex-row oui-items-center oui-mr-2 oui-justify-between\",\n showTotal && \"oui-basis-5/12\"\n )}\n >\n <MiddlePriceView\n markPrice={markPrice}\n lastPrice={lastPrice}\n quote_dp={symbolInfo.quote_dp}\n className=\"oui-text-base\"\n />\n <MarkPriceView markPrice={markPrice} quote_dp={symbolInfo.quote_dp} />\n </div>\n <div\n className={cn(\n \"oui-basis-5/12 oui-flex oui-items-center oui-fex-row oui-overflow-hidden oui-relative oui-justify-end\",\n showTotal && \"oui-basis-7/12\",\n \"oui-pr-3\"\n )}\n >\n <Spread asks={asks} bids={bids} />\n </div>\n </div>\n );\n};\n\nconst Spread: FC<{\n asks: number[][];\n bids: number[][];\n}> = (props) => {\n const { asks, bids } = props;\n\n const { t } = useTranslation();\n\n const spread = useMemo(() => {\n if (bids.length === 0 && asks.length === 0) {\n return 0;\n }\n const bid1 = Number.isNaN(bids[0][0]) ? 0 : bids[0][0];\n const index = asks.reverse().findIndex((item) => !Number.isNaN(item[0]));\n\n let ask1 = 0.0;\n if (index !== -1) {\n ask1 = Number.isNaN(asks[index][0]) ? 0 : asks[index][0];\n }\n const dValue = new Decimal(ask1)\n .sub(bid1)\n .div(new Decimal(ask1).add(bid1).div(2));\n // 0.00006416604461251195\n // 0.000065\n // 0.0065\n return Math.ceil(dValue.toNumber() * 1000000 + 0.1) / 10000;\n }, [asks, bids]);\n\n return (\n <div>\n <Tooltip\n content={t(\"trading.orderBook.spreadRatio.tooltip\")}\n className=\"oui-max-w-[240px]\"\n >\n <Text\n size=\"2xs\"\n intensity={36}\n className={\n \"oui-cursor-pointer oui-underline oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-base-contrast-36\"\n }\n >\n {`${spread}%`}\n </Text>\n </Tooltip>\n </div>\n );\n};\n","import {\n ArrowDownShortIcon,\n ArrowUpShortIcon,\n Box,\n cn,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { FC } from \"react\";\n\n/**\n * default style is desktop effect\n */\nexport const MiddlePriceView: FC<{\n markPrice: number;\n lastPrice: number[];\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const {\n markPrice = 0,\n lastPrice,\n quote_dp,\n className,\n iconSize = 18,\n } = props;\n\n const [prevLastPrice, middlePrice] = lastPrice;\n\n const down = middlePrice < prevLastPrice;\n const up = middlePrice > prevLastPrice;\n\n return (\n <Flex\n gap={1}\n className={cn(\n up ? \"oui-text-trade-profit\" : down ? \"oui-text-trade-loss\" : \"\",\n className\n )}\n >\n <Text.numeral dp={quote_dp} intensity={98}>\n {middlePrice}\n </Text.numeral>\n <Box width={19}>\n {down && (\n <ArrowDownShortIcon size={iconSize} color=\"danger\" opacity={1} />\n )}\n {up && <ArrowUpShortIcon size={iconSize} color=\"success\" opacity={1} />}\n </Box>\n </Flex>\n );\n};\n","import { FC, useState } from \"react\";\nimport {\n Tooltip,\n cn,\n Flex,\n Text,\n SimpleDialog,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\n/**\n * default style is desktop effect\n */\nexport const MarkPriceView: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const { isMobile } = useScreen();\n\n return isMobile ? <MobileLayout {...props} /> : <DesktopLayout {...props} />;\n};\n\nconst DesktopLayout: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const { quote_dp, className, iconSize = 18 } = props;\n const { t } = useTranslation();\n return (\n <Tooltip\n content={t(\"trading.orderBook.markPrice.tooltip\")}\n className=\"oui-max-w-[270px]\"\n >\n <Flex\n gap={1}\n className={cn(\"oui-cursor-pointer oui-text-2xs\", className)}\n >\n <FlagIcon size={iconSize} />\n <Text.numeral\n dp={quote_dp}\n color=\"warning\"\n className=\"oui-underline oui-text-base oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-warning-darken\"\n >\n {props.markPrice}\n </Text.numeral>\n </Flex>\n </Tooltip>\n );\n};\n\nconst MobileLayout: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const { quote_dp, className, iconSize = 18 } = props;\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n return (\n <>\n <Flex\n gap={1}\n className={cn(\"oui-cursor-pointer oui-text-2xs\", className)}\n onClick={() => {\n setOpen(true);\n }}\n >\n <FlagIcon size={iconSize} />\n <Text.numeral\n dp={quote_dp}\n color=\"warning\"\n className=\"oui-underline oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-warning-darken\"\n >\n {props.markPrice}\n </Text.numeral>\n </Flex>\n <SimpleDialog\n size=\"xs\"\n open={open}\n onOpenChange={setOpen}\n title={t(\"common.tips\")}\n actions={{\n primary: {\n label: t(\"common.ok\"),\n onClick: () => setOpen(false),\n },\n }}\n >\n <Text>{t(\"trading.orderBook.markPrice.tooltip\")}</Text>\n </SimpleDialog>\n </>\n );\n};\n\nconst FlagIcon = (props: { size: number }) => {\n return (\n <svg\n width={props.size}\n height={props.size}\n viewBox=\"0 0 18 18\"\n fill=\"currenColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-warning-darken\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.75 1.5a.75.75 0 0 1 .75.75h6a.75.75 0 0 1 .75.75v1.5h3a.75.75 0 0 1 .75.75V12a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75v-1.5H4.5v5.25a.75.75 0 0 1-1.5 0V2.25a.75.75 0 0 1 .75-.75M4.5 9h5.25V3.75H4.5zm6.75-3v3.75a.75.75 0 0 1-.75.75H8.25v.75h5.25V6z\"\n // fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import { FC, useEffect } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { EMPTY_LIST } from \"@orderly.network/types\";\nimport { cn, Flex, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport {\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n OrderBookProvider,\n} from \"../../base/orderBook/orderContext\";\nimport { FundingRateWidget } from \"../fundingRate\";\nimport { Asks } from \"./asks\";\nimport { Bids } from \"./bids\";\nimport { DepthSelect } from \"./depthSelect\";\nimport { Header } from \"./header\";\nimport { MarkPrice } from \"./markPrice\";\n\nexport interface OrderBookProps {\n asks: any[];\n bids: any[];\n markPrice: number;\n lastPrice: number[];\n onItemClick?: (item: number[]) => void;\n depths?: string[];\n activeDepth?: string;\n onDepthChange?: (depth: number) => void;\n //\n autoSize?: boolean;\n level?: number;\n base: string;\n quote: string;\n\n isLoading?: boolean;\n\n cellHeight?: number;\n\n className?: string;\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const OrderBook: FC<OrderBookProps> = (props) => {\n const { lastPrice, markPrice, quote, base, isLoading, onDepthChange } = props;\n\n const symbol = `PERP_${props.symbolInfo.base}_${props.symbolInfo.quote}`;\n\n const [coinUnit, setCoinUnit] = useLocalStorage<\"qty\" | \"base\" | \"quote\">(\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n \"qty\",\n );\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n pendingOrders={EMPTY_LIST}\n showTotal={false}\n symbolInfo={props.symbolInfo}\n >\n <Flex\n direction={\"column\"}\n p={2}\n id=\"oui-orderbook-mobile\"\n className={cn(\"oui-relative oui-size-full\", props.className)}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n <FundingRateWidget symbol={symbol} />\n <Header quote={quote} base={base} />\n <Asks data={props.asks} />\n <MarkPrice lastPrice={lastPrice} markPrice={markPrice} />\n <Bids data={props.bids} />\n <DepthSelect\n depth={props.depths || EMPTY_LIST}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n {isLoading && (\n <div className=\"oui-bg-base-800/70 oui-absolute oui-inset-0 oui-z-10 oui-flex oui-h-full oui-min-h-[420px] oui-items-center oui-justify-center\">\n <Spinner />\n </div>\n )}\n </Flex>\n </OrderBookProvider>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { FundingRateState } from \"./fundingRate.script\";\n\nexport const FundingRate: FC<FundingRateState> = (props) => {\n const { data, onClick } = props;\n const predFundingRate = data.est_funding_rate;\n const countDown = data.countDown;\n const { t } = useTranslation();\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} pb={2}>\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\"\n onClick={onClick}\n >\n {t(\"trading.fundingRate.predFundingRate\")}\n </Text>\n {predFundingRate === null ? (\n \"--\"\n ) : (\n <div className=\"orderly-flex orderly-gap-1 oui-text-2xs oui-text-base-contrast-36\">\n {/* <span className=\"orderly-text-warning-darken\">{`${predFundingRate}%`}</span> */}\n <Text.numeral coloring suffix=\"%\" dp={4}>\n {predFundingRate ?? \"--\"}\n </Text.numeral>\n <span>{\" in\"}</span>\n <span>{\" \" + countDown}</span>\n </div>\n )}\n </Flex>\n );\n};\n","import { useCallback } from \"react\";\nimport { useFundingRate } from \"@orderly.network/hooks\";\nimport { modal } from \"@orderly.network/ui\";\nimport { FundingRateDialogId } from \"../fundingRateModal/fundingRateModal.widget\";\n\nexport const useFundingRateScript = (symbol: string) => {\n const data = useFundingRate(symbol);\n const onClick = useCallback<React.MouseEventHandler<HTMLElement>>(() => {\n modal.show(FundingRateDialogId, { symbol });\n }, [symbol]);\n return {\n data,\n onClick,\n };\n};\n\nexport type FundingRateState = ReturnType<typeof useFundingRateScript>;\n","import React from \"react\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { useFundingRateModalScript } from \"./fundingRateModal.script\";\nimport { FundingRateModal } from \"./fundingRateModal.ui\";\n\nexport const FundingRateModalWidget: React.FC<{ symbol: string }> = (props) => {\n const state = useFundingRateModalScript(props);\n return <FundingRateModal {...state} />;\n};\n\nexport const FundingRateDialogId = \"FundingRateDialogId\";\nexport const FundingRateSheetId = \"FundingRateSheetId\";\n\nregisterSimpleDialog(FundingRateDialogId, FundingRateModalWidget, {\n size: \"md\",\n classNames: { content: \"oui-border oui-border-line-6\" },\n title: () => i18n.t(\"funding.fundingRate\"),\n});\n\nregisterSimpleSheet(FundingRateSheetId, FundingRateModalWidget, {\n title: () => i18n.t(\"funding.fundingRate\"),\n});\n","import { useMemo } from \"react\";\nimport { useFundingDetails } from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\n\ninterface FundingRateOptions {\n symbol: string;\n}\n\nexport const useFundingRateModalScript = (options: FundingRateOptions) => {\n const { data, isLoading } = useFundingDetails(options.symbol);\n\n const fundingPeriod = useMemo(() => {\n if (!data || isLoading) {\n return \"-\";\n }\n return `${data.funding_period}h`;\n }, [data, isLoading]);\n\n const capFunding = useMemo(() => {\n if (!data || isLoading) {\n return \"-\";\n }\n return `${new Decimal(data.cap_funding).mul(100).toNumber()}%`;\n }, [data, isLoading]);\n\n const floorFunding = useMemo(() => {\n if (!data || isLoading) {\n return \"-\";\n }\n return `${new Decimal(data.floor_funding).mul(100).toNumber()}%`;\n }, [data, isLoading]);\n\n return { fundingPeriod, capFunding, floorFunding };\n};\n\nexport type FundingRateModalState = ReturnType<\n typeof useFundingRateModalScript\n>;\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, Divider } from \"@orderly.network/ui\";\nimport type { FundingRateModalState } from \"./fundingRateModal.script\";\n\nexport const FundingRateModal: React.FC<FundingRateModalState> = (props) => {\n const { t } = useTranslation();\n const { fundingPeriod, capFunding, floorFunding } = props;\n return (\n <Flex width={\"100%\"} itemAlign={\"center\"} direction=\"column\" gap={1}>\n <Flex justify=\"between\" itemAlign={\"center\"} width={\"100%\"}>\n <Text intensity={54}>\n {t(\"trading.fundingRate.predFundingRate.interval\")}\n </Text>\n <Text intensity={80}>{fundingPeriod}</Text>\n </Flex>\n <Flex justify=\"between\" itemAlign={\"center\"} width={\"100%\"}>\n <Text intensity={54}>\n {t(\"trading.fundingRate.predFundingRate.cap\")} /\n {t(\"trading.fundingRate.predFundingRate.floor\")}\n </Text>\n <Text intensity={80}>\n {capFunding} / {floorFunding}\n </Text>\n </Flex>\n <Divider my={4} className=\"oui-w-full\" intensity={8} />\n {t(\"markets.symbolInfoBar.predFundingRate.tooltip\")}\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useFundingRateScript } from \"./fundingRate.script\";\nimport { FundingRate } from \"./fundingRate.ui\";\n\nexport const FundingRateWidget: React.FC<{ symbol: string }> = (props) => {\n const state = useFundingRateScript(props.symbol);\n return <FundingRate {...state} />;\n};\n","import { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { ListBox } from \"./listBox\";\n\nexport interface Props {\n data: number[][];\n}\nexport const Asks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n const len = data.length;\n let max = Number.NaN;\n\n let index = 0;\n\n while (Number.isNaN(max) && index < len) {\n max = data[index][2];\n index++;\n }\n\n return max;\n }, [data]);\n return (\n <ListBox type={OrderBookCellType.ASK} data={data} countQty={countQty} />\n );\n};\n","import { FC } from \"react\";\nimport { Box } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { OrderBookCell } from \"./cell\";\n\ninterface OrderBookListProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const ListBox: FC<OrderBookListProps> = (props) => {\n const { data } = props;\n const { mode } = useOrderBookContext();\n return (\n <Box className=\"oui-order-book-list oui-flex oui-w-full oui-flex-col oui-gap-px\">\n {data.map((item, index) => {\n return (\n <OrderBookCell\n key={`item-${index}`}\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n accumulatedAmount={item[3]}\n count={props.countQty}\n type={props.type}\n mode={mode}\n />\n );\n })}\n </Box>\n );\n};\n","import { FC, useContext, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { Box, cn, Flex, Text } from \"@orderly.network/ui\";\nimport { getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { CellBar } from \"../../base/orderBook/cellBar\";\nimport {\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n OrderBookContext,\n} from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType, QtyMode } from \"../../base/orderBook/types\";\n\nexport interface OrderBookCellProps {\n background: string;\n price: number;\n quantity: number;\n accumulatedAmount: number;\n // size: number;\n count: number;\n accumulated: number;\n type: OrderBookCellType;\n mode: QtyMode;\n}\n\nexport const OrderBookCell: FC<OrderBookCellProps> = (props) => {\n const { accumulated, count, quantity, price, type, accumulatedAmount } =\n props;\n\n const width = (accumulated / count) * 100;\n\n const { cellHeight, onItemClick, depth, symbolInfo } =\n useContext(OrderBookContext);\n\n const { base_dp, quote_dp, base, quote } = symbolInfo;\n\n const [coinUnit, setCoinUnit] = useLocalStorage<\"qty\" | \"base\" | \"quote\">(\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n \"qty\",\n );\n\n const totalAmount = Number.isNaN(accumulated)\n ? \"-\"\n : accumulatedAmount?.toString();\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n const renderCell = () => {\n switch (coinUnit) {\n case \"base\":\n return (\n <Text.numeral className=\"oui-text-base-contrast-80\" dp={base_dp}>\n {accumulated}\n </Text.numeral>\n );\n case \"quote\":\n return (\n <Text.numeral className=\"oui-text-base-contrast-80\" dp={0}>\n {totalAmount}\n </Text.numeral>\n );\n default:\n return (\n <Text.numeral className=\"oui-text-base-contrast-80\" dp={base_dp}>\n {Number.isNaN(quantity) ? \"-\" : quantity}\n </Text.numeral>\n );\n }\n };\n\n return (\n <Box\n className={cn(\n \"oui-relative oui-w-full oui-cursor-pointer oui-overflow-hidden oui-text-2xs oui-tabular-nums\",\n )}\n style={{ height: `${cellHeight}px` }}\n onClick={() => {\n if (Number.isNaN(price) || Number.isNaN(quantity)) {\n return;\n }\n onItemClick?.([price, quantity]);\n }}\n >\n <Flex itemAlign=\"center\" justify={\"between\"}>\n <Text.numeral\n color={type === OrderBookCellType.BID ? \"buy\" : \"sell\"}\n dp={dp}\n >\n {price}\n </Text.numeral>\n {renderCell()}\n </Flex>\n {Number.isNaN(width) ? null : (\n <CellBar\n width={width}\n className={cn(\n type === OrderBookCellType.ASK\n ? \"oui-bg-trade-loss/20\"\n : \"oui-bg-trade-profit/20\",\n )}\n />\n )}\n </Box>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { ListBox } from \"./listBox\";\n\nexport interface Props {\n data: any[];\n}\n\nexport const Bids: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n // let len = data.length;\n let index = data.length - 1;\n\n while (Number.isNaN(max) && index > 0) {\n max = data[index][2];\n index--;\n }\n\n return max;\n // return data.length > 0 ? data[data.length - 1][2] : 0;\n }, [data]);\n\n return (\n <ListBox type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { Box, Picker } from \"@orderly.network/ui\";\n\ninterface DepthSelectProps {\n depth: ReadonlyArray<string> | string[];\n value?: string;\n onChange?: (depth: number) => void;\n}\n\nexport const DepthSelect: FC<DepthSelectProps> = (props) => {\n const options = useMemo(() => {\n return props.depth.map((d) => ({\n value: d,\n label: `${d}`,\n }));\n }, [props.depth]);\n return (\n <Box id=\"oui-order-book-depth\" className=\"oui-w-full oui-pt-2\">\n {/* <Select size={\"small\"} value={\"0.001\"} /> */}\n <Picker\n options={options}\n fullWidth\n size={\"sm\"}\n value={props.value}\n className=\"oui-text-2xs oui-text-base-contrast-54\"\n onValueChange={(value) => {\n //\n props.onChange?.(value);\n }}\n />\n </Box>\n );\n};\n","import React, { FC, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n CaretDownIcon,\n CaretUpIcon,\n Flex,\n Picker,\n Text,\n} from \"@orderly.network/ui\";\nimport { SelectOption } from \"@orderly.network/ui/src/select/withOptions\";\nimport { ORDERBOOK_MOBILE_COIN_TYPE_KEY } from \"../../base/orderBook/orderContext\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const Header: FC<Props> = (props) => {\n const { t } = useTranslation();\n\n const { base, quote } = props;\n\n const [coinUnit, setCoinUnit] = useLocalStorage<\"qty\" | \"base\" | \"quote\">(\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n \"qty\",\n );\n\n const options = useMemo<SelectOption[]>(() => {\n return [\n {\n value: \"qty\",\n label: `${t(\"common.quantity\")}(${base})`,\n data: [t(\"common.quantity\"), base],\n },\n {\n value: \"base\",\n label: `${t(\"common.total\")}(${base})`,\n data: [t(\"common.total\"), base],\n },\n {\n value: \"quote\",\n label: `${t(\"common.total\")}(${quote})`,\n data: [t(\"common.total\"), quote],\n },\n ];\n }, [t, base, quote]);\n\n return (\n <Flex\n justify={\"between\"}\n width={\"100%\"}\n className=\"oui-py-[5px] oui-text-2xs oui-text-base-contrast-36\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n id=\"oui-order-book-header-price\"\n >\n <Text>{t(\"common.price\")}</Text>\n <Text>{`(${quote})`}</Text>\n </Flex>\n <Picker\n size=\"sm\"\n value={coinUnit}\n onValueChange={setCoinUnit}\n options={options}\n valueRenderer={(_, { open, data }) => {\n return (\n <Flex justify=\"between\" itemAlign=\"center\" gap={1}>\n {Array.isArray(data) && (\n <Flex direction={\"column\"} itemAlign={\"end\"}>\n {data[0] && <Text>{data[0]}</Text>}\n {data[1] && <Text>({data[1]})</Text>}\n </Flex>\n )}\n {open ? (\n <CaretUpIcon size={14} color=\"inherit\" />\n ) : (\n <CaretDownIcon size={14} color=\"inherit\" />\n )}\n </Flex>\n );\n }}\n />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { MarkPriceView } from \"../../base/orderBook/markPrice\";\nimport { MiddlePriceView } from \"../../base/orderBook/midPriceView\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\n\ninterface MarkPriceProps {\n markPrice: number;\n lastPrice: number[];\n}\n\nexport const MarkPrice: FC<MarkPriceProps> = (props) => {\n const { symbolInfo } = useOrderBookContext();\n\n const { quote_dp } = symbolInfo;\n\n return (\n <Flex\n id=\"oui-order-book-mark-price\"\n className=\"oui-py-[6px]\"\n width={\"100%\"}\n justify={\"between\"}\n >\n <MiddlePriceView\n markPrice={props.markPrice}\n lastPrice={props.lastPrice}\n quote_dp={quote_dp}\n className=\"oui-text-sm\"\n iconSize={14}\n />\n <MarkPriceView\n markPrice={props.markPrice}\n quote_dp={quote_dp}\n className=\"oui-text-2xs\"\n iconSize={12}\n />\n </Flex>\n );\n};\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useOrderbookStream,\n useOrderStream,\n useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { removeTrailingZeros } from \"@orderly.network/utils\";\nimport { getBasicSymbolInfo } from \"../../../utils/utils\";\n\nconst CELL_MAX = 30;\nconst DEFAULT_CELL_HEIGHT = 20;\n\nconst SPACE = 104;\n\nexport const useOrderBookScript = (props: {\n symbol: string;\n height?: number;\n}) => {\n const { symbol, height } = props;\n const symbolInfo = useSymbolsInfo()[props.symbol];\n\n const [cellHeight, setCellHeight] = useState(DEFAULT_CELL_HEIGHT);\n\n const [level, setLevel] = useState(10);\n const { base, quote, quote_dp } = getBasicSymbolInfo(symbolInfo);\n // const counter = useRef(0);\n\n const [data, { onDepthChange, isLoading, onItemClick, depth, allDepths }] =\n useOrderbookStream(symbol, undefined, {\n level,\n });\n\n // useEffect(() => {\n // counter.current = 0;\n // }, [symbol]);\n\n const pendingOrders = usePendingOrderStream(symbol);\n useEffect(() => {\n if (height) {\n // setCellHeight(height.content / level);\n const level = Math.floor(\n (height - SPACE) / ((DEFAULT_CELL_HEIGHT + 1) * 2),\n );\n\n const cellsHeight = (DEFAULT_CELL_HEIGHT + 1) * 2 * level;\n\n const restSpace = height - SPACE - cellsHeight;\n\n // console.log(\n // \"restSpace\",\n // level,\n // height,\n // SPACE,\n // cellsHeight,\n // restSpace\n // );\n\n if (restSpace > 10) {\n setCellHeight(DEFAULT_CELL_HEIGHT + restSpace / level / 2);\n } else {\n setCellHeight(DEFAULT_CELL_HEIGHT);\n }\n\n setLevel(level);\n }\n }, [height]);\n\n const selDepth = useMemo(() => {\n if (typeof depth === \"undefined\" || typeof quote_dp === \"undefined\") {\n return undefined;\n }\n // // FIXME: hardcode for now, need to optimize it\n // counter.current++;\n // if (counter.current === 1 && DEFAULT_DEPTH[symbol]) {\n // return DEFAULT_DEPTH[symbol];\n // }\n\n return removeTrailingZeros(depth);\n }, [depth, quote_dp, symbol]);\n\n const depths = useMemo(() => {\n return allDepths?.map((e) => removeTrailingZeros(e)) || [];\n }, [allDepths, quote_dp]);\n\n const { isMobile } = useScreen();\n\n return {\n level,\n asks: data?.asks,\n bids: data?.bids,\n markPrice: data?.markPrice,\n lastPrice: data?.middlePrice,\n depths,\n selDepth,\n base,\n quote,\n isLoading,\n onItemClick,\n cellHeight,\n onDepthChange,\n pendingOrders,\n symbolInfo: getBasicSymbolInfo(symbolInfo),\n isMobile,\n };\n};\n\nexport const usePendingOrderStream = (symbol: string): number[] => {\n const [data] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n symbol: symbol,\n });\n\n const pendingOrders = useMemo(() => {\n const info = data\n ?.filter((item) => item.symbol === symbol)\n .reduce((a, b) => {\n // TODO: check if this is the correct price, when the data is from WS, it crashes\n const price = b.price || b.trigger_price || 0;\n return [...a, price];\n }, []);\n\n return info;\n }, [data, symbol]);\n\n return pendingOrders;\n};\n\nexport type OrderBookState = ReturnType<typeof useOrderBookScript>;\n","import type { API } from \"@orderly.network/types\";\nimport type { BasicSymbolInfo } from \"../types/types\";\n\ntype ValueOf<T> = T[keyof T];\n\nexport const getBasicSymbolInfo = (\n symbolInfo: (\n key?: keyof API.SymbolExt,\n defaultValue?: ValueOf<API.SymbolExt>,\n ) => any,\n): BasicSymbolInfo => {\n return {\n base_dp: symbolInfo(\"base_dp\"),\n quote_dp: symbolInfo(\"quote_dp\"),\n base_tick: symbolInfo(\"base_tick\"),\n base: symbolInfo(\"base\"),\n quote: symbolInfo(\"quote\"),\n };\n};\n","import { useOrderBookScript } from \"./orderBook.script\";\nimport { OrderBook } from \"./orderBook.ui\";\n\nexport const OrderBookWidget = (props: {\n className?: string;\n symbol: string;\n height?: number;\n}) => {\n const state = useOrderBookScript({\n symbol: props.symbol,\n height: props.height,\n });\n return <OrderBook {...state} className={props.className} />;\n};\n","import React, { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport {\n Flex,\n Text,\n Box,\n Tooltip,\n modal,\n gradientTextVariants,\n cn,\n EditIcon,\n} from \"@orderly.network/ui\";\nimport { LeverageWidgetWithDialogId } from \"@orderly.network/ui-leverage\";\nimport { TooltipContent } from \"../assetView/assetView.ui\";\nimport { RiskRateState } from \"./riskRate.script\";\n\nexport const RiskRate: FC<RiskRateState> = (props) => {\n const { riskRate, riskRateColor, currentLeverage, maxLeverage } = props;\n const { isHigh, isMedium, isLow } = riskRateColor;\n const { wrongNetwork } = useAppContext();\n const { t } = useTranslation();\n\n const textColor = wrongNetwork\n ? \"\"\n : isHigh\n ? \"oui-text-danger\"\n : isMedium\n ? \"oui-text-warning-darken\"\n : isLow\n ? gradientTextVariants({ color: \"brand\" })\n : \"\";\n\n const boxClsName = wrongNetwork\n ? \"oui-bg-gradient-to-r oui-opacity-20 oui-from-[#26fefe] oui-via-[#ff7d00] oui-to-[#d92d6b] oui-h-1.5 oui-rounded-full\"\n : isHigh\n ? \"oui-bg-gradient-to-tr oui-from-[#791438] oui-to-[#ff447c] oui-h-1.5 oui-rounded-full\"\n : isMedium\n ? \"oui-bg-gradient-to-tr oui-from-[#792e00] oui-to-[#ffb65d] oui-h-1.5 oui-rounded-full\"\n : isLow\n ? \"oui-bg-gradient-to-tr oui-from-[#59b0fe] oui-to-[#26fefe] oui-h-1.5 oui-rounded-full\"\n : \"oui-bg-gradient-to-r oui-opacity-20 oui-from-[#26fefe] oui-via-[#ff7d00] oui-to-[#d92d6b] oui-h-1.5 oui-rounded-full\";\n\n return (\n <Box data-risk={\"\"} className=\"oui-space-y-2\">\n <Flex\n itemAlign=\"center\"\n justify=\"start\"\n className=\"oui-w-full oui-bg-base-6 oui-rounded-full oui-h-2 oui-px-[1px]\"\n >\n <Box\n className={boxClsName}\n style={\n riskRate && riskRate !== \"--\"\n ? { width: riskRate }\n : { width: \"100%\" }\n }\n />\n </Flex>\n\n <Flex className=\"oui-gap-2\" justify=\"between\">\n <Flex direction=\"column\">\n <Tooltip\n content={\n <TooltipContent\n description={t(\"trading.riskRate.tooltip\")}\n formula={t(\"trading.riskRate.formula\")}\n />\n }\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className={cn(\n \"oui-cursor-pointer\",\n \"oui-border-b oui-border-dashed oui-border-b-white/10\",\n )}\n >\n {t(\"trading.riskRate\")}\n </Text>\n </Tooltip>\n <Text\n size=\"xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className={cn(textColor)}\n >\n {riskRate ?? \"--\"}\n </Text>\n </Flex>\n\n <Flex direction=\"column\">\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className={cn(\n \"oui-cursor-pointer\",\n // add extra bottom border to make height same as risk rate text\n \"oui-border-b oui-border-b-transparent\",\n )}\n >\n {t(\"leverage.maxAccountLeverage\")}\n </Text>\n <Flex className=\"oui-gap-1\">\n <Text.numeral\n dp={2}\n padding={false}\n suffix={currentLeverage ? \"x\" : undefined}\n >\n {currentLeverage ?? \"--\"}\n </Text.numeral>\n\n <span className={\"oui-text-base-contrast-54\"}>/</span>\n\n <button\n className=\"oui-flex oui-items-center oui-gap-1\"\n onClick={() => {\n modal.show(LeverageWidgetWithDialogId, { currentLeverage: 5 });\n }}\n data-testid=\"oui-testid-riskRate-leverage-button\"\n >\n <Text.numeral\n dp={2}\n padding={false}\n suffix={maxLeverage ? \"x\" : undefined}\n data-testid=\"oui-testid-riskRate-leverage-value\"\n >\n {maxLeverage ?? \"--\"}\n </Text.numeral>\n\n {typeof maxLeverage !== \"undefined\" && maxLeverage !== null && (\n <EditIcon size={12} color=\"white\" />\n )}\n </button>\n </Flex>\n </Flex>\n </Flex>\n </Box>\n );\n};\n","import { useMemo } from \"react\";\nimport {\n useAccount,\n useLeverage,\n useMarginRatio,\n} from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nconst getRiskRateColor = (riskRate: null | number) => {\n if (riskRate === null) {\n return { isHigh: false, isMedium: false, isLow: false, isDefault: true };\n }\n\n const isLow = riskRate < 40;\n const isMedium = riskRate >= 40 && riskRate < 80;\n const isHigh = riskRate >= 80;\n const isDefault = !isLow && !isMedium && !isHigh;\n\n return { isHigh, isMedium, isLow, isDefault };\n};\n\nexport const useRiskRateScript = () => {\n const { state } = useAccount();\n\n const isConnected =\n state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n const { marginRatio, currentLeverage, mmr } = useMarginRatio();\n\n const { curLeverage } = useLeverage();\n\n const riskRate = useMemo(() => {\n if (!isConnected || marginRatio === null || mmr === null) {\n return \"--\";\n }\n\n if (marginRatio === 0 || mmr === 0) {\n return \"0%\";\n }\n\n const calculatedRiskRate = new Decimal(mmr)\n .div(marginRatio)\n .mul(100)\n .todp(2, Decimal.ROUND_UP);\n\n // Remove trailing zeroes and add percentage sign\n return `${calculatedRiskRate.toString().replace(/\\.?0+$/, \"\")}%`;\n }, [isConnected, marginRatio, mmr]);\n\n const riskRateNumber = riskRate === \"--\" ? null : parseFloat(riskRate);\n\n const riskRateColor = useMemo(() => {\n return getRiskRateColor(riskRateNumber);\n }, [riskRateNumber]);\n\n const _curLeverage = useDataTap(currentLeverage);\n const _maxLeverage = useDataTap(curLeverage);\n const _riskRate = useDataTap(riskRate);\n\n return {\n riskRate: _riskRate,\n riskRateColor,\n isConnected,\n currentLeverage: _curLeverage,\n maxLeverage: _maxLeverage,\n };\n};\n\nexport type RiskRateState = ReturnType<typeof useRiskRateScript>;\n","import { useRiskRateScript } from \"./riskRate.script\";\nimport { RiskRate } from \"./riskRate.ui\";\n\nexport const RiskRateWidget = () => {\n const state = useRiskRateScript();\n return <RiskRate {...state} />;\n};\n","import { FC } from \"react\";\nimport { Box, cn, Flex, Grid, TabPanel, Tabs, Text } from \"@orderly.network/ui\";\nimport { OrderBookAndTradesState } from \"./orderBookAndTrades.script\";\nimport { OrderBookWidget } from \"../../base/orderBook\";\nimport { LastTradesWidget } from \"../../base/lastTrades\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const OrderBookAndTrades: FC<OrderBookAndTradesState> = (props) => {\n return (\n <div ref={props.containerRef} className=\"oui-h-full\">\n {(props.containerSize?.width || 0) >= 572 ? (\n <TwoColLayout {...props} />\n ) : (\n <TabLayout {...props} />\n )}\n </div>\n );\n};\n\nconst TwoColLayout: FC<OrderBookAndTradesState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Grid\n cols={2}\n width={\"100%\"}\n gap={3}\n className=\"oui-auto-rows-fr\"\n style={{\n height: props.containerSize?.height,\n }}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n // pl={3}\n pt={3}\n pb={3}\n r=\"2xl\"\n className=\"oui-bg-base-9\"\n >\n <Title\n title={t(\"trading.orderBook\")}\n className=\"oui-pl-3 oui-text-sm\"\n />\n <OrderBookWidget\n symbol={props.symbol}\n height={\n props.containerSize\n ? props.containerSize.height - 29 - 24\n : undefined\n }\n />\n </Flex>\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n py={3}\n r=\"2xl\"\n className=\"oui-bg-base-9 oui-h-full\"\n >\n <Title\n title={t(\"trading.lastTrades\")}\n className=\"oui-text-sm oui-px-3\"\n />\n <LastTradesWidget\n symbol={props.symbol}\n style={{\n height: props.containerSize && props.containerSize.height - 29 - 24,\n }}\n classNames={{\n listHeader: \"oui-px-3\",\n list: \"oui-px-3\",\n }}\n />\n </Flex>\n </Grid>\n );\n};\nconst TabLayout: FC<OrderBookAndTradesState & {}> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Box\n // pl={3}\n pt={3}\n pb={3}\n pr={0}\n r=\"2xl\"\n className=\"oui-bg-base-9\"\n style={{\n maxHeight: props.containerSize?.height,\n }}\n >\n <Tabs\n value={props.tab}\n variant=\"contained\"\n onValueChange={(tab) => {\n props.setTab(tab as any);\n }}\n classNames={{\n tabsList: \"oui-pl-3\",\n // tabsContent: props.tab === \"lastTrades\" ? 'oui-pl-3' : ''\n }}\n size=\"lg\"\n >\n <TabPanel value=\"orderBook\" title={t(\"trading.orderBook\")}>\n <OrderBookWidget\n symbol={props.symbol}\n height={\n props.containerSize\n ? props.containerSize.height - 29 - 18\n : undefined\n }\n />\n </TabPanel>\n <TabPanel value=\"lastTrades\" title={t(\"trading.lastTrades\")}>\n <LastTradesWidget\n symbol={props.symbol}\n style={{\n height:\n props.containerSize && props.containerSize.height - 29 - 18,\n }}\n classNames={{\n root: \"oui-pt-[6px]\",\n listHeader: \"oui-px-3\",\n list: \"oui-px-3\",\n }}\n />\n </TabPanel>\n </Tabs>\n </Box>\n );\n};\n\nconst Title = (props: { title: string; className?: string }) => {\n return (\n <Text\n size=\"base\"\n intensity={80}\n className={cn(\"oui-pb-[5px]\", props.className)}\n >\n {props.title}\n </Text>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\n\nexport const useOrderBookAndTradesScript = (symbol: string) => {\n const [containerSize, setContainerSize] = useState<\n | {\n width: number;\n height: number;\n }\n | undefined\n >(undefined);\n\n const [tab, setTab] = useState<\"orderBook\" | \"lastTrades\">(\"orderBook\");\n\n const containerRef = useRef<HTMLDivElement>();\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n const { width, height } = entry.contentRect;\n setContainerSize({\n width,\n height,\n });\n }\n });\n\n const targetDiv = containerRef.current;\n\n if (targetDiv) {\n resizeObserver.observe(targetDiv);\n }\n\n return () => {\n if (targetDiv) {\n resizeObserver.unobserve(targetDiv);\n }\n };\n }, []);\n\n return {\n symbol,\n containerSize,\n containerRef: containerRef as any,\n tab,\n setTab,\n };\n};\n\nexport type OrderBookAndTradesState = ReturnType<\n typeof useOrderBookAndTradesScript\n>;\n","import { useOrderBookAndTradesScript } from \"./orderBookAndTrades.script\";\nimport { OrderBookAndTrades } from \"./orderBookAndTrades.ui\";\n\nexport const OrderBookAndTradesWidget = (props: { symbol: string }) => {\n const state = useOrderBookAndTradesScript(props.symbol);\n return <OrderBookAndTrades {...state} />;\n};\n","import React, { PropsWithChildren, forwardRef } from \"react\";\nimport Split, { SplitProps } from \"@uiw/react-split\";\nimport { SplitLineBar } from \"./splitLineBar\";\n\ntype SplitLayoutProps = PropsWithChildren<SplitProps> & {\n onSizeChange?: (size: string) => void;\n};\n\nexport const SplitLayout = forwardRef<Split, SplitLayoutProps>((props, ref) => {\n const { onSizeChange, ...rest } = props;\n\n return (\n /* @ts-ignore */\n <Split\n ref={ref}\n {...rest}\n lineBar\n renderBar={(barProps: any) => (\n <SplitLineBar {...barProps} mode={props.mode} />\n )}\n onDragEnd={(_, width, num) => {\n // console.log(\"onDragEnd\", width);\n onSizeChange?.(`${width}`);\n }}\n />\n );\n});\n","import React, { HTMLAttributes, useMemo } from \"react\";\nimport { SplitProps } from \"@uiw/react-split\";\nimport { cn } from \"@orderly.network/ui\";\n\nexport type SplitLineBarProps = Pick<SplitProps, \"mode\"> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const SplitLineBar: React.FC<SplitLineBarProps> = (props) => {\n const { onMouseDown, mode = \"horizontal\", ...rest } = props;\n\n const disable = useMemo(\n () => props.className?.split(\" \").includes(\"disable\"),\n [props.className],\n );\n\n const filterCls = useMemo(\n () => props.className?.split(\" \").filter((cls) => cls !== \"disable\"),\n [props.className],\n );\n\n return (\n <div\n {...rest}\n className={cn(\n filterCls,\n \"!oui-transition-none\",\n \"!oui-shadow-none !oui-bg-transparent\",\n \"hover:!oui-bg-primary-light hover:!oui-shadow-[0px_0px_4px_0px] hover:!oui-shadow-primary-light/80\",\n \"active:!oui-bg-primary-light active:!oui-shadow-[0px_0px_4px_0px] active:!oui-shadow-primary-light/80\",\n \"focus:!oui-bg-primary-light focus:!oui-shadow-[0px_0px_4px_0px] focus:!oui-shadow-primary-light/80\",\n mode === \"horizontal\"\n ? \"!oui-w-[2px] !oui-min-w-[2px] !oui-mx-[3px]\"\n : \"!oui-h-[2px] !oui-min-h-[2px] !oui-my-[3px]\",\n disable && \"oui-pointer-events-none\",\n )}\n >\n <div\n onMouseDown={onMouseDown}\n className={cn(\n \"!oui-transition-none\",\n mode === \"horizontal\" ? \"after:!oui-w-[2px]\" : \"after:!oui-h-[2px]\",\n \"after:!oui-bg-transparent after:!oui-shadow-transparent\",\n )}\n />\n </div>\n );\n};\n","import { FC, SVGProps, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Flex, SimpleDialog, Text } from \"@orderly.network/ui\";\nimport { ScanQRCodeWidget } from \"@orderly.network/ui-scaffold\";\nimport { MobileAccountMenuExtension } from \"./account/account.widget\";\nimport { BalanceWidget } from \"./balance\";\nimport { BottomNavBarState } from \"./bottomNavBar.script\";\nimport { ChainWidget } from \"./chain\";\n\nexport const BottomNavBar: FC<BottomNavBarState> = (props) => {\n const renderContent = () => {\n if (props.wrongNetwork) {\n return null;\n }\n\n if (\n !props.disabledConnect &&\n props.status === AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n return <LinkDevice onDisconnect={props.onDisconnect} />;\n }\n\n return <ChainWidget />;\n };\n\n const showScanQRCode =\n !props.disabledConnect &&\n props.status !== AccountStatusEnum.EnableTradingWithoutConnected &&\n props.status < AccountStatusEnum.EnableTrading;\n\n return (\n <div className=\"oui-bg-base-9 oui-border-t oui-border-line-4\">\n <Flex\n height={64}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-px-[14px]\"\n // style={{\n // height: \"calc(64px + env(safe-area-inset-bottom))\"\n // }}\n >\n <BalanceWidget />\n <Flex gap={2}>\n {showScanQRCode && <ScanQRCodeWidget />}\n {renderContent()}\n <MobileAccountMenuExtension />\n </Flex>\n </Flex>\n <div className=\"oui-h-[env(safe-area-inset-bottom)]\" />\n </div>\n );\n};\n\ntype LinkDeviceProps = {\n onDisconnect: () => void;\n};\n\nconst LinkDevice: FC<LinkDeviceProps> = (props) => {\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"common.tips\")}\n size=\"xs\"\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: hideDialog,\n size: \"md\",\n fullWidth: true,\n },\n primary: {\n label: t(\"connector.disconnect\"),\n onClick: async () => {\n await props.onDisconnect();\n hideDialog();\n },\n size: \"md\",\n variant: \"outlined\",\n color: \"danger\",\n },\n }}\n >\n <Text intensity={54} size=\"sm\">\n {t(\"linkDevice.scanQRCode.connected.description\")}\n </Text>\n </SimpleDialog>\n <Flex\n className=\"oui-text-base-contrast oui-px-[6px]\"\n intensity={500}\n height={28}\n r=\"md\"\n onClick={showDialog}\n >\n <DesktopIcon />\n <Dot />\n <LinkIcon />\n <Dot />\n <MobileIcon />\n </Flex>\n </>\n );\n};\n\nconst Dot = () => {\n return (\n <Flex className=\"oui-gap-x-[1px] oui-px-[1px]\">\n <DotIcon />\n <DotIcon />\n <DotIcon />\n </Flex>\n );\n};\n\nconst DesktopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M4.5 2.93a2.25 2.25 0 0 0-2.25 2.25v5.25a.75.75 0 0 0-.75.75v1.5c0 1.272.93 2.25 2.25 2.25h10.5c1.318 0 2.25-.978 2.25-2.25v-1.5a.75.75 0 0 0-.75-.75V5.18a2.25 2.25 0 0 0-2.25-2.25zm0 1.5h9a.75.75 0 0 1 .75.75v5.25H3.75V5.18a.75.75 0 0 1 .75-.75M3 11.93h12v.75c0 .46-.277.75-.75.75H3.75c-.474 0-.75-.29-.75-.75z\" />\n </svg>\n);\n\nconst MobileIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M13.498 3.715a2.25 2.25 0 0 0-2.25-2.25h-4.5a2.25 2.25 0 0 0-2.25 2.25v10.5a2.25 2.25 0 0 0 2.25 2.25h4.5a2.25 2.25 0 0 0 2.25-2.25zm-1.5 0v9.75h-6v-9.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75m-2.25 11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0\" />\n </svg>\n);\n\nconst LinkIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.007 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0m7.486-2.344A.6.6 0 0 1 8.91 3.5c.15 0 .305.048.418.156a.55.55 0 0 1 0 .798L5.254 8.337a.62.62 0 0 1-.837 0L2.67 6.673a.55.55 0 0 1 0-.798.62.62 0 0 1 .837 0l1.329 1.266z\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"11.007\"\n y1=\"5.999\"\n x2=\"1.007\"\n y2=\"5.999\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nconst DotIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"2\"\n height=\"2\"\n viewBox=\"0 0 2 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M.667.334a.667.667 0 1 1 0 1.333.667.667 0 0 1 0-1.333\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"1.333\"\n y1=\"1.001\"\n x2=\"0\"\n y2=\"1.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import { ExtensionPositionEnum, ExtensionSlot, installExtension } from \"@orderly.network/ui\";\nimport { useAccountScript } from \"./account.script\";\nimport { Account } from \"./account.ui\";\n\nexport const AccountWidget = () => {\n const state = useAccountScript();\n return (<Account {...state} />);\n};\ninstallExtension<any>({\n name: \"mobile-account-menu\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.MobileAccountMenu],\n builder: useAccountScript,\n __isInternal: true,\n })((props:any) => {\n return <Account {...props} />;\n });\n \n export const MobileAccountMenuExtension = () => {\n return <ExtensionSlot position={ExtensionPositionEnum.MobileAccountMenu} />;\n };\n ","import { AccountState as AccountStateType } from \"@orderly.network/core\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { modal } from \"@orderly.network/ui\";\nimport { useTradingPageContext } from \"../../../../provider/tradingPageContext\";\nimport { AccountSheetWidget } from \"../../accountSheet\";\n\nexport const useAccountScript = () => {\n const { t } = useTranslation();\n const { referral, tradingRewards, bottomSheetLeading } =\n useTradingPageContext();\n const { account, state } = useAccount();\n\n const onShowAccountSheet = () => {\n modal.sheet({\n title: t(\"common.account\"),\n leading: bottomSheetLeading,\n content: <AccountSheetWidget {...referral} {...tradingRewards} />,\n });\n };\n\n return {\n onShowAccountSheet,\n address: account.address,\n state: state as AccountStateType,\n };\n};\n\nexport type AccountState = ReturnType<typeof useAccountScript>;\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ArrowRightShortIcon, Button, Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { AccountSheetState } from \"./accountSheet.script\";\nimport { CopyIcon, HeadIcon, OrderlyIcon, USDCIcon } from \"./icons\";\n\nexport const AccountSheet: FC<AccountSheetState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} gap={4}>\n <AccountInfo {...props} />\n <ReferralInfo {...props} />\n <TradingRewardsInfo {...props} />\n <Flex gap={3} width={\"100%\"} justify={\"center\"}>\n {props.showGetTestUSDC && (\n <Button\n variant=\"outlined\"\n // color=\"primary\"\n size=\"md\"\n onClick={props.onGetTestUSDC}\n fullWidth\n loading={props.gettingTestUSDC}\n className=\"oui-border-primary-light oui-text-primary-light\"\n >\n {t(\"trading.faucet.getTestUSDC\")}\n </Button>\n )}\n <Button\n variant=\"outlined\"\n color=\"danger\"\n size=\"md\"\n onClick={props.onDisconnect}\n className={props.showGetTestUSDC ? \"oui-w-full\" : \"oui-w-[50%]\"}\n >\n {t(\"connector.disconnect\")}\n </Button>\n </Flex>\n </Flex>\n );\n};\nexport const AccountInfo: FC<AccountSheetState> = (props) => {\n return (\n <Flex width={\"100%\"} justify={\"between\"}>\n <Flex gap={3}>\n <HeadIcon />\n <Flex\n direction={\"column\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n className=\"oui-gap-[2px]\"\n >\n <Text.formatted rule={\"address\"}>{props.address}</Text.formatted>\n <Text.formatted\n size=\"2xs\"\n intensity={80}\n // @ts-ignore\n prefix={\n <div className=\"oui-h-1 oui-w-1 oui-rounded-full oui-bg-success oui-pr-1\" />\n }\n >\n {props.chainName}\n </Text.formatted>\n </Flex>\n </Flex>\n <button\n className=\"oui-cursor-pointer\"\n onClick={() => {\n props.onCopyAddress();\n }}\n >\n <CopyIcon />\n </button>\n </Flex>\n );\n};\n\nexport const ReferralInfo: FC<AccountSheetState> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n direction={\"column\"}\n gap={3}\n r=\"lg\"\n p={3}\n className=\"oui-bg-base-6\"\n width={\"100%\"}\n >\n <button\n onClick={props.onClickReferral}\n className=\"oui-cursor-pointer oui-w-full\"\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text size=\"2xs\">{t(\"affiliate.referral\")}</Text>\n <ArrowRightShortIcon color=\"white\" opacity={0.98} size={16} />\n </Flex>\n </button>\n {props.isAffiliate && (\n <Flex\n gradient=\"primary\"\n p={4}\n r=\"lg\"\n width={\"100%\"}\n angle={180}\n justify={\"between\"}\n >\n <Flex direction={\"column\"} itemAlign={\"start\"}>\n <Text size=\"xs\">{t(\"common.affiliate\")}</Text>\n <Text size=\"2xs\" intensity={54}>\n ({t(\"affiliate.commission.30d\")})\n </Text>\n </Flex>\n <Flex className=\"oui-gap-[6px]\">\n <USDCIcon />\n <Text.numeral\n dp={2}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n rule=\"price\"\n >\n {props.affiliateCommission30D ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Flex>\n )}\n {props.isTrader && (\n <Flex\n gradient=\"success\"\n p={4}\n r=\"lg\"\n width={\"100%\"}\n angle={180}\n justify={\"between\"}\n >\n <Flex direction={\"column\"} itemAlign={\"start\"}>\n <Text size=\"xs\">{t(\"affiliate.trader\")}</Text>\n <Text size=\"2xs\" intensity={54}>\n ({t(\"affiliate.commission.30d\")})\n </Text>\n </Flex>\n <Flex className=\"oui-gap-[6px]\">\n <USDCIcon />\n <Text.numeral\n dp={2}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n rule=\"price\"\n >\n {props.traderCommission30D ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Flex>\n )}\n </Flex>\n );\n};\n\nexport const TradingRewardsInfo: FC<AccountSheetState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={3}\n r=\"lg\"\n p={3}\n className=\"oui-bg-base-6\"\n width={\"100%\"}\n >\n <button\n onClick={props.onClickTradingRewards}\n className=\"oui-cursor-pointer oui-w-full\"\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex gap={1} className=\"oui-text-base-contrast oui-text-2xs\">\n <Text>{t(\"common.tradingRewards\")}</Text>\n <Text intensity={54}>\n (\n <Text>{`${(\n t(\"tradingRewards.epoch\") as string\n )?.toLowerCase()} `}</Text>\n <Text intensity={98}>{props.curEpochId}</Text> )\n </Text>\n </Flex>\n <ArrowRightShortIcon color=\"white\" opacity={0.98} size={16} />\n </Flex>\n </button>\n <Flex\n p={4}\n r=\"lg\"\n width={\"100%\"}\n angle={180}\n justify={\"between\"}\n className=\"oui-bg-gradient-to-t oui-from-[#2d0061] oui-to-[#bd6bed]\"\n >\n <Text size=\"2xs\" intensity={80}>\n {t(\"tradingRewards.myEstRewards\")}\n </Text>\n\n <Flex className=\"oui-gap-[6px]\">\n <OrderlyIcon />\n <Text.numeral\n dp={2}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n rule=\"price\"\n >\n {props.estRewards}\n </Text.numeral>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","export const HeadIcon = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-rounded-full\"\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"m31.002 14.493-8.326-22.51L.166.31l8.327 22.51z\"\n fill=\"#03435D\"\n />\n <path\n d=\"m4.456-8.716-18.03 15.84 15.84 18.03 18.03-15.84z\"\n fill=\"#157CF2\"\n />\n <path\n d=\"m17.548 38.67 22.825-7.416-7.416-22.825-22.826 7.416z\"\n fill=\"#F3E200\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#fff\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport const CopyIcon = () => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.832 2.492A3.333 3.333 0 0 0 2.5 5.826v5a3.333 3.333 0 0 0 3.333 3.333 3.333 3.333 0 0 0 3.334 3.333h5a3.333 3.333 0 0 0 3.333-3.333v-5a3.333 3.333 0 0 0-3.333-3.333 3.333 3.333 0 0 0-3.334-3.334zm8.334 5c.92 0 1.666.746 1.666 1.667v5c0 .92-.746 1.666-1.666 1.666h-5c-.92 0-1.667-.745-1.667-1.666h3.333a3.333 3.333 0 0 0 3.334-3.334z\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n </svg>\n );\n};\n\nexport const USDCIcon = (props: { size?: number }) => {\n const { size = 20 } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M10 20c5.542 0 10-4.458 10-10S15.542 0 10 0 0 4.458 0 10s4.458 10 10 10\"\n fill=\"#2775CA\"\n />\n <path\n d=\"M13 11.473c0-1.452-.94-1.95-2.82-2.158-1.344-.166-1.613-.498-1.613-1.078s.448-.955 1.343-.955c.806 0 1.254.25 1.478.872.045.124.18.207.313.207h.717c.179 0 .313-.125.313-.29v-.042c-.179-.913-.985-1.618-2.015-1.701v-.996c0-.166-.134-.29-.358-.332h-.671c-.18 0-.314.124-.359.332v.954c-1.343.166-2.194.996-2.194 2.034 0 1.369.896 1.908 2.776 2.116 1.254.207 1.657.456 1.657 1.12s-.627 1.12-1.477 1.12c-1.165 0-1.568-.456-1.702-1.078a.32.32 0 0 0-.313-.25h-.762c-.179 0-.313.125-.313.291v.042c.179 1.037.895 1.784 2.373 1.991v.996c0 .166.134.29.358.332h.672c.18 0 .313-.124.358-.332v-.996C12.105 13.465 13 12.593 13 11.473\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n d=\"M7.74 16.57c-3.458-1.215-5.23-4.986-3.945-8.324.665-1.821 2.127-3.208 3.944-3.859.178-.086.266-.216.266-.433v-.607c0-.174-.088-.304-.266-.347-.044 0-.133 0-.177.043-4.21 1.3-6.516 5.68-5.186 9.798.798 2.428 2.704 4.292 5.186 5.072.177.087.355 0 .399-.173.044-.043.044-.087.044-.173v-.608c0-.13-.133-.303-.266-.39m4.698-13.527c-.178-.086-.355 0-.4.174-.043.043-.043.086-.043.173v.607c0 .174.133.347.266.434 3.457 1.213 5.23 4.985 3.944 8.323-.664 1.821-2.127 3.209-3.944 3.859-.178.086-.266.216-.266.433v.607c0 .174.088.304.266.347.044 0 .133 0 .177-.043 4.21-1.3 6.515-5.68 5.186-9.798-.798-2.471-2.748-4.335-5.186-5.116\"\n fill=\"#fff\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport const OrderlyIcon = (props: { size?: number }) => {\n const { size = 20 } = props;\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_6403_64483)\">\n <path\n d=\"M10.0245 19.9493C15.5198 19.9493 19.9747 15.4944 19.9747 9.99908C19.9747 4.50371 15.5198 0.0488281 10.0245 0.0488281C4.5291 0.0488281 0.0742188 4.50371 0.0742188 9.99908C0.0742188 15.4944 4.5291 19.9493 10.0245 19.9493Z\"\n fill=\"url(#paint0_linear_6403_64483)\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.1553 4.89304C14.2199 4.94541 14.1821 5.04758 14.0989 5.04758H5.95035C5.86716 5.04758 5.82936 4.94541 5.894 4.89304C7.0223 3.97912 8.45953 3.43164 10.0246 3.43164C11.5898 3.43164 13.0269 3.97912 14.1553 4.89304Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.47013 11.7869C7.42315 11.7199 7.34748 11.6777 7.26565 11.6777H3.82985C3.75113 11.6777 3.69375 11.7525 3.71563 11.8281C4.5078 14.565 7.0326 16.566 10.0247 16.566C13.017 16.566 15.5417 14.565 16.3339 11.8281C16.3558 11.7525 16.2984 11.6777 16.2197 11.6777H12.7839C12.702 11.6777 12.6264 11.7199 12.5795 11.7869C12.0155 12.5911 11.0815 13.1167 10.0248 13.1167C8.96803 13.1167 8.03406 12.5911 7.47013 11.7869Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.3347 7.90519C12.3822 7.95756 12.449 7.9891 12.5196 7.9891H16.1137C16.1952 7.9891 16.253 7.90983 16.2261 7.83301C15.9724 7.10689 15.5948 6.43893 15.1187 5.85447C15.074 5.79961 15.0067 5.76855 14.9358 5.76855H5.11323C5.04247 5.76855 4.97512 5.79961 4.93044 5.85447C4.45429 6.43893 4.0767 7.10689 3.82306 7.83301C3.79622 7.90983 3.85398 7.9891 3.93536 7.9891H7.52952C7.60022 7.9891 7.66694 7.95756 7.71445 7.90519C8.28491 7.2763 9.10861 6.88136 10.0246 6.88136C10.9405 6.88136 11.7643 7.2763 12.3347 7.90519Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.1164 10.9586C13.0553 10.9586 13.0118 10.899 13.0284 10.8401C13.1033 10.5722 13.1433 10.2898 13.1433 9.9981C13.1433 9.58758 13.064 9.19556 12.9199 8.83657C12.8954 8.77581 12.9392 8.70801 13.0046 8.70801H16.392C16.4349 8.70801 16.472 8.73831 16.4799 8.78052C16.5538 9.17511 16.5925 9.58216 16.5925 9.9982C16.5925 10.2978 16.5724 10.5926 16.5337 10.8815C16.5277 10.9258 16.4897 10.9586 16.4451 10.9586H13.1164ZM7.02223 10.8401C7.03868 10.899 6.99532 10.9586 6.93421 10.9586H3.60551C3.56084 10.9586 3.52285 10.9258 3.5169 10.8815C3.47807 10.5926 3.45801 10.2978 3.45801 9.9982C3.45801 9.58216 3.4967 9.17511 3.57069 8.78052C3.57859 8.73831 3.61563 8.70801 3.65856 8.70801H7.04593C7.11141 8.70801 7.15516 8.77581 7.13076 8.83657C6.98657 9.19556 6.90722 9.58758 6.90722 9.9981C6.90722 10.2898 6.94728 10.5722 7.02223 10.8401Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_6403_64483\"\n x1=\"10.0245\"\n y1=\"0.0488561\"\n x2=\"10.0245\"\n y2=\"19.9493\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#C750FF\" />\n <stop offset=\"1\" stopColor=\"#5800E8\" />\n </linearGradient>\n <clipPath id=\"clip0_6403_64483\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import { useMemo } from \"react\";\nimport {\n TWType,\n useAccount,\n useChains,\n useConfig,\n useCurEpochEstimate,\n useEpochInfo,\n useLocalStorage,\n useMutation,\n useReferralInfo,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum, ChainNamespace } from \"@orderly.network/types\";\nimport { modal, toast, useModal } from \"@orderly.network/ui\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { ReferralProps, TradingRewardsProps } from \"../../../types/types\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const useAccountSheetScript = (\n props: ReferralProps & TradingRewardsProps\n) => {\n const { t } = useTranslation();\n const [linkDeviceStorage] = useLocalStorage(\"orderly_link_device\", {});\n const { account, state } = useAccount();\n const accountId = account.accountId;\n const address = account.address;\n const { hide } = useModal();\n\n const config = useConfig();\n\n const { connectedChain, disconnect, namespace } = useWalletConnector();\n\n const chainId =\n account.chainId || connectedChain?.id || linkDeviceStorage?.chainId;\n\n const showGetTestUSDC = useMemo(() => {\n if (chainId) {\n return (\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected) &&\n // @ts-ignore\n isTestnet(parseInt(chainId))\n );\n }\n\n return false;\n }, [state.status, chainId]);\n\n const chainName = useGetChains(chainId);\n\n const operatorUrl = config.get<string>(\"operatorUrl\");\n\n const onCopyAddress = () => {\n navigator.clipboard.writeText(address ?? \"\");\n toast.success(t(\"common.copy.copied\"));\n };\n\n const {\n affiliateCommission30D,\n traderCommission30D,\n isAffiliate,\n isTrader,\n onClickReferral,\n } = useReferral(props.onClickReferral);\n\n const { curEpochId, estRewards, onClickTradingRewards } = useTradingRewards(\n props.onClickTradingRewards\n );\n\n const onDisconnect = async () => {\n // The cache must be cleared first, otherwise it will be possible entered link device mode\n localStorage.removeItem(\"orderly_link_device\");\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n hide();\n };\n\n const [getTestUSDC, { isMutating: gettingTestUSDC }] = useMutation(\n `${operatorUrl}/v1/faucet/usdc`\n );\n\n const onGetTestUSDC = () => {\n if (\n state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n // return modal.show(WalletConnectSheet, {\n // status: state.status,\n // });\n return;\n }\n\n const message = t(\"trading.faucet.getTestUSDC.success\", {\n quantity: namespace === ChainNamespace.solana ? \"100\" : \"1,000\",\n });\n\n return getTestUSDC({\n chain_id: chainId?.toString(),\n user_address: state.address,\n broker_id: config.get(\"brokerId\"),\n }).then(\n (res: any) => {\n if (res.success) {\n return modal.alert({\n title: t(\"trading.faucet.getTestUSDC\"),\n message,\n onOk: () => {\n return Promise.resolve(true);\n },\n });\n }\n res.message && toast.error(res.message);\n // return Promise.reject(res);\n },\n (error: Error) => {\n toast.error(error.message);\n }\n );\n };\n return {\n accountId,\n address,\n chainId,\n chainName,\n onCopyAddress,\n\n affiliateCommission30D,\n onClickReferral,\n isAffiliate,\n isTrader,\n traderCommission30D,\n\n curEpochId,\n onClickTradingRewards,\n estRewards,\n\n onDisconnect,\n showGetTestUSDC,\n onGetTestUSDC,\n gettingTestUSDC,\n };\n};\n\nconst useReferral = (_onClickReferral?: () => void) => {\n const { data, isLoading, isAffiliate, isTrader } = useReferralInfo();\n const affiliateCommission30D = useMemo(() => {\n if (isAffiliate) {\n return data?.referrer_info[\"30d_referrer_rebate\"];\n }\n return undefined;\n }, [data]);\n const traderCommission30D = useMemo(() => {\n if (isTrader) {\n return data?.referee_info[\"30d_referee_rebate\"];\n }\n return undefined;\n }, [data]);\n\n const onClickReferral = () => {\n _onClickReferral?.();\n };\n\n return {\n onClickReferral,\n affiliateCommission30D,\n traderCommission30D,\n isAffiliate,\n isTrader,\n\n // WARNING: test data\n // affiliateCommission30D: 1234.43,\n // traderCommission30D:44343.33,\n // isAffiliate: true,\n // isTrader: true,\n };\n};\n\nconst useTradingRewards = (_onClick?: () => void) => {\n const [curEpochEstimate] = useCurEpochEstimate(TWType.normal);\n const [list, curEpoch] = useEpochInfo(TWType.normal);\n const curEpochId = useMemo(() => {\n return curEpoch.curEpochInfo?.epoch_id ?? \"--\";\n }, [curEpoch]);\n\n const estRewards = useMemo(() => {\n if (typeof curEpochEstimate?.est_r_wallet === \"undefined\") {\n return \"--\";\n }\n return curEpochEstimate?.est_r_wallet;\n }, [curEpochEstimate]);\n\n const onClickTradingRewards = () => {\n _onClick?.();\n };\n\n return {\n curEpochId,\n estRewards,\n onClickTradingRewards,\n };\n};\n\nfunction useGetChains(chainId: number) {\n const [mainChains, { findByChainId }] = useChains(\"mainnet\", {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const chainName = useMemo(() => {\n // @ts-ignore\n const chain = findByChainId(parseInt(chainId), \"network_infos\");\n\n if (!chain) {\n return \"Unknown\";\n }\n // // @ts-ignore\n // if (isTestnet(chain.chain_id)) {\n // return \"Testnet\";\n // }\n // @ts-ignore\n return chain.name;\n }, [chainId, findByChainId]);\n\n return chainName;\n}\n\nexport type AccountSheetState = ReturnType<typeof useAccountSheetScript>;\n","import { ReferralProps, TradingRewardsProps } from \"../../../types/types\";\nimport { useAccountSheetScript } from \"./accountSheet.script\";\nimport { AccountSheet } from \"./accountSheet.ui\";\n\nexport const AccountSheetWidget = (\n props: ReferralProps & TradingRewardsProps\n) => {\n const state = useAccountSheetScript(props);\n return <AccountSheet {...state} />;\n};\n","import { FC } from \"react\";\nimport { Button, formatAddress } from \"@orderly.network/ui\";\nimport { AccountState } from \"./account.script\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\n\nexport const Account: FC<AccountState> = (props) => {\n return (\n <AuthGuard\n buttonProps={{\n size: \"sm\",\n }}\n >\n <Button\n variant=\"gradient\"\n size={\"sm\"}\n className=\"oui-max-w-[83px]\"\n onClick={(e) => {\n props.onShowAccountSheet();\n }}\n >\n {formatAddress(props.address!, [4, 4])}\n </Button>\n </AuthGuard>\n );\n};\n","import { FC } from \"react\";\nimport { BalanceState } from \"./balance.script\";\n\nexport const Balance: FC<BalanceState> = () => {\n return null;\n};\n","export const useBalanceScript = () => {\n return {};\n};\n\nexport type BalanceState = ReturnType<typeof useBalanceScript>;\n","import { useBalanceScript } from \"./balance.script\";\nimport { Balance } from \"./balance.ui\";\n\nexport const BalanceWidget = () => {\n const state = useBalanceScript();\n return <Balance {...state} />;\n};\n","import { FC } from \"react\";\nimport { Box, ChainIcon, modal, toast } from \"@orderly.network/ui\";\nimport { ChainState } from \"./chain.script\";\nimport { ChainSelectorSheetId } from \"@orderly.network/ui-chain-selector\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Chain: FC<ChainState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <button\n onClick={(e) => {\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorSheetId, {\n // networkId: props.networkId,\n bridgeLessOnly: false,\n isWrongNetwork: props.wrongNetwork,\n })\n .then(\n (r: any) => {\n if (r?.chainId) {\n props.setCurrentChainId(r?.chainId);\n }\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error)\n );\n }}\n >\n <Box className=\"oui-relative oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px] oui-bg-base-5 oui-px-2 oui-h-7 oui-flex oui-items-center\">\n <ChainIcon chainId={props.currentChainId!} size=\"2xs\" />\n <div className=\"oui-absolute oui-right-0 oui-bottom-0\">\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 9 9\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M9 6V0L0 9h6a3 3 0 0 0 3-3\" fill=\"url(#a)\" />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"9\"\n y1=\"4.5\"\n x2=\"0\"\n y2=\"4.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop\n offset=\"1\"\n stopColor=\"rgb(var(--oui-gradient-brand-start))\"\n />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </Box>\n </button>\n );\n};\n","import { useConfig } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const useChainScript = () => {\n const config = useConfig();\n const { wrongNetwork, currentChainId, setCurrentChainId } = useAppContext();\n\n const networkId = config.get(\"networkId\");\n\n return {\n currentChainId,\n setCurrentChainId,\n networkId,\n wrongNetwork,\n };\n};\n\nexport type ChainState = ReturnType<typeof useChainScript>;\n","import { useChainScript } from \"./chain.script\";\nimport { Chain } from \"./chain.ui\";\n\nexport const ChainWidget = () => {\n const state = useChainScript();\n return (<Chain {...state} />);\n};\n","import { useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const useBottomNavBarScript = () => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { account, state } = useAccount();\n\n /** link device, acally wallet not connect */\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n };\n\n return {\n wrongNetwork,\n disabledConnect,\n status: state.status,\n onDisconnect,\n };\n};\n\nexport type BottomNavBarState = ReturnType<typeof useBottomNavBarScript>;\n","import { useBottomNavBarScript } from \"./bottomNavBar.script\";\nimport { BottomNavBar } from \"./bottomNavBar.ui\";\n\nexport const BottomNavBarWidget = () => {\n const state = useBottomNavBarScript();\n return (<BottomNavBar {...state} />);\n};\n","import { FC, useCallback, useId } from \"react\";\nimport React from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport {\n ArrowDownShortIcon,\n ArrowLeftRightIcon,\n ArrowUpShortIcon,\n Button,\n cn,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Grid,\n Input,\n inputFormatter,\n InputFormatter,\n modal,\n PlusIcon,\n ReduceIcon,\n RefreshIcon,\n Statistic,\n Text,\n} from \"@orderly.network/ui\";\nimport { LeverageProps, LeverageSlider } from \"@orderly.network/ui-leverage\";\nimport { USDCIcon } from \"../accountSheet/icons\";\nimport {\n getMarginRatioColor,\n PortfolioSheetState,\n} from \"./portfolioSheet.script\";\nimport { RiskIndicator } from \"./riskIndicator\";\n\nexport const PortfolioSheet: FC<PortfolioSheetState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={4} width={\"100%\"}>\n <Asset {...props} />\n <Divider className=\"oui-w-full\" />\n <MarginRatio {...props} />\n {/* <Leverage {...props} /> */}\n {/* <Divider className=\"oui-w-full\" /> */}\n {/* <AvailableBalance {...props} /> */}\n <Buttons {...props} />\n </Flex>\n );\n};\n\nconst Asset: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n const onUnsettleClick = useCallback(() => {\n return modal.confirm({\n title: t(\"settle.settlePnl\"),\n // maxWidth: \"xs\",\n content: (\n <Text intensity={54} size=\"xs\">\n {/* @ts-ignore */}\n <Trans i18nKey=\"settle.settlePnl.description\" />\n </Text>\n ),\n onCancel: () => {\n return Promise.reject();\n },\n onOk: () => {\n if (typeof props.onSettlePnL !== \"function\") {\n return Promise.resolve();\n }\n return props.onSettlePnL().catch((e) => {});\n },\n });\n }, [t]);\n\n const clsName =\n props.totalUnrealizedROI > 0\n ? \"oui-text-success-darken\"\n : \"oui-text-danger-darken\";\n\n return (\n <Flex direction={\"column\"} gap={3} width={\"100%\"}>\n <Flex direction={\"column\"} itemAlign={\"start\"} width={\"100%\"}>\n <Text.formatted\n size=\"2xs\"\n intensity={36}\n suffix={\n props.hideAssets ? (\n <EyeIcon\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n ) : (\n <EyeCloseIcon\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n )\n }\n onClick={() => {\n props.toggleHideAssets();\n }}\n className=\"oui-cursor-pointer\"\n >\n {`${t(\"common.totalValue\")} (USDC)`}\n </Text.formatted>\n <Text.numeral\n size=\"base\"\n // coloring\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.totalValue ?? \"--\"}\n </Text.numeral>\n </Flex>\n <Grid cols={2} rows={1} width={\"100%\"}>\n <Statistic\n label={`${t(\"common.unrealizedPnl\")} (USDC)`}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex gap={1}>\n <Text.numeral\n size=\"xs\"\n coloring\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.aggregated.unrealPnL}\n </Text.numeral>\n {!props.hideAssets && (\n <Text.numeral\n size=\"xs\"\n dp={2}\n padding={false}\n rule=\"percentages\"\n prefix={\"(\"}\n suffix={\")\"}\n className={clsName}\n >\n {props.totalUnrealizedROI}\n </Text.numeral>\n )}\n </Flex>\n </Statistic>\n <Statistic\n label={`${t(\"trading.asset.unsettledPnl\")} (USDC)`}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text.numeral\n size=\"xs\"\n coloring\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.aggregated.unsettledPnL}\n </Text.numeral>\n <button\n className=\"oui-flex oui-gap-1 oui-items-center\"\n onClick={onUnsettleClick}\n >\n <RefreshIcon\n opacity={1}\n size={12}\n className=\"oui-text-primary-light\"\n />\n <Text size=\"2xs\" color=\"primary\">\n {t(\"settle.settlePnl\")}\n </Text>\n </button>\n </Flex>\n </Statistic>\n </Grid>\n </Flex>\n );\n};\nconst MarginRatio: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n const { high, mid, low } = getMarginRatioColor(\n props.marginRatioVal,\n props.mmr,\n );\n\n return (\n <Grid cols={2} rows={1} width={\"100%\"}>\n <Statistic\n label={t(\"trading.asset.marginRatio\")}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex gap={2}>\n <Text.numeral\n size=\"xs\"\n rule=\"percentages\"\n color=\"primary\"\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.marginRatioVal}\n </Text.numeral>\n {!props.hideAssets && (\n <RiskIndicator\n className={\n low\n ? \"oui-rotate-0\"\n : mid\n ? \"oui-rotate-90\"\n : high\n ? \"oui-rotate-180\"\n : \"\"\n }\n />\n )}\n </Flex>\n </Statistic>\n <Statistic\n label={`${t(\"trading.asset.free&TotalCollateral\")} (USDC)`}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex justify={\"start\"} width={\"100%\"} gap={1}>\n <Text.numeral\n size=\"xs\"\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.freeCollateral}\n </Text.numeral>\n <Text size=\"xs\">/</Text>\n <Text.numeral\n size=\"xs\"\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.totalCollateral}\n </Text.numeral>\n </Flex>\n </Statistic>\n </Grid>\n );\n};\n\nconst IconButton: React.FC<{\n Icon: React.ComponentType<any>;\n onClick: React.MouseEventHandler<SVGSVGElement>;\n disabled: boolean;\n}> = (props) => {\n const { Icon, onClick, disabled } = props;\n return (\n <Icon\n onClick={disabled ? undefined : onClick}\n className={cn(\n \"oui-text-white oui-m-2 oui-transition-all\",\n disabled\n ? \"oui-cursor-not-allowed oui-opacity-20\"\n : \"oui-cursor-pointer oui-opacity-100\",\n )}\n />\n );\n};\n\nconst LeverageInput: React.FC<PortfolioSheetState> = (props) => {\n const formatters = React.useMemo<InputFormatter[]>(\n () => [\n inputFormatter.numberFormatter,\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ],\n [],\n );\n const id = useId();\n return (\n <label\n htmlFor={id}\n className={cn(\n \"oui-w-full\",\n \"oui-rounded\",\n \"oui-bg-base-6\",\n \"oui-flex\",\n \"oui-items-center\",\n \"oui-justify-between\",\n \"oui-outline\",\n \"oui-outline-offset-0\",\n \"oui-outline-1\",\n \"oui-outline-transparent\",\n \"focus-within:oui-outline-primary-light\",\n \"oui-input-root\",\n )}\n >\n <IconButton\n Icon={ReduceIcon}\n onClick={props.onLeverageReduce}\n disabled={props.isReduceDisabled}\n />\n <Flex itemAlign=\"center\" justify=\"center\">\n <Input\n // {...props}\n value={props.value}\n id={id}\n autoComplete=\"off\"\n classNames={{\n input: cn(\"oui-text-center\"),\n root: cn(\n \"oui-text-center\",\n \"oui-w-6\",\n \"oui-px-0\",\n \"oui-outline\",\n \"oui-outline-offset-0\",\n \"oui-outline-1\",\n \"oui-outline-transparent\",\n \"focus-within:oui-outline-primary-none\",\n ),\n }}\n formatters={formatters}\n onChange={props.onInputChange}\n />\n <div className=\"oui-select-none\">x</div>\n </Flex>\n <IconButton\n Icon={PlusIcon}\n onClick={props.onLeverageIncrease}\n disabled={props.isIncreaseDisabled}\n />\n </label>\n );\n};\n\nexport const LeverageSelector: React.FC<PortfolioSheetState> = (props) => {\n const { value, onLeverageChange, onValueCommit } = props;\n return (\n <Flex itemAlign=\"center\" justify=\"between\" width={\"100%\"} mt={2}>\n {[1, 5, 10, 20, 50].map((option) => (\n <Flex\n key={option}\n itemAlign=\"center\"\n justify=\"center\"\n className={cn(\n `oui-transition-all oui-cursor-pointer oui-box-border oui-bg-clip-padding oui-px-3 oui-py-2.5 oui-rounded-md oui-border oui-border-solid`,\n value === option\n ? \"oui-border-primary oui-bg-base-6\"\n : \"oui-border-line-12\",\n )}\n onClick={() => {\n onLeverageChange(option);\n onValueCommit(option);\n }}\n >\n <Flex\n itemAlign=\"center\"\n justify=\"center\"\n className={cn(`oui-h-3 oui-w-9 oui-select-none`)}\n >\n {option}x\n </Flex>\n </Flex>\n ))}\n </Flex>\n );\n};\n\nconst Buttons: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n if (props.isMainAccount) {\n return (\n <Grid\n cols={props.hasSubAccount ? 3 : 2}\n rows={1}\n gap={3}\n className=\"oui-grid-row-[1fr,1fr]\"\n width={\"100%\"}\n pt={2}\n pb={4}\n >\n <Button\n icon={<ArrowDownShortIcon color=\"white\" opacity={0.8} />}\n size=\"md\"\n fullWidth\n onClick={props.onDeposit}\n >\n {t(\"common.deposit\")}\n </Button>\n {props.hasSubAccount && (\n <Button\n icon={<ArrowLeftRightIcon color=\"white\" opacity={0.8} />}\n color=\"gray\"\n size=\"md\"\n onClick={props.onTransfer}\n data-testid=\"oui-testid-assetView-transfer-button\"\n >\n <Text>{t(\"common.transfer\")}</Text>\n </Button>\n )}\n <Button\n icon={<ArrowUpShortIcon color=\"white\" opacity={0.8} />}\n size=\"md\"\n fullWidth\n className=\"oui-bg-base-2 hover:oui-bg-base-2/50\"\n onClick={props.onWithdraw}\n >\n {t(\"common.withdraw\")}\n </Button>\n </Grid>\n );\n }\n\n return (\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={props.onTransfer}\n data-testid=\"oui-testid-assetView-transfer-button\"\n >\n <Text>{t(\"common.transfer\")}</Text>\n </Button>\n );\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport {\n useAccount,\n useCollateral,\n useDebouncedCallback,\n useEventEmitter,\n useLeverage,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { modal, SliderMarks, toast } from \"@orderly.network/ui\";\nimport {\n DepositAndWithdrawWithSheetId,\n TransferSheetId,\n} from \"@orderly.network/ui-transfer\";\nimport { useTradingLocalStorage } from \"../../../hooks\";\n\nexport const usePortfolioSheetScript = () => {\n const { state, account, isMainAccount } = useAccount();\n const assets = useAssets();\n const marginRatio = useMarginRatioAndLeverage();\n const ee = useEventEmitter();\n const { t } = useTranslation();\n const subAccounts = state.subAccounts ?? [];\n\n const [showSliderTip, setShowSliderTip] = useState(false);\n\n const onSettlePnL = useCallback(async () => {\n return account\n .settle()\n .catch((e) => {\n if (e.code == -1104) {\n toast.error(t(\"settle.settlement.error\"));\n return Promise.reject(e);\n }\n if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n return Promise.reject(e);\n }\n\n if (e?.code === \"ACTION_REJECTED\") {\n toast.error(t(\"connector.userRejected\"));\n return Promise.reject(e);\n }\n })\n .then((res) => {\n toast.success(t(\"settle.settlement.requested\"));\n return Promise.resolve(res);\n });\n }, [account, t]);\n\n const onDeposit = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"deposit\",\n });\n }, []);\n\n const onWithdraw = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"withdraw\",\n });\n }, []);\n\n const onTransfer = useCallback(() => {\n modal.show(TransferSheetId);\n }, []);\n\n return {\n ...assets,\n ...marginRatio,\n onSettlePnL,\n onDeposit,\n onWithdraw,\n showSliderTip,\n setShowSliderTip,\n isMainAccount,\n onTransfer,\n hasSubAccount: subAccounts?.length > 0,\n };\n};\n\nconst useAssets = () => {\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n const toggleHideAssets = () => {\n setHideAssets(!hideAssets);\n };\n const { totalCollateral, freeCollateral, totalValue, availableBalance } =\n useCollateral({\n dp: 2,\n });\n return {\n hideAssets,\n toggleHideAssets,\n totalCollateral,\n freeCollateral,\n totalValue,\n availableBalance,\n };\n};\n\nconst useMarginRatioAndLeverage = () => {\n const { t } = useTranslation();\n const [{ aggregated, totalUnrealizedROI }, positionsInfo] =\n usePositionStream();\n const { marginRatio, currentLeverage, mmr } = useMarginRatio();\n\n const marginRatioVal = useMemo(() => {\n return Math.min(\n 10,\n aggregated.notional === 0\n ? positionsInfo[\"margin_ratio\"](10)!\n : marginRatio,\n );\n }, [marginRatio, aggregated]);\n\n const { update, curLeverage, maxLeverage, leverageLevers } = useLeverage();\n\n const marks = useMemo<SliderMarks>(() => {\n return leverageLevers?.map((e) => ({\n label: `${e}x`,\n value: e,\n }));\n }, [leverageLevers]);\n\n const [leverage, setLeverage] = useState<number>(curLeverage ?? 0);\n\n const step = 100 / ((marks?.length || 0) - 1);\n\n // const leverageValue = useMemo(() => {\n // const index = leverageLevers.findIndex((item: any) => item === leverage);\n\n // return index * step;\n // }, [leverageLevers, leverage, step]);\n\n const onLeverageChange = (leverage: number) => {\n // maxLeverage / 100 * leverage;\n setLeverage(leverage);\n // updateLeverage(leverage);\n };\n\n const onSave = async (leverage: number) => {\n try {\n update({ leverage }).then(\n () => {\n toast.success(t(\"leverage.updated\"));\n },\n (err: Error) => {\n toast.error(err.message);\n },\n );\n } catch {\n //\n }\n };\n\n const onValueCommit = useCallback((value: number | number[]) => {\n onSave(Array.isArray(value) ? value[0] : value);\n }, []);\n\n const debouncedCommit = useDebouncedCallback(onValueCommit, 500);\n\n const onInputChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n (e) => {\n const parsed = Number.parseInt(e.target.value, 10);\n const raw = Number.isNaN(parsed) ? 0 : parsed;\n const clamped = Math.min(Math.max(raw, 1), maxLeverage);\n setLeverage(clamped);\n debouncedCommit(clamped);\n },\n [debouncedCommit, maxLeverage],\n );\n\n const onLeverageIncrease: React.MouseEventHandler<SVGSVGElement> = () => {\n setLeverage((prev) => {\n onSave(prev + 1);\n return prev + 1;\n });\n };\n\n const onLeverageReduce: React.MouseEventHandler<SVGSVGElement> = () => {\n setLeverage((prev) => {\n onSave(prev - 1);\n return prev - 1;\n });\n };\n\n return {\n aggregated,\n totalUnrealizedROI,\n positionsInfo,\n marginRatio,\n marginRatioVal,\n mmr,\n currentLeverage,\n step,\n marks,\n onLeverageChange,\n onLeverageIncrease,\n onLeverageReduce,\n onInputChange,\n isReduceDisabled: leverage <= 1,\n isIncreaseDisabled: leverage >= maxLeverage,\n onValueCommit,\n value: leverage,\n maxLeverage,\n onSaveLeverage: onSave,\n };\n};\n\nexport function getMarginRatioColor(marginRatio: number, mmr: number | null) {\n if (mmr === null) {\n return { isRed: false, isYellow: false, isGreen: true };\n }\n const imr = mmr * 2;\n\n const high = marginRatio <= imr;\n const mid = marginRatio > imr && marginRatio < 1;\n const low = marginRatio >= 1;\n return { high, mid, low };\n}\n\nexport type PortfolioSheetState = ReturnType<typeof usePortfolioSheetScript>;\n","import { FC } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\n\ninterface RiskIndicatorProps {\n size?: number;\n className?: string;\n}\n\nexport const RiskIndicator: FC<RiskIndicatorProps> = (props) => {\n const { size = 20, className } = props;\n\n return (\n <div\n className=\"oui-flex oui-justify-center oui-items-end\"\n style={{\n background: \"url(/images/riskLevelBg.png)\",\n backgroundSize: \"contain\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center bottom\",\n width: `${size}px`,\n height: `14px`,\n }}\n >\n <div\n className={cn(\n \"oui-relative oui-w-[2px] oui-h-[2px] oui-rounded-full oui-bg-white after:oui-block after:oui-content-[''] after:oui-absolute after:oui-right-0 after:oui-w-[10px] after:oui-h-[2px] after:oui-bg-white/50\",\n className\n // {\n // \"oui-rotate-0\": value > 1,\n // \"oui-rotate-90\": value >= 0.05 && value <= 1,\n // \"oui-rotate-180\": value < 0.05,\n // }\n )}\n ></div>\n </div>\n );\n};\n","import { usePortfolioSheetScript } from \"./portfolioSheet.script\";\nimport { PortfolioSheet } from \"./portfolioSheet.ui\";\n\nexport const PortfolioSheetWidget = () => {\n const state = usePortfolioSheetScript();\n return <PortfolioSheet {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n MarketsSheetWidget,\n SymbolInfoBarWidget,\n} from \"@orderly.network/markets\";\nimport {\n Box,\n SimpleSheet,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { DataListWidget } from \"../../components/mobile/dataList\";\nimport { OrderBookAndEntryWidget } from \"../../components/mobile/orderBookAndEntry\";\nimport { TopTabWidget } from \"../../components/mobile/topTab\";\nimport { TradingState } from \"./trading.script\";\n\nconst MaybeEqual: React.FC = () => {\n return (\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.456 3.48a3.5 3.5 0 0 0 .431-.567 9 9 0 0 0 .361-.654l-.648-.66-.107.185q-.071.12-.142.244a3 3 0 0 1-.27.396 1.4 1.4 0 0 1-.318.29.67.67 0 0 1-.38.114q-.307 0-.666-.194t-.742-.42q-.383-.227-.777-.42a1.7 1.7 0 0 0-.771-.194q-.401.001-.72.154a2.1 2.1 0 0 0-.57.404 2.6 2.6 0 0 0-.43.574 5 5 0 0 0-.307.646l.649.66q.165-.437.464-.833.298-.395.742-.396.347 0 .7.194.354.193.721.42.37.227.763.42.396.195.826.195.374.001.665-.155.29-.151.526-.404m.352 2.941a3.5 3.5 0 0 0 .431-.566q.196-.315.361-.654l-.648-.66-.107.184-.142.244a3 3 0 0 1-.27.396 1.4 1.4 0 0 1-.318.29.67.67 0 0 1-.38.115q-.307 0-.666-.195-.36-.193-.742-.42-.383-.226-.778-.42a1.7 1.7 0 0 0-.77-.194q-.401.001-.72.154a2.1 2.1 0 0 0-.57.405 2.6 2.6 0 0 0-.43.574 5 5 0 0 0-.307.646l.649.66q.165-.437.464-.833.297-.395.742-.396.347 0 .7.194.354.193.721.42.369.226.763.42.396.194.826.194.374.001.665-.154.29-.152.526-.404\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n );\n};\n\nexport const MobileLayout: FC<TradingState> = (props) => {\n const { t } = useTranslation();\n const topBar = (\n <Box intensity={900} px={3} height={54}>\n <SymbolInfoBarWidget\n symbol={props.symbol}\n onSymbol={() => props.onOpenMarketsSheetChange(true)}\n trailing={\n <Flex\n direction={\"column\"}\n itemAlign={\"end\"}\n className=\"oui-cursor-pointer oui-text-[11px]\"\n onClick={props.onShowPortfolioSheet}\n >\n <Flex>\n <Text intensity={54}>{t(\"common.totalValue\")}</Text>\n <button\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n props.setHideAssets(!props.hideAssets);\n }}\n className=\"oui-px-1\"\n >\n {props.hideAssets ? (\n <EyeIcon\n color=\"primary\"\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n ) : (\n <EyeCloseIcon\n color=\"primary\"\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n )}\n </button>\n <MaybeEqual />\n </Flex>\n <Text.numeral\n suffix={<Text intensity={20}>&nbsp;USDC</Text>}\n dp={2}\n visible={!props.hideAssets}\n >\n {props.canTrade ? (props.total ?? \"--\") : \"--\"}\n </Text.numeral>\n </Flex>\n }\n />\n <SimpleSheet\n open={props.openMarketsSheet}\n onOpenChange={props.onOpenMarketsSheetChange}\n classNames={{\n body: \"oui-h-full oui-pb-0\",\n content: \"oui-w-[280px] !oui-p-0\",\n }}\n contentProps={{ side: \"left\", closeable: false }}\n >\n <MarketsSheetWidget\n symbol={props.symbol}\n onSymbolChange={(symbol) => {\n props.onOpenMarketsSheetChange(false);\n props.onSymbolChange?.(symbol);\n }}\n />\n </SimpleSheet>\n </Box>\n );\n\n return (\n <div className=\"oui-relative oui-grid oui-gap-1 oui-bg-base-10\">\n <main className=\"oui-hide-scrollbar oui-space-y-1 oui-overflow-y-auto\">\n {topBar}\n <TopTabWidget className=\"oui-mx-1 oui-rounded-xl oui-bg-base-9\" />\n <OrderBookAndEntryWidget />\n <DataListWidget\n symbol={props.symbol}\n className=\"oui-mx-1 oui-rounded-xl\"\n sharePnLConfig={props.sharePnLConfig}\n />\n </main>\n </div>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport {\n Button,\n Checkbox,\n Divider,\n Flex,\n TabPanel,\n Tabs,\n Text,\n} from \"@orderly.network/ui\";\nimport { MobileOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport {\n MobileLiquidationWidget,\n MobilePositionHistoryWidget,\n MobilePositionsWidget,\n} from \"@orderly.network/ui-positions\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\nimport {\n DataListState,\n DataListTabSubType,\n DataListTabType,\n} from \"./dataList.script\";\n\nexport const DataList: FC<\n DataListState & {\n className?: string;\n }\n> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Tabs\n value={props.tab}\n onValueChange={(e: any) => props.setTab(e)}\n size=\"lg\"\n className={props.className}\n classNames={{\n tabsList:\n \"oui-bg-base-9 oui-rounded-t-xl oui-p-2 oui-overflow-x-scroll oui-hide-scrollbar\",\n }}\n >\n <TabPanel\n title={`${t(\"common.positions\")} ${\n (props.positionCount ?? 0) > 0 ? `(${props.positionCount})` : \"\"\n }`}\n value={DataListTabType.position}\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n title={`${t(\"orders.status.pending\")} ${\n (props.pendingOrderCount ?? 0) > 0\n ? `(${props.pendingOrderCount})`\n : \"\"\n }`}\n value={DataListTabType.pending}\n >\n <OrdersView\n type={TabType.pending}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...props}\n />\n </TabPanel>\n <TabPanel\n title={`${t(\"common.tpsl\")} ${\n (props.tpSlOrderCount ?? 0) > 0 ? `(${props.tpSlOrderCount})` : \"\"\n }`}\n value={DataListTabType.tp_sl}\n >\n <OrdersView\n type={TabType.tp_sl}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...props}\n />\n </TabPanel>\n <TabPanel title={t(\"trading.history\")} value={DataListTabType.history}>\n <HistoryTab {...props} />\n </TabPanel>\n <TabPanel\n title={t(\"positions.liquidation\")}\n value={DataListTabType.liquidation}\n >\n <MobileLiquidationWidget\n enableLoadMore={true}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n classNames={{ cell: \"oui-p-2 oui-bg-base-9 oui-rounded-xl\" }}\n />\n </TabPanel>\n </Tabs>\n );\n};\n\nconst PositionsView: FC<DataListState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={2}>\n <PositionHeaderWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n unPnlPriceBasis={props.unPnlPriceBasis}\n />\n <MobilePositionsWidget\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n sharePnLConfig={props.sharePnLConfig}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n />\n </Flex>\n );\n};\n\nconst OrdersView: FC<\n DataListState & {\n type: TabType;\n ordersStatus?: OrderStatus;\n }\n> = (props) => {\n return (\n <Flex direction={\"column\"} pb={2} width={\"100%\"}>\n <Divider className=\"oui-w-full\" />\n {props.type !== TabType.orderHistory && (\n <SymbolControlHeader {...props} />\n )}\n <MobileOrderListWidget\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n type={props.type}\n ordersStatus={props.ordersStatus}\n classNames={{\n root: \"oui-w-full oui-hide-scrollbar oui-overflow-y-hidden\",\n content: \"!oui-space-y-1\",\n cell: \"oui-py-2 oui-bg-base-9 oui-p-2 oui-rounded-xl\",\n }}\n sharePnLConfig={props.sharePnLConfig}\n showFilter={props.type === TabType.orderHistory}\n filterConfig={{\n range: {\n from: undefined,\n to: undefined,\n },\n }}\n />\n </Flex>\n );\n};\n\nconst SymbolControlHeader: FC<\n DataListState & {\n type: TabType;\n ordersStatus?: OrderStatus;\n }\n> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n px={2}\n py={2}\n width={\"100%\"}\n justify={\"between\"}\n gap={2}\n className=\"oui-rounded-b-xl oui-bg-base-9\"\n >\n <Flex className=\"oui-cursor-pointer oui-gap-[2px]\">\n <Checkbox\n color=\"white\"\n checked={!props.showAllSymbol}\n onCheckedChange={(checked: boolean) => {\n props.setShowAllSymbol(!checked);\n }}\n />\n <Text\n size=\"2xs\"\n intensity={54}\n onClick={() => {\n props.setShowAllSymbol(!props.showAllSymbol);\n }}\n >\n {t(\"trading.hideOtherSymbols\")}\n </Text>\n </Flex>\n <Button\n variant=\"outlined\"\n size=\"xs\"\n color=\"secondary\"\n onClick={(e) => {\n props.onCloseAll(props.type);\n }}\n >\n {t(\"trading.orders.closeAll\")}\n </Button>\n </Flex>\n );\n};\n\nconst HistoryTab: FC<DataListState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <div className=\"oui-min-h-[300px]\">\n <Tabs\n value={props.subTab}\n onValueChange={(e: any) => props.setSubTab(e)}\n size=\"md\"\n classNames={{\n tabsList: \"oui-bg-base-9 oui-rounded-t-xl oui-p-2\",\n }}\n >\n <TabPanel\n title={t(\"positions.positionHistory\")}\n value={DataListTabSubType.positionHistory}\n >\n <MobilePositionHistoryWidget\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n classNames={{ cell: \"oui-p-2 oui-bg-base-9 oui-rounded-xl\" }}\n sharePnLConfig={props.sharePnLConfig}\n />\n </TabPanel>\n <TabPanel\n title={t(\"orders.orderHistory\")}\n value={DataListTabSubType.orderHistory}\n >\n <OrdersView type={TabType.orderHistory} {...props} />\n </TabPanel>\n </Tabs>\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { useOrderStream } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { modal, Text } from \"@orderly.network/ui\";\nimport { TabType } from \"@orderly.network/ui-orders\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\nimport {\n usePendingOrderCount,\n usePositionsCount,\n useTradingLocalStorage,\n} from \"../../../hooks\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport enum DataListTabType {\n position = \"Position\",\n pending = \"Pending\",\n tp_sl = \"TP/SL\",\n history = \"History\",\n liquidation = \"Liquidation\",\n}\n\nexport enum DataListTabSubType {\n positionHistory = \"Position history\",\n orderHistory = \"Order history\",\n}\n\nexport const useDataListScript = (props: {\n symbol: string;\n className?: string;\n sharePnLConfig?: SharePnLConfig;\n}) => {\n const { symbol, sharePnLConfig } = props;\n const [tab, setTab] = useState<DataListTabType>(DataListTabType.position);\n const [subTab, setSubTab] = useState<DataListTabSubType>(\n DataListTabSubType.positionHistory,\n );\n const { t } = useTranslation();\n\n const { onSymbolChange } = useTradingPageContext();\n const localStorage = useTradingLocalStorage();\n\n const [_, { cancelAllOrders, cancelAllTPSLOrders }] = useOrderStream({});\n const { positionCount } = usePositionsCount(symbol);\n const { pendingOrderCount, tpSlOrderCount } = usePendingOrderCount(symbol);\n\n const onCloseAll = (type: TabType) => {\n const title =\n type === TabType.pending\n ? t(\"orders.pending.cancelAll\")\n : type === TabType.tp_sl\n ? t(\"orders.tpsl.cancelAll\")\n : \"\";\n const content =\n type === TabType.pending\n ? t(\"orders.pending.cancelAll.description\")\n : type === TabType.tp_sl\n ? t(\"orders.tpsl.cancelAll.description\")\n : \"\";\n modal.confirm({\n title: title,\n content: <Text size=\"2xs\">{content}</Text>,\n\n onOk: async () => {\n try {\n // await cancelAll(null, { source_type: \"ALL\" });\n if (tab === DataListTabType.tp_sl) {\n await cancelAllTPSLOrders();\n } else {\n await cancelAllOrders();\n }\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 };\n\n return {\n tab,\n setTab,\n subTab,\n setSubTab,\n sharePnLConfig,\n symbol,\n positionCount,\n pendingOrderCount,\n tpSlOrderCount,\n ...localStorage,\n onCloseAll,\n onSymbolChange,\n };\n};\n\nexport type DataListState = ReturnType<typeof useDataListScript>;\n","import { useDataListScript } from \"./dataList.script\";\nimport { DataList } from \"./dataList.ui\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\n\nexport const DataListWidget = (props: {\n symbol: string;\n className?: string;\n sharePnLConfig?: SharePnLConfig;\n}) => {\n const state = useDataListScript(props);\n return <DataList {...state} className={props.className} />;\n};\n","import { FC, LegacyRef, useEffect, useRef, useState } from \"react\";\nimport { cn, Flex, Grid, Text } from \"@orderly.network/ui\";\nimport { OrderBookAndEntryState } from \"./orderBookAndEntry.script\";\nimport { OrderBookWidget } from \"../../base/orderBook\";\nimport { OrderEntryWidget } from \"@orderly.network/ui-order-entry\";\n\nexport const OrderBookAndEntry: FC<\n OrderBookAndEntryState & {\n className?: string;\n }\n> = (props) => {\n const [height, setHeight] = useState(0); \n const divRef = useRef(null); \n\n useEffect(() => {\n const div = divRef.current;\n\n if (!div) return;\n\n \n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n setHeight(entry.contentRect.height);\n }\n });\n \n resizeObserver.observe(div);\n\n \n return () => {\n resizeObserver.unobserve(div);\n };\n }, []);\n return (\n <div\n \n className={cn(\n \"oui-grid oui-grid-cols-[4fr,6fr] oui-gap-1 oui-mx-1 \",\n props.className\n )}\n >\n <div className=\"oui-bg-base-9 oui-rounded-xl\" style={{\n height: `${height + 16}px`\n }}>\n <OrderBookWidget\n symbol={props.symbol}\n height={height ? height - 44 : undefined}\n />\n </div>\n <div className=\"oui-bg-base-9 oui-rounded-xl oui-p-2\" >\n <OrderEntryWidget symbol={props.symbol} containerRef={divRef}/>\n </div>\n </div>\n );\n};\n","import { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport const useOrderBookAndEntryScript = () => {\n const { symbol } = useTradingPageContext();\n return {\n symbol,\n };\n};\n\nexport type OrderBookAndEntryState = ReturnType<\n typeof useOrderBookAndEntryScript\n>;\n","import { useOrderBookAndEntryScript } from \"./orderBookAndEntry.script\";\nimport { OrderBookAndEntry } from \"./orderBookAndEntry.ui\";\n\nexport const OrderBookAndEntryWidget = (props: {\n className?: string;\n}) => {\n const state = useOrderBookAndEntryScript();\n return (<OrderBookAndEntry className={props.className} {...state} />);\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, cn, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\nimport { MWebLastTrades } from \"../lastTrades/lastTrades.widget\";\nimport { TradeDataWidget } from \"../tradeData\";\nimport { TradingviewWidget } from \"../tradingview/tradingview.widget\";\nimport { TopTabState, TopTabType } from \"./topTab.script\";\n\nexport const TopTab: FC<\n TopTabState & {\n className?: string;\n }\n> = (props) => {\n const { t } = useTranslation();\n const { tradingViewConfig } = useTradingPageContext();\n\n return (\n <Tabs\n variant=\"contained\"\n value={props.tab}\n contentVisible={props.visible}\n onValueChange={(e) => {\n props.setTab(e as any);\n props.setVisible(true);\n }}\n className={props.className}\n classNames={{\n tabsList: \"oui-p-2\",\n tabsContent: \"oui-min-h-[176px] oui-max-h-[396px]\",\n }}\n style={{\n marginBottom: props.tab === TopTabType.chart ? \"8px\" : 0,\n }}\n trailing={\n <button className=\"oui-px-5\" onClick={props.toggleContentVisible}>\n <ChevronIcon\n className={props.visible ? \"oui-rotate-0\" : \"oui-rotate-180\"}\n />\n </button>\n }\n >\n <TabPanel title={t(\"trading.tabs.chart\")} value={TopTabType.chart}>\n <TradingviewWidget\n symbol={props.symbol}\n tradingViewConfig={tradingViewConfig}\n />\n </TabPanel>\n <TabPanel title={t(\"trading.tabs.trades\")} value={TopTabType.trades}>\n <MWebLastTrades symbol={props.symbol} />\n </TabPanel>\n <TabPanel title={t(\"trading.tabs.data\")} value={TopTabType.data}>\n <Box px={3}>\n <TradeDataWidget symbol={props.symbol} />\n </Box>\n </TabPanel>\n </Tabs>\n );\n};\n\nconst ChevronIcon = (props: { className?: string }) => {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\n \"oui-fill-base-contrast-54 hover:oui-fill-base-contrast-80\",\n props.className,\n )}\n >\n <path\n d=\"M5.721 4.585 2.726 6.578a.51.51 0 0 0-.14.7.51.51 0 0 0 .702.14l2.714-1.806 2.715 1.806c.23.153.549.089.702-.14a.51.51 0 0 0-.14-.7L6.283 4.585a.51.51 0 0 0-.562 0\"\n // fill=\"url(#a)\"\n />\n <defs>\n {/* <linearGradient\n id=\"a\"\n x1=\"9.502\"\n y1=\"6.001\"\n x2=\"2.502\"\n y2=\"6.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient> */}\n </defs>\n </svg>\n );\n};\n","import { LastTradesWidget } from \"../../base/lastTrades\";\n\nexport const MWebLastTrades = (props: { symbol: string }) => {\n return (\n <LastTradesWidget\n symbol={props.symbol}\n classNames={{\n root: \"oui-px-3 \",\n list: \"oui-min-h-[141px] oui-max-h-[202px] oui-w-full\",\n listHeader: \"oui-text-xs oui-text-base-contrast-36\",\n listItem: {\n left: \"oui-text-xs\",\n mid: \"oui-text-xs\",\n right: \"oui-text-xs\",\n },\n }}\n />\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { TradeDataState } from \"./tradeData.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const TradeData: FC<TradeDataState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} gap={2}>\n <Row\n title={t(\"common.markPrice\")}\n value={props.ticker?.mark_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title={t(\"common.indexPrice\")}\n value={props.ticker?.index_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title={t(\"markets.column.24hVolume\")}\n value={props.vol_24h}\n dp={props.symbolInfo.quote_dp}\n rule=\"human\"\n showUSDC\n />\n <Row\n title={t(\"trading.column.24High\")}\n value={props.ticker?.[\"24h_high\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title={t(\"trading.column.24Low\")}\n value={props.ticker?.[\"24h_low\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title={t(\"markets.openInterest\")}\n value={props.openInterest}\n dp={props.symbolInfo.quote_dp}\n rule=\"human\"\n showUSDC\n />\n </Flex>\n );\n};\n\nconst Row = (props: {\n title: string;\n value: any;\n dp?: number;\n rule?: \"percentages\" | \"price\" | \"human\";\n showUSDC?: boolean;\n}) => {\n const { title, value, showUSDC, dp, rule = \"price\" } = props;\n return (\n <Flex justify={\"between\"} width={\"100%\"} className=\"oui-text-xs\">\n <Text intensity={36}>{title}</Text>\n <Flex gap={1}>\n <Text.numeral rule={rule} dp={dp} intensity={80}>\n {value}\n </Text.numeral>\n {showUSDC && <Text intensity={36}>USDC</Text>}\n </Flex>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { useTickerStream } from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport const useTradeDataScript = (props: { symbol: string }) => {\n const { symbol } = props;\n const ticker = useTickerStream(symbol);\n const { symbolInfo } = useTradingPageContext();\n const vol_24h = useMemo(() => {\n const close = ticker?.[\"24h_close\"];\n const volume = ticker?.[\"24h_volume\"];\n if (close && volume && !isNaN(close) && !isNaN(volume)) {\n return new Decimal(close)\n .mul(volume)\n .toFixed(symbolInfo.quote_dp, Decimal.ROUND_DOWN);\n }\n return undefined;\n }, [ticker]);\n\n const openInterest = useMemo(() => {\n const markPrice = ticker?.[\"mark_price\"];\n const openInterest = ticker?.[\"open_interest\"];\n if (markPrice && openInterest && !isNaN(markPrice)) {\n return new Decimal(markPrice)\n .mul(Number(openInterest))\n .toFixed(symbolInfo.quote_dp, Decimal.ROUND_DOWN);\n }\n return undefined;\n }, [ticker]);\n return {\n ticker,\n symbolInfo,\n vol_24h,\n openInterest,\n };\n};\n\nexport type TradeDataState = ReturnType<typeof useTradeDataScript>;\n","import { useTradeDataScript } from \"./tradeData.script\";\nimport { TradeData } from \"./tradeData.ui\";\n\nexport const TradeDataWidget = (props: {\n symbol: string;\n}) => {\n const state = useTradeDataScript(props);\n return (<TradeData {...state} />);\n};\n","import { TradingviewWidget } from \"@orderly.network/ui-tradingview\";\nimport { KlineDragIcon } from \"../../base/icons\";\nimport { TradingviewState } from \"./tradingview.script\";\nimport { cn } from \"@orderly.network/ui\";\n\nexport function TradingviewUi(props: TradingviewState) {\n return (\n <div\n className=\"oui-pb-1 oui-flex oui-flex-col oui-gap-1\"\n style={{ height: props.height }}\n ref={props.boxRef}\n >\n <div className=\"oui-w-full oui-h-full\">\n <TradingviewWidget\n symbol={props.symbol}\n libraryPath={props.tradingViewConfig?.library_path}\n mode={3}\n scriptSRC={props.tradingViewConfig?.scriptSRC}\n customCssUrl={props.tradingViewConfig?.customCssUrl}\n {...props.tradingViewConfig}\n\n\n />\n </div>\n <div className=\"oui-relative oui-w-full\">\n <div\n ref={props.dragRef}\n className={cn(\n \"oui-h-[1px] oui-absolute oui-left-0 oui-right-0 oui-bottom-0 oui-top-0 oui-z-10 oui-mt-[7px] oui-bg-base-contrast-12\",\n props.dragging && \"oui-bg-primary \"\n )}\n >\n <KlineDragIcon\n className={cn(\n \"oui-w-3 oui-h-3 oui-absolute oui-left-1/2 -oui-top-[5px] -oui-translate-y-[0.5px] oui-text-base-contrast-12\",\n props.dragging && \" oui-text-primary\"\n )}\n />\n </div>\n </div>\n </div>\n );\n}\n","import React, { FC, SVGProps } from \"react\";\n\nexport const KlineDragIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g id=\"Arrows-expand\">\n <path id=\"Vector\"\n d=\"M5.9989 1.00708C5.8709 1.00708 5.7369 1.05008 5.6394 1.14758L3.7959 3.00708L4.4989 3.71008L5.4989 2.72607V4.50708C5.4989 4.78308 5.7229 5.00708 5.9989 5.00708C6.2749 5.00708 6.4989 4.78308 6.4989 4.50708V2.72607L7.4989 3.71008L8.2019 3.00708L6.3584 1.14758C6.2604 1.05008 6.1269 1.00708 5.9989 1.00708ZM5.9989 7.00707C5.7229 7.00707 5.4989 7.23107 5.4989 7.50707V9.28808L4.4989 8.30407L3.7959 9.00707L5.6394 10.8666C5.8349 11.0616 6.1629 11.0616 6.3584 10.8666L8.2019 9.00707L7.4989 8.30407L6.4989 9.28808V7.50707C6.4989 7.23107 6.2749 7.00707 5.9989 7.00707Z\"\n />\n </g>\n </svg>\n);\n","import { TradingviewWidgetProps } from \"./tradingview.widget\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\n\n\nconst MaxHeight = 354;\nconst MinHeight = 234;\nconst Key = 'TRADINGVIEW_MOBILE_HEIGHT';\n\nexport function useTradingviewScript(props: TradingviewWidgetProps) {\n const [height, setHeight] =useLocalStorage(Key, MinHeight);\n const [dragging, setDragging] = useState(false);\n const dragRef = useRef<HTMLDivElement>(null);\n const boxRef = useRef<HTMLDivElement>(null);\n const [offsetY, setOffsetY] = useState(0);\n const topRef = useRef<number>(0);\n\n const handleTouchStart = useCallback(\n (e: TouchEvent) => {\n if (!boxRef.current) {\n return;\n }\n setDragging(true)\n const event = e.touches[0];\n const rect =boxRef.current.getBoundingClientRect();\n e.stopPropagation();\n e.preventDefault();\n\n const offsetY = event.clientY - rect.bottom\n topRef.current =rect.top;\n setOffsetY(offsetY);\n },\n []\n );\n\n const handleTouchMove = useCallback(\n (e: TouchEvent) => {\n if (!boxRef.current) {\n return;\n }\n if (dragging) {\n e.stopPropagation();\n e.preventDefault();\n\n const event = e.touches[0];\n\n const newHeight = event.clientY - topRef.current - offsetY;\n setHeight(Math.min(Math.max(Math.round(newHeight), MinHeight),MaxHeight));\n return false;\n }\n },[dragging, offsetY]);\n\n const handleTouchEnd = useCallback(() => {\n setDragging(false)\n }, []);\n\n useEffect(() => {\n const drag = dragRef.current;\n if (!drag) {\n return;\n }\n\n\n drag.addEventListener(\"touchstart\", handleTouchStart);\n\n return () => {\n\n drag.removeEventListener(\"touchstart\", handleTouchStart);\n };\n }, [handleTouchStart]);\n\n useEffect(() => {\n\n document.addEventListener(\"touchmove\", handleTouchMove, {passive: false});\n document.addEventListener(\"touchend\", handleTouchEnd);\n\n return () => {\n\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", handleTouchEnd);\n };\n }, [\n dragging,\n handleTouchMove,\n handleTouchEnd,\n ]);\n return {\n ...props,\n\n height,\n dragging,\n dragRef,\n boxRef,\n };\n}\n\nexport type TradingviewState = ReturnType<typeof useTradingviewScript>;\n","import { TradingviewUi } from \"./tradingview.ui\";\nimport { useTradingviewScript } from \"./tradingview.script\";\nimport { TradingViewConfigInterface } from \"../../../types/types\";\n\nexport interface TradingviewWidgetProps {\n symbol: string;\n tradingViewConfig:TradingViewConfigInterface;\n}\n\nexport function TradingviewWidget(props: TradingviewWidgetProps) {\n const state = useTradingviewScript(props);\n return (\n <TradingviewUi {...state}/>\n )\n}","import { useState } from \"react\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport enum TopTabType {\n chart = \"chart\",\n trades = \"trades\",\n data = \"data\",\n}\n\nexport const useTopTabScript = () => {\n const [tab, setTab] = useState<TopTabType>(TopTabType.chart);\n const { symbol } = useTradingPageContext();\n const [visible, setVisible] = useState(true);\n\n const toggleContentVisible = () => {\n setVisible((e) => !e);\n };\n\n return {\n tab,\n setTab,\n symbol,\n toggleContentVisible,\n setVisible,\n visible,\n };\n};\n\nexport type TopTabState = ReturnType<typeof useTopTabScript>;\n","import { useTopTabScript } from \"./topTab.script\";\nimport { TopTab } from \"./topTab.ui\";\n\nexport const TopTabWidget = (props: {\n className?: string\n}) => {\n const state = useTopTabScript();\n return (<TopTab className={props.className} {...state} />);\n};\n","import { FC, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport {\n SideMarketsWidget,\n SymbolInfoBarFullWidget,\n} from \"@orderly.network/markets\";\nimport { TradingviewFullscreenKey } from \"@orderly.network/types\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { OrderEntryWidget } from \"@orderly.network/ui-order-entry\";\nimport { TradingviewWidget } from \"@orderly.network/ui-tradingview\";\nimport { DepositStatusWidget } from \"@orderly.network/ui-transfer\";\nimport { AssetViewWidget } from \"../../components/desktop/assetView\";\nimport { DataListWidget } from \"../../components/desktop/dataList\";\nimport { RemovablePanel } from \"../../components/desktop/layout/removablePanel\";\nimport { SplitLayout } from \"../../components/desktop/layout/splitLayout\";\nimport { SwitchLayout } from \"../../components/desktop/layout/switchLayout\";\nimport { OrderBookAndTradesWidget } from \"../../components/desktop/orderBookAndTrades\";\nimport { RiskRateWidget } from \"../../components/desktop/riskRate\";\nimport {\n dataListInitialHeight,\n getOffsetSizeNum,\n TradingState,\n} from \"./trading.script\";\nimport {\n scrollBarWidth,\n topBarHeight,\n bottomBarHeight,\n space,\n symbolInfoBarHeight,\n orderEntryMinWidth,\n orderEntryMaxWidth,\n orderbookMinWidth,\n orderbookMaxWidth,\n orderbookMinHeight,\n orderbookMaxHeight,\n tradindviewMinHeight,\n tradingViewMinWidth,\n dataListMaxHeight,\n} from \"./trading.script\";\n\nexport type DesktopLayoutProps = TradingState & {\n className?: string;\n};\n\nexport const DesktopLayout: FC<DesktopLayoutProps> = (props) => {\n const {\n collapsable,\n collapsed,\n onCollapse,\n layout,\n onLayout,\n orderBookSplitSize,\n setOrderbookSplitSize,\n dataListSplitSize,\n setDataListSplitSize,\n mainSplitSize,\n setMainSplitSize,\n dataListSplitHeightSM,\n setDataListSplitHeightSM,\n orderBookSplitHeightSM,\n setOrderbookSplitHeightSM,\n max2XL,\n max4XL,\n animating,\n setAnimating,\n positions,\n updatePositions,\n showPositionIcon,\n horizontalDraggable,\n marketsWidth,\n tradindviewMaxHeight,\n dataListMinHeight,\n } = props;\n\n const [tradingViewFullScreen] = useLocalStorage(\n TradingviewFullscreenKey,\n false,\n );\n\n const minScreenHeight = useMemo(() => {\n return tradingViewFullScreen\n ? 0\n : symbolInfoBarHeight +\n orderbookMaxHeight +\n dataListInitialHeight +\n space * 4;\n }, [tradingViewFullScreen]);\n const minScreenHeightSM =\n topBarHeight +\n bottomBarHeight +\n symbolInfoBarHeight +\n tradindviewMinHeight +\n orderbookMinHeight +\n dataListMinHeight +\n space * 4;\n\n const marketsWidget = (\n <SideMarketsWidget\n collapsable={collapsable}\n collapsed={collapsed}\n onCollapse={onCollapse}\n symbol={props.symbol}\n onSymbolChange={props.onSymbolChange}\n />\n );\n\n const marketsView = (\n <Box\n intensity={900}\n pt={3}\n r=\"2xl\"\n height=\"100%\"\n width={marketsWidth}\n style={{ minWidth: marketsWidth }}\n className=\"oui-transition-all oui-duration-150\"\n onTransitionEnd={() => {\n setAnimating(false);\n }}\n >\n {!animating && marketsWidget}\n </Box>\n );\n\n const trailing = useMemo(() => {\n return <SwitchLayout layout={layout} onLayout={onLayout} />;\n }, [layout, onLayout]);\n\n const symbolInfoBarView = (\n <Box\n intensity={900}\n r=\"2xl\"\n px={3}\n width=\"100%\"\n style={{\n minHeight: symbolInfoBarHeight,\n height: symbolInfoBarHeight,\n }}\n >\n <SymbolInfoBarFullWidget\n symbol={props.symbol}\n onSymbolChange={props.onSymbolChange}\n trailing={trailing}\n />\n </Box>\n );\n\n const { library_path, ...restTradingViewConfig } = props.tradingViewConfig;\n\n const tradingviewWidget = (\n <TradingviewWidget\n classNames={{\n root: cn(\n tradingViewFullScreen\n ? \"!oui-absolute oui-top-0 oui-left-0 oui-right-0 oui-bottom-0 oui-z-[40] oui-bg-base-10\"\n : \"oui-z-1\",\n ),\n content: cn(\n tradingViewFullScreen\n ? \"oui-top-3 oui-bottom-3 oui-left-3 oui-right-3 oui-bg-base-9 oui-rounded-[16px] oui-overflow-hidden\"\n : \"\",\n ),\n }}\n symbol={props.symbol}\n {...restTradingViewConfig}\n libraryPath={library_path}\n />\n );\n\n const tradingView = (\n <Box\n width=\"100%\"\n height=\"100%\"\n intensity={900}\n r=\"2xl\"\n style={{ flex: 1, minWidth: tradingViewMinWidth }}\n className=\"oui-overflow-hidden\"\n >\n {tradingviewWidget}\n </Box>\n );\n\n const orderbookWidget = <OrderBookAndTradesWidget symbol={props.symbol} />;\n\n const orderbookView = (\n <Box\n r=\"2xl\"\n height=\"100%\"\n style={{\n minWidth: orderbookMinWidth,\n maxWidth: horizontalDraggable ? orderbookMaxWidth : orderbookMinWidth,\n width: orderBookSplitSize,\n }}\n className=\"oui-overflow-hidden\"\n >\n {orderbookWidget}\n </Box>\n );\n\n const dataListWidget = (\n <DataListWidget\n current={undefined}\n symbol={props.symbol}\n sharePnLConfig={props.sharePnLConfig}\n />\n );\n\n const dataListView = (\n <Box\n intensity={900}\n r=\"2xl\"\n p={2}\n style={{\n height: dataListSplitSize,\n // height: `calc(100% - ${symbolInfoBarHeight}px - ${orderbookMaxHeight}px - ${space}px)`,\n minHeight: dataListInitialHeight,\n // minHeight: `max(${dataListMinHeight}px, calc(100vh - ${symbolInfoBarHeight}px - ${orderbookMaxHeight}px - ${space}px))`,\n }}\n className=\"oui-overflow-hidden\"\n >\n {dataListWidget}\n </Box>\n );\n\n const assetsOrderEntryMargin = [\n <RemovablePanel\n key=\"margin\"\n index={positions.findIndex((item) => item === 0)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <RiskRateWidget />\n </RemovablePanel>,\n <RemovablePanel\n key=\"assets\"\n className=\"oui-border oui-border-line-12\"\n index={positions.findIndex((item) => item === 1)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <>\n <AssetViewWidget isFirstTimeDeposit={props.isFirstTimeDeposit} />\n <DepositStatusWidget\n className=\"oui-mt-3 oui-gap-y-2\"\n onClick={props.navigateToPortfolio}\n />\n </>\n </RemovablePanel>,\n <RemovablePanel\n key=\"orderEntry\"\n index={positions.findIndex((item) => item === 2)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <OrderEntryWidget\n symbol={props.symbol}\n disableFeatures={\n props.disableFeatures as unknown as (\"slippageSetting\" | \"feesInfo\")[]\n }\n />\n </RemovablePanel>,\n ];\n\n const orderEntryWidget = positions.map(\n (index) => assetsOrderEntryMargin[index],\n );\n\n const orderEntryView = (\n <Flex\n gapY={2}\n direction=\"column\"\n height=\"100%\"\n style={{\n minWidth: orderEntryMinWidth,\n maxWidth: horizontalDraggable ? orderEntryMaxWidth : orderEntryMinWidth,\n width: mainSplitSize,\n }}\n >\n {orderEntryWidget}\n </Flex>\n );\n\n const renderTradingView = () => {\n if (max4XL && layout === \"right\") {\n return (\n <Flex\n gap={2}\n className=\"oui-flex-1 oui-overflow-hidden\"\n style={{\n minWidth: marketsWidth + tradingViewMinWidth + space,\n }}\n >\n {marketsView}\n {tradingView}\n </Flex>\n );\n }\n\n return tradingView;\n };\n\n const tradingViewAndOrderbookView = (\n <SplitLayout\n style={{\n // the style width is not set, and a child node style needs to be set to flex: 1 to adapt\n flex: 1,\n minHeight: orderbookMinHeight,\n // maxHeight: orderbookMaxHeight,\n }}\n onSizeChange={setOrderbookSplitSize}\n disable={!horizontalDraggable}\n >\n {renderTradingView()}\n {orderbookView}\n </SplitLayout>\n );\n\n const renderTradingViewAndOrderbookView = () => {\n if (max4XL && layout === \"left\") {\n return (\n <Flex\n gapX={2}\n style={{\n minHeight: orderbookMinHeight,\n // maxHeight: orderbookMaxHeight,\n // minWidth:\n // marketsWidth +\n // tradingViewMinWidth +\n // orderbookMinWidth +\n // space * 2,\n }}\n height=\"100%\"\n >\n {tradingViewAndOrderbookView}\n {marketsView}\n </Flex>\n );\n }\n return tradingViewAndOrderbookView;\n };\n\n const mainView = (\n <Flex\n direction=\"column\"\n className=\"oui-flex-1 oui-overflow-hidden\"\n gap={2}\n style={{\n minWidth: max4XL\n ? marketsWidth + tradingViewMinWidth + orderbookMinWidth + space * 2\n : tradingViewMinWidth + orderbookMinWidth + space,\n }}\n >\n {symbolInfoBarView}\n <SplitLayout\n style={{\n // height: orderbookMaxHeight + dataListInitialHeight + space,\n maxHeight: `calc(100% - ${symbolInfoBarHeight}px - ${space}px)`,\n }}\n className=\"oui-w-full\"\n mode=\"vertical\"\n onSizeChange={setDataListSplitSize}\n >\n {renderTradingViewAndOrderbookView()}\n {dataListView}\n </SplitLayout>\n </Flex>\n );\n\n const onSizeChange = (width: string) =>\n layout === \"left\"\n ? setMainSplitSize(getOffsetSizeNum(width))\n : setMainSplitSize(width);\n\n if (max2XL) {\n return (\n <SplitLayout\n ref={props.max2XLSplitRef}\n style={{\n minHeight: minScreenHeightSM,\n minWidth: 1024 - scrollBarWidth,\n // height: props.extraHeight ? props.extraHeight : undefined,\n }}\n className={cn(\n \"oui-flex oui-flex-1 \",\n \"oui-size-full oui-min-w-[1018px]\",\n \"oui-px-3 oui-py-2\",\n props.className,\n )}\n onSizeChange={setDataListSplitHeightSM}\n onDragging={props.onDataListSplitHeightDragging}\n mode=\"vertical\"\n >\n <Flex\n gapX={2}\n itemAlign=\"stretch\"\n className={cn(\n \"oui-flex-1\",\n layout === \"left\" && \"oui-flex-row-reverse\",\n )}\n style={{\n minHeight: Math.max(\n symbolInfoBarHeight +\n tradindviewMinHeight +\n orderbookMinHeight +\n space * 2,\n props.orderEntryHeight,\n ),\n maxHeight:\n symbolInfoBarHeight +\n tradindviewMaxHeight +\n orderbookMaxHeight +\n space * 2,\n }}\n >\n <Flex\n height=\"100%\"\n className=\"oui-flex-1 oui-w-[calc(100%_-_280px_-_12px)]\"\n direction=\"column\"\n gapY={2}\n >\n {symbolInfoBarView}\n <Flex\n width=\"100%\"\n height=\"100%\"\n gapX={2}\n itemAlign=\"stretch\"\n style={{\n minHeight: tradindviewMinHeight + orderbookMinHeight + space,\n maxHeight: tradindviewMaxHeight + orderbookMaxHeight + space,\n }}\n className={cn(\n \"oui-flex-1\",\n layout === \"left\" && \"oui-flex-row-reverse\",\n )}\n >\n <Box\n intensity={900}\n pt={3}\n r=\"2xl\"\n width={marketsWidth}\n style={{\n minHeight: tradindviewMinHeight + orderbookMinHeight + space,\n maxHeight: tradindviewMaxHeight + orderbookMaxHeight + space,\n }}\n >\n {marketsWidget}\n </Box>\n <SplitLayout\n ref={props.tradingviewAndOrderbookSplitRef}\n mode=\"vertical\"\n style={{\n width: `calc(100% - ${marketsWidth}px)`,\n }}\n className=\"oui-flex-1\"\n onSizeChange={setOrderbookSplitHeightSM}\n onDragging={props.onTradingviewAndOrderbookDragging}\n >\n <Box\n width=\"100%\"\n intensity={900}\n r=\"2xl\"\n style={{\n minHeight: tradindviewMinHeight,\n maxHeight: tradindviewMaxHeight,\n height: 1200,\n }}\n >\n {tradingviewWidget}\n </Box>\n\n <Box\n r=\"2xl\"\n height=\"100%\"\n width=\"100%\"\n style={{\n minHeight: orderbookMinHeight,\n maxHeight: orderbookMaxHeight,\n height: orderBookSplitHeightSM,\n }}\n className=\"oui-flex-1\"\n >\n {orderbookWidget}\n </Box>\n </SplitLayout>\n </Flex>\n </Flex>\n <Flex\n ref={props.orderEntryViewRef}\n id=\"orderEntryView\"\n gapY={3}\n direction=\"column\"\n className=\"oui-relative\"\n style={{\n width: orderEntryMinWidth,\n // force order entry render actual content height\n height: \"max-content\",\n // height:\n // props.extraHeight && props.extraHeight > 100\n // ? undefined\n // : \"max-content\",\n }}\n >\n {orderEntryWidget}\n <Box height={props.extraHeight} />\n </Flex>\n </Flex>\n\n <Box\n intensity={900}\n r=\"2xl\"\n p={2}\n style={{\n height: dataListSplitHeightSM,\n minHeight: Math.max(dataListMinHeight, props.dataListHeight),\n maxHeight: dataListMaxHeight,\n }}\n className=\"oui-overflow-hidden\"\n >\n {dataListWidget}\n </Box>\n </SplitLayout>\n );\n }\n\n return (\n <Flex\n style={{\n minHeight: minScreenHeight,\n minWidth: 1440 - scrollBarWidth,\n }}\n className={cn(\n props.className,\n layout === \"left\" && \"oui-flex-row-reverse\",\n tradingViewFullScreen &&\n \"oui-relative oui-w-screen oui-h-[calc(100vh-80px)] !oui-p-0 oui-overflow-hidden\",\n )}\n width=\"100%\"\n p={2}\n gap={2}\n >\n {!max4XL && marketsView}\n <SplitLayout\n className=\"oui-flex oui-flex-1 oui-overflow-hidden\"\n onSizeChange={onSizeChange}\n disable={!horizontalDraggable}\n >\n {layout === \"left\" && orderEntryView}\n {mainView}\n {layout === \"right\" && orderEntryView}\n </SplitLayout>\n </Flex>\n );\n};\n","import React, { FC, PropsWithChildren, SVGProps, useState } from \"react\";\nimport { Box, cn, Flex, Tooltip } from \"@orderly.network/ui\";\n\nexport type RemovablePanelProps = {\n className?: string;\n index: number;\n onLayout: (currentIdx: number, targetIdx: number) => void;\n showIndicator?: boolean;\n};\n\nexport const RemovablePanel: React.FC<\n PropsWithChildren<RemovablePanelProps>\n> = (props) => {\n const { showIndicator = true } = props;\n const [open, setOpen] = useState(false);\n return (\n <Box\n intensity={900}\n r=\"2xl\"\n p={3}\n width=\"100%\"\n className={cn(\"oui-relative\", props.className)}\n >\n {props.children}\n <Tooltip\n open={open}\n onOpenChange={setOpen}\n side=\"left\"\n align=\"start\"\n sideOffset={-4}\n alignOffset={-4}\n // @ts-ignore\n content={\n <Flex direction=\"column\" gapY={2}>\n {[TopIcon, MiddleIcon, BottomIcon].map((Icon, idx) => (\n <Icon\n key={idx}\n className={cn(\n \"oui-rounded oui-cursor-pointer hover:oui-bg-base-5\",\n props.index === idx && \"oui-bg-base-5\"\n )}\n onClick={() => {\n props.onLayout?.(props.index, idx);\n setOpen(false);\n }}\n />\n ))}\n </Flex>\n }\n delayDuration={0}\n className={cn(\n \"oui-bg-base-9 oui-rounded\",\n \"oui-border oui-border-line-12\",\n \"oui-p-1\"\n )}\n arrow={{ className: \"oui-fill-transparent\" }}\n >\n {showIndicator && (\n <div className=\"oui-absolute oui-right-[1px] oui-top-[18px]\">\n <IndicatorIcon\n className={cn(\n \"oui-text-base-contrast-20 hover:oui-text-base-contrast-80\",\n \"oui-cursor-pointer\"\n )}\n />\n </div>\n )}\n </Tooltip>\n </Box>\n );\n};\n\nexport const IndicatorIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"10\"\n height=\"16\"\n viewBox=\"0 0 10 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect x=\"2\" y=\"2\" width=\"6\" height=\"2\" rx=\"1\" />\n <rect x=\"2\" y=\"7\" width=\"6\" height=\"2\" rx=\"1\" />\n <rect x=\"2\" y=\"12\" width=\"6\" height=\"2\" rx=\"1\" />\n </svg>\n);\n\nexport const TopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect\n x=\"1.333\"\n y=\"2.667\"\n width=\"13.333\"\n height=\"4\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n <rect\n x=\"2.667\"\n y=\"12\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <rect\n x=\"2.667\"\n y=\"8.667\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n);\n\nexport const MiddleIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect\n x=\"1.333\"\n y=\"6\"\n width=\"13.333\"\n height=\"4\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n <rect\n x=\"2.667\"\n y=\"12\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <rect\n x=\"2.667\"\n y=\"2.667\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n);\n\nexport const BottomIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect\n x=\"1.333\"\n y=\"9.333\"\n width=\"13.333\"\n height=\"4\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n <rect\n x=\"2.667\"\n y=\"6\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <rect\n x=\"2.667\"\n y=\"2.667\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n);\n","import { FC, PropsWithChildren, SVGProps, useState } from \"react\";\nimport {\n Box,\n CloseIcon,\n cn,\n Divider,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport type LayoutPosition = \"left\" | \"right\";\n\nexport type SwitchLayoutProps = {\n layout?: LayoutPosition;\n onLayout?: (layout: LayoutPosition) => void;\n};\n\nexport const SwitchLayout: FC<SwitchLayoutProps> = (props) => {\n const { t } = useTranslation();\n return (\n <SwitchLayoutDropDown {...props}>\n <Flex\n px={3}\n className={cn(\n \"oui-rounded-md\",\n \"oui-h-[28px]\",\n \"oui-cursor-pointer oui-transition-all\",\n \"oui-bg-base-6 hover:oui-bg-base-4\",\n \"oui-text-base-contrast-54 hover:oui-text-base-contrast-80\"\n )}\n gapX={1}\n ml={3}\n justify=\"center\"\n itemAlign=\"center\"\n >\n <LayoutIcon />\n <Text size=\"2xs\" weight=\"semibold\">\n {t(\"trading.layout\")}\n </Text>\n </Flex>\n </SwitchLayoutDropDown>\n );\n};\n\nexport const SwitchLayoutDropDown: FC<PropsWithChildren<SwitchLayoutProps>> = (\n props\n) => {\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n const renderItem = (position: LayoutPosition) => {\n return (\n <Flex\n direction=\"column\"\n gapY={2}\n onClick={() => {\n props.onLayout?.(position);\n setOpen(false);\n }}\n className=\"oui-group\"\n >\n <Flex\n justify={position === \"right\" ? \"end\" : \"start\"}\n className={cn(\n \"oui-w-[148px] oui-h-[100px]\",\n \"oui-bg-base-10 oui-rounded-[10px]\",\n \"oui-border-[4px] oui-border-base-5 group-hover:oui-border-primary-light\",\n props.layout === position && \"!oui-border-primary-light\"\n )}\n >\n <Box p={1}>\n <OrderEntryIcon />\n </Box>\n </Flex>\n <Text\n size=\"2xs\"\n intensity={54}\n className={cn(\n \"oui-text-base-contrast-54 group-hover:oui-text-base-contrast-80\",\n props.layout === position && \"oui-text-base-contrast-80\"\n )}\n >\n {position === \"right\"\n ? t(\"trading.layout.right\")\n : t(\"trading.layout.left\")}\n </Text>\n </Flex>\n );\n };\n\n const content = (\n <>\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n mt={3}\n className=\"oui-mb-[10px]\"\n >\n <Text size=\"base\" intensity={98}>\n {t(\"trading.layout\")}\n </Text>\n <CloseIcon\n size={16}\n className=\"oui-text-base-contrast-80 oui-cursor-pointer\"\n opacity={0.98}\n onClick={() => {\n setOpen(false);\n }}\n />\n </Flex>\n <Divider />\n <Flex gapX={6} mt={5}>\n {renderItem(\"right\")}\n {renderItem(\"left\")}\n </Flex>\n </>\n );\n\n return (\n <DropdownMenuRoot open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>{props.children}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n align=\"end\"\n className={cn(\n \"oui-bg-base-8 oui-p-5 oui-pt-0 oui-w-[360px] oui-font-semibold\"\n )}\n >\n {content}\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n\nexport const LayoutIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M3.832 1.994c-.736 0-1.333.597-1.333 1.333v9.334c0 .737.597 1.333 1.333 1.333H6.5c.737 0 1.333-.596 1.333-1.333V3.327c0-.736-.596-1.333-1.333-1.333zm6.667 0c-.737 0-1.333.597-1.333 1.333v2.667c0 .737.596 1.333 1.333 1.333h2.667c.736 0 1.333-.596 1.333-1.333V3.327c0-.736-.597-1.333-1.333-1.333zm.437 6.679a2.7 2.7 0 0 0-1.033.607.284.284 0 0 0-.061.339c.222.411-.01.851-.512.876a.29.29 0 0 0-.26.217c-.05.207-.07.38-.07.608 0 .19.02.407.06.599a.28.28 0 0 0 .252.217c.506.044.756.429.53.92a.28.28 0 0 0 .06.321c.296.273.635.466 1.034.59a.285.285 0 0 0 .312-.104c.31-.427.757-.428 1.05 0a.28.28 0 0 0 .313.113 2.8 2.8 0 0 0 1.042-.599.28.28 0 0 0 .06-.33c-.23-.466.035-.894.513-.902a.28.28 0 0 0 .269-.209c.048-.199.06-.372.06-.616q0-.316-.069-.616a.276.276 0 0 0-.27-.217c-.469-.001-.732-.463-.502-.868a.27.27 0 0 0-.053-.339 2.8 2.8 0 0 0-1.059-.607.274.274 0 0 0-.312.112c-.268.417-.77.425-1.033.009a.284.284 0 0 0-.321-.121m.842 1.536a1.111 1.111 0 1 1 0 2.222 1.111 1.111 0 0 1 0-2.222\" />\n </svg>\n);\n\nexport const OrderEntryIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"36\"\n height=\"84\"\n viewBox=\"0 0 36 84\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect width=\"36\" height=\"17\" rx=\"2\" fill=\"#181C23\" />\n <rect y=\"19\" width=\"36\" height=\"54\" rx=\"2\" fill=\"#181C23\" />\n <rect y=\"75\" width=\"36\" height=\"9\" rx=\"2\" fill=\"#181C23\" />\n <rect\n x=\"3\"\n y=\"79\"\n width=\"30\"\n height=\"1\"\n rx=\"0.5\"\n fill=\"url(#paint0_linear_17647_26849)\"\n />\n <rect x=\"3\" y=\"22\" width=\"14\" height=\"6\" rx=\"2\" fill=\"#008676\" />\n <rect x=\"19\" y=\"22\" width=\"14\" height=\"6\" rx=\"2\" fill=\"#D92D6B\" />\n <rect x=\"3\" y=\"11\" width=\"14\" height=\"3\" rx=\"1.5\" fill=\"#333948\" />\n <rect x=\"19\" y=\"11\" width=\"14\" height=\"3\" rx=\"1.5\" fill=\"#335FFC\" />\n <rect x=\"3\" y=\"62\" width=\"30\" height=\"8\" rx=\"2\" fill=\"#008676\" />\n <defs>\n <linearGradient\n id=\"paint0_linear_17647_26849\"\n x1=\"33\"\n y1=\"79.5\"\n x2=\"3\"\n y2=\"79.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import { RefObject, useEffect, useMemo, useRef, useState } from \"react\";\nimport Split from \"@uiw/react-split\";\nimport {\n useAccount,\n useCollateral,\n useLocalStorage,\n useMediaQuery,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { modal } from \"@orderly.network/ui\";\nimport { useSplitPersistent } from \"../../components/desktop/layout/useSplitPersistent\";\nimport { PortfolioSheetWidget } from \"../../components/mobile/portfolioSheet\";\nimport { useTradingLocalStorage } from \"../../hooks/\";\nimport { useTradingPageContext } from \"../../provider/tradingPageContext\";\nimport { TradingPageState } from \"../../types/types\";\nimport { useFirstTimeDeposit } from \"./hooks/useFirstTimeDeposit\";\n\nexport type TradingState = ReturnType<typeof useTradingScript>;\n\nexport const scrollBarWidth = 6;\nexport const topBarHeight = 48;\nexport const bottomBarHeight = 29;\nexport const space = 8;\nexport const symbolInfoBarHeight = 54;\n\nexport const orderEntryMinWidth = 280;\nexport const orderEntryMaxWidth = 360;\n\nexport const orderbookMinWidth = 280;\nexport const orderbookMaxWidth = 732;\n\nexport const orderbookMinHeight = 464;\nexport const orderbookMaxHeight = 728;\n\nexport const tradindviewMinHeight = 320;\n\nexport const tradingViewMinWidth = 540;\n\nexport const dataListMaxHeight = 800;\nexport const dataListInitialHeight = 350;\n\nexport const useTradingScript = () => {\n const [openMarketsSheet, setOpenMarketsSheet] = useState(false);\n const props = useTradingPageContext();\n const { state } = useAccount();\n const { t } = useTranslation();\n const { wrongNetwork, disabledConnect, restrictedInfo, onRouteChange } =\n useAppContext();\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n\n const isFirstTimeDeposit = useFirstTimeDeposit();\n\n const { totalValue } = useCollateral();\n\n const total = useDataTap(totalValue);\n\n /** max-width: 1279px */\n const max2XL = useMediaQuery(\"(max-width: 1279px)\");\n /** min-width: 1440px */\n const min3XL = useMediaQuery(\"(min-width: 1440px)\");\n /** max-width: 1680px */\n const max4XL = useMediaQuery(\"(max-width: 1680px)\");\n\n // Order entry and side market list position, default Order entry in right\n const [layout, setLayout] = useLocalStorage(\n \"orderly_order_entry_side_markets_layout\",\n \"right\",\n );\n\n const canTrade = useMemo<boolean>(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n const onShowPortfolioSheet = () => {\n if (canTrade) {\n modal.sheet({\n title: t(\"trading.asset&Margin\"),\n leading: props.bottomSheetLeading,\n content: <PortfolioSheetWidget />,\n });\n }\n };\n\n const horizontalDraggable = useMemo(() => min3XL, [min3XL]);\n\n const positionsState = useOrderEntryPositions({\n canTrade,\n isFirstTimeDeposit,\n });\n\n const marketsCollapseState = useMarketsCollapse({ collapsable: min3XL });\n\n const observerState = useObserverOrderEntry({ max2XL });\n\n const marketsWidth = marketsCollapseState.collapsed ? 70 : 280;\n const tradindviewMaxHeight = max2XL ? 1200 : 600;\n const dataListMinHeight = canTrade ? 379 : 277;\n\n const splitSizeState = useSplitSize({ dep: layout });\n\n const tradingViewHeightState = useExtraHeight({\n orderEntryViewRef: observerState.orderEntryViewRef,\n tradindviewMaxHeight,\n dataListMinHeight,\n });\n\n const navigateToPortfolio =\n typeof onRouteChange === \"function\"\n ? () => {\n onRouteChange({ href: \"/portfolio\", name: t(\"common.portfolio\") });\n }\n : undefined;\n\n const map = {\n layout,\n onLayout: setLayout,\n max2XL,\n min3XL,\n max4XL,\n canTrade,\n openMarketsSheet,\n onOpenMarketsSheetChange: setOpenMarketsSheet,\n horizontalDraggable,\n ...marketsCollapseState,\n ...positionsState,\n ...splitSizeState,\n ...observerState,\n restrictedInfo,\n ...tradingViewHeightState,\n marketsWidth,\n tradindviewMaxHeight,\n dataListMinHeight,\n total,\n hideAssets,\n setHideAssets,\n onShowPortfolioSheet,\n navigateToPortfolio,\n isFirstTimeDeposit,\n };\n\n return { ...props, ...map } as TradingPageState & typeof map;\n};\n\nfunction useMarketsCollapse(options: { collapsable: boolean }) {\n const { collapsable } = options;\n const [animating, setAnimating] = useState(false);\n\n const [collapsed, setCollapsed] = useLocalStorage<boolean | undefined>(\n \"orderly_side_markets_collapsed\",\n true,\n );\n\n const onCollapse = (collapsed: boolean) => {\n setCollapsed(collapsed);\n setAnimating(true);\n };\n\n const _collapsed = useMemo(() => {\n // under 1440px markets force collapsed\n return collapsable ? collapsed : true;\n }, [collapsable, collapsed]);\n\n return {\n collapsable,\n collapsed: _collapsed,\n onCollapse,\n animating,\n setAnimating,\n };\n}\n\nfunction useOrderEntryPositions(options: {\n canTrade: boolean;\n isFirstTimeDeposit: boolean;\n}) {\n const { canTrade, isFirstTimeDeposit } = options;\n\n const [positions, setPositions] = useLocalStorage(\n \"orderly_assets_orderEntry_margin_positions\",\n [0, 1, 2],\n );\n\n const updatePositions = (currentIdx: number, targetIdx: number) => {\n const pos = [...positions];\n // [0,1,2] => [1,2,0]\n if (currentIdx === 0 && targetIdx === pos.length - 1) {\n pos[targetIdx] = positions[currentIdx];\n for (let i = 0; i < pos.length - 1; i++) {\n pos[i] = positions[i + 1];\n }\n\n // [0,1,2] => [2,0,1]\n } else if (currentIdx === pos.length - 1 && targetIdx === 0) {\n pos[targetIdx] = positions[currentIdx];\n for (let i = 1; i < pos.length; i++) {\n pos[i] = positions[i - 1];\n }\n } else {\n // [0,1,2] => [1,0,2], [0,1,2] => [0,2,1]\n [pos[currentIdx], pos[targetIdx]] = [pos[targetIdx], pos[currentIdx]];\n }\n setPositions(pos);\n };\n\n const showPositionIcon = useMemo(\n () => canTrade && !isFirstTimeDeposit,\n [canTrade, isFirstTimeDeposit],\n );\n\n const pos = useMemo(() => {\n return showPositionIcon ? (positions as number[]) : [0, 1, 2];\n }, [showPositionIcon, positions]);\n\n return {\n positions: pos,\n showPositionIcon,\n updatePositions,\n };\n}\n\nfunction useSplitSize(options: { dep: any }) {\n const { dep } = options;\n const [mainSplitSize, setMainSplitSize] = useSplitPersistent(\n \"orderly_main_split_size\",\n `${orderEntryMinWidth}px`,\n dep,\n );\n const [dataListSplitSize, setDataListSplitSize] = useSplitPersistent(\n \"orderly_datalist_split_size\",\n `${dataListInitialHeight}px`,\n // undefined,\n );\n const [orderBookSplitSize, setOrderbookSplitSize] = useSplitPersistent(\n \"orderly_orderbook_split_size\",\n \"280px\",\n dep,\n );\n\n const [dataListSplitHeightSM, setDataListSplitHeightSM] = useSplitPersistent(\n \"orderly_datalist_split_height_sm\",\n \"350px\",\n );\n\n const [orderBookSplitHeightSM, setOrderbookSplitHeightSM] =\n useSplitPersistent(\"orderly_orderbook_split_height_sm\", \"280px\");\n\n return {\n orderBookSplitSize,\n setOrderbookSplitSize,\n dataListSplitSize,\n setDataListSplitSize,\n mainSplitSize,\n setMainSplitSize,\n dataListSplitHeightSM,\n setDataListSplitHeightSM,\n orderBookSplitHeightSM,\n setOrderbookSplitHeightSM,\n };\n}\n\nfunction useObserverOrderEntry(options: { max2XL: boolean }) {\n const { max2XL } = options;\n const [orderEntryHeight, setOrderEntryHeight] = useState(0);\n const orderEntryViewRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = orderEntryViewRef.current;\n\n if (!element || !max2XL) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const height = entry.contentRect.height;\n if (height) {\n setOrderEntryHeight(height);\n }\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.unobserve(element);\n };\n }, [orderEntryViewRef, max2XL]);\n\n return {\n orderEntryViewRef,\n orderEntryHeight,\n };\n}\n\nexport function getOffsetSizeNum(size: string | null) {\n if (size) {\n return `${100 - Math.min(Number(size), 100)}`;\n }\n return \"\";\n}\n\nfunction useExtraHeight(options: {\n orderEntryViewRef: RefObject<HTMLDivElement>;\n tradindviewMaxHeight: number;\n dataListMinHeight: number;\n}) {\n const { tradindviewMaxHeight, dataListMinHeight } = options;\n const tradingviewAndOrderbookSplitRef = useRef<Split>(null);\n const max2XLSplitRef = useRef<Split>(null);\n\n const [extraHeight, setExtraHeight] = useLocalStorage(\n \"orderly_order_entry_extra_height\",\n 0,\n );\n\n const space = 10 + 12;\n\n const [dataListHeight, setDataListHeight] = useLocalStorage(\n \"orderly_trading_data_list_height\",\n dataListMinHeight,\n );\n\n const onTradingviewAndOrderbookDragging = (\n preSize: number,\n nextSize: number,\n ) => {\n const boxHeight = tradingviewAndOrderbookSplitRef?.current?.boxHeight;\n if (!boxHeight) return;\n\n const splitTradingviewHeight = (boxHeight * preSize) / 100;\n const splitOrderbookHeight = (boxHeight * nextSize) / 100;\n\n const tradingviewHeight = Math.min(\n Math.max(splitTradingviewHeight, tradindviewMinHeight),\n tradindviewMaxHeight,\n );\n\n const orderbookHeight = Math.min(\n Math.max(splitOrderbookHeight, orderbookMinHeight),\n orderbookMaxHeight,\n );\n\n const orderEntryHeight =\n options.orderEntryViewRef.current?.clientHeight || 0;\n\n // console.log(\"tradingviewHeight\", splitTradingviewHeight, tradingviewHeight);\n // console.log(\"orderbookHeight\", splitOrderbookHeight, orderbookHeight);\n\n if (splitOrderbookHeight >= orderbookHeight) {\n const offset = splitOrderbookHeight - orderbookHeight;\n // console.log(\"offset ---\", offset);\n setExtraHeight(Math.max(0, extraHeight - offset));\n } else if (\n tradingviewHeight + orderbookHeight <\n tradindviewMaxHeight + orderbookMaxHeight\n ) {\n const height =\n tradingviewHeight + orderbookHeight + space + symbolInfoBarHeight;\n\n const offset = Math.max(0, height - orderEntryHeight);\n // console.log(\"offset ++++\", height, offset);\n setExtraHeight(extraHeight + offset);\n }\n };\n\n const onDataListSplitHeightDragging = (preSize: number, nextSize: number) => {\n const boxHeight = max2XLSplitRef?.current?.boxHeight;\n if (!boxHeight) return;\n\n // const splitTradingAndOrderbookHeight = (boxHeight * preSize) / 100;\n const splitDataListHeight = (boxHeight * nextSize) / 100;\n\n if (\n splitDataListHeight >= dataListMinHeight &&\n splitDataListHeight <= dataListMaxHeight\n ) {\n setDataListHeight(splitDataListHeight);\n const offset = splitDataListHeight - dataListHeight;\n if (offset > 0) {\n setExtraHeight(Math.max(0, extraHeight - offset));\n }\n }\n };\n\n return {\n max2XLSplitRef,\n tradingviewAndOrderbookSplitRef,\n onTradingviewAndOrderbookDragging,\n onDataListSplitHeightDragging,\n extraHeight,\n dataListHeight,\n };\n}\n","import { useMemo } from \"react\";\n\nexport const useSplitPersistent = (\n key: string,\n defaulValue?: string,\n dep?: any\n): [string | undefined, (size: string) => void] => {\n const size = useMemo(() => {\n const size = localStorage.getItem(key);\n\n if (size) {\n return `${size}%`;\n }\n return defaulValue;\n }, [key, defaulValue, dep]);\n\n const setSize = (size: string) => {\n localStorage.setItem(key, size);\n };\n\n return [size, setSize];\n};\n","import { useMemo } from \"react\";\nimport {\n useAccount,\n useAssetsHistory,\n useCollateral,\n} from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport {\n AccountStatusEnum,\n AssetHistorySideEnum,\n AssetHistoryStatusEnum,\n} from \"@orderly.network/types\";\n\nexport const useFirstTimeDeposit = () => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { totalValue } = useCollateral({\n dp: 2,\n });\n\n const unavailable =\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n const { startTime, endTime } = useMemo(() => {\n const d = new Date();\n // must set last second of today, when wallet ws changed, it will get latest data from api\n const today = new Date(\n d.getFullYear(),\n d.getMonth(),\n d.getDate(),\n 23,\n 59,\n 59,\n );\n\n const endTime = today.getTime();\n // 90 days ago timestamp\n const startTime = endTime - 90 * 24 * 60 * 60 * 1000;\n\n return {\n startTime,\n endTime,\n };\n }, []);\n\n const [_, { meta }] = useAssetsHistory(\n {\n startTime,\n endTime,\n page: 1,\n pageSize: 5,\n side: AssetHistorySideEnum.DEPOSIT,\n status: AssetHistoryStatusEnum.COMPLETED,\n },\n {\n shouldUpdateOnWalletChanged: (data) =>\n data.side === AssetHistorySideEnum.DEPOSIT &&\n data.transStatus === AssetHistoryStatusEnum.COMPLETED,\n },\n );\n\n return !unavailable && totalValue === 0 && meta?.total === 0;\n};\n","import { FC } from \"react\";\nimport { TradingState } from \"./trading.script\";\nimport { MobileLayout } from \"./trading.ui.mobile\";\nimport { DesktopLayout } from \"./trading.ui.desktop\";\nimport { useScreen } from \"@orderly.network/ui\";\n\nexport const Trading: FC<TradingState> = (props) => {\n const { isMobile } = useScreen();\n\n if (isMobile) {\n return <MobileLayout {...props} />;\n }\n\n return (\n <DesktopLayout\n className=\"oui-h-[calc(100vh_-_48px_-_29px)] oui-bg-base-10\"\n {...props}\n />\n );\n};\n","import { useTradingScript } from \"./trading.script\";\nimport { Trading } from \"./trading.ui\";\n\nexport const TradingWidget = () => {\n const state = useTradingScript();\n return <Trading {...state} />;\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { TradingPageState, TradingPageProps } from \"../types/types\";\nimport { getBasicSymbolInfo } from \"../utils/utils\";\nimport { TradingPageContext } from \"./tradingPageContext\";\n\nexport const TradingPageProvider: FC<PropsWithChildren<TradingPageProps>> = (\n props,\n) => {\n const { symbol, children } = props;\n const symbolInfo = useSymbolsInfo()[symbol];\n const memoizedValue = useMemo<TradingPageState>(() => {\n const basicSymbol = getBasicSymbolInfo(symbolInfo);\n return {\n ...props,\n symbolInfo: {\n ...basicSymbol,\n symbol: symbol,\n },\n };\n }, [props, symbol, symbolInfo]);\n return (\n <TradingPageContext.Provider value={memoizedValue}>\n {children}\n </TradingPageContext.Provider>\n );\n};\n","import { TradingPageProvider } from \"../../provider/tradingPageProvider\";\nimport { TradingPageProps } from \"../../types/types\";\nimport { TradingWidget } from \"./trading.widget\";\n\nexport const TradingPage = (props: TradingPageProps) => {\n return (\n <TradingPageProvider\n symbol={props.symbol}\n tradingViewConfig={props.tradingViewConfig}\n onSymbolChange={props.onSymbolChange}\n disableFeatures={props.disableFeatures}\n overrideFeatures={props.overrideFeatures}\n referral={props.referral}\n tradingRewards={props.tradingRewards}\n bottomSheetLeading={props.bottomSheetLeading}\n sharePnLConfig={props.sharePnLConfig}\n >\n <TradingWidget />\n </TradingPageProvider>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/desktop/dataList/dataList.ui.tsx","../src/components/base/positionHeader/positionHeader.ui.tsx","../src/components/base/positionHeader/positionHeader.script.tsx","../src/hooks/useTradingLocalStorage.ts","../src/hooks/usePositionsCount.ts","../src/hooks/usePendingOrderCount.ts","../src/components/base/positionHeader/positionHeader.widget.tsx","../src/provider/tradingPageContext.tsx","../src/components/desktop/dataList/dataList.script.tsx","../src/components/desktop/dataList/setting/setting.ui.tsx","../src/components/desktop/dataList/setting/setting.script.tsx","../src/components/desktop/dataList/setting/setting.widget.tsx","../src/components/desktop/dataList/dataList.widget.tsx","../src/components/base/lastTrades/lastTrades.ui.tsx","../src/components/base/lastTrades/lastTrades.script.tsx","../src/components/base/lastTrades/lastTrades.widget.tsx","../src/components/desktop/assetView/assetView.ui.tsx","../src/components/desktop/assetView/faucet/faucet.ui.tsx","../src/components/desktop/assetView/faucet/faucet.script.tsx","../src/components/desktop/assetView/faucet/faucet.widget.tsx","../src/components/desktop/assetView/assetView.script.tsx","../src/components/desktop/assetView/assetView.widget.tsx","../src/components/base/orderBook/orderBook.ui.tsx","../src/components/desktop/orderBook/index.desktop.tsx","../src/components/base/orderBook/orderContext.tsx","../src/components/desktop/orderBook/asks.desktop.tsx","../src/components/desktop/orderBook/listBox.desktop.tsx","../src/components/desktop/orderBook/cell.desktop.tsx","../src/components/base/orderBook/cellBar.tsx","../src/components/desktop/orderBook/bids.desktop.tsx","../src/components/desktop/orderBook/depthSelect.desktop.tsx","../src/components/desktop/orderBook/header.desktop.tsx","../src/components/desktop/orderBook/markPrice.desktop.tsx","../src/components/base/orderBook/midPriceView.tsx","../src/components/base/orderBook/markPrice.tsx","../src/components/mobile/orderBook/index.tsx","../src/components/mobile/fundingRate/fundingRate.ui.tsx","../src/components/mobile/fundingRate/fundingRate.script.tsx","../src/components/mobile/fundingRateModal/fundingRateModal.widget.tsx","../src/components/mobile/fundingRateModal/fundingRateModal.script.tsx","../src/components/mobile/fundingRateModal/fundingRateModal.ui.tsx","../src/components/mobile/fundingRate/fundingRate.widget.tsx","../src/components/mobile/orderBook/asks.tsx","../src/components/mobile/orderBook/listBox.tsx","../src/components/mobile/orderBook/cell.tsx","../src/components/mobile/orderBook/bids.tsx","../src/components/mobile/orderBook/depthSelect.tsx","../src/components/mobile/orderBook/header.tsx","../src/components/mobile/orderBook/markPrice.tsx","../src/components/base/orderBook/orderBook.script.tsx","../src/utils/utils.ts","../src/components/base/orderBook/orderBook.widget.tsx","../src/components/desktop/riskRate/riskRate.ui.tsx","../src/components/desktop/riskRate/riskRate.script.tsx","../src/components/desktop/riskRate/riskRate.widget.tsx","../src/components/desktop/orderBookAndTrades/orderBookAndTrades.ui.tsx","../src/components/desktop/orderBookAndTrades/orderBookAndTrades.script.tsx","../src/components/desktop/orderBookAndTrades/orderBookAndTrades.widget.tsx","../src/components/desktop/layout/splitLayout/splitLayout.tsx","../src/components/desktop/layout/splitLayout/splitLineBar.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.ui.tsx","../src/components/mobile/bottomNavBar/account/account.widget.tsx","../src/components/mobile/bottomNavBar/account/account.script.tsx","../src/components/mobile/accountSheet/accountSheet.ui.tsx","../src/components/mobile/accountSheet/icons.tsx","../src/components/mobile/accountSheet/accountSheet.script.tsx","../src/components/mobile/accountSheet/accountSheet.widget.tsx","../src/components/mobile/bottomNavBar/account/account.ui.tsx","../src/components/mobile/bottomNavBar/balance/balance.ui.tsx","../src/components/mobile/bottomNavBar/balance/balance.script.tsx","../src/components/mobile/bottomNavBar/balance/balance.widget.tsx","../src/components/mobile/bottomNavBar/chain/chain.ui.tsx","../src/components/mobile/bottomNavBar/chain/chain.script.tsx","../src/components/mobile/bottomNavBar/chain/chain.widget.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.script.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.widget.tsx","../src/components/mobile/portfolioSheet/portfolioSheet.ui.tsx","../src/components/mobile/portfolioSheet/portfolioSheet.script.tsx","../src/components/mobile/portfolioSheet/riskIndicator.tsx","../src/components/mobile/portfolioSheet/portfolioSheet.widget.tsx","../src/pages/trading/trading.ui.tsx","../src/pages/trading/trading.ui.desktop.tsx","../src/components/desktop/layout/removablePanel.tsx","../src/components/desktop/layout/switchLayout.tsx","../src/pages/trading/trading.script.tsx","../src/components/desktop/layout/useSplitPersistent.ts","../src/pages/trading/hooks/useFirstTimeDeposit.ts","../src/pages/trading/trading.ui.mobile.tsx","../src/components/mobile/dataList/dataList.ui.tsx","../src/components/mobile/dataList/dataList.script.tsx","../src/components/mobile/dataList/dataList.widget.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.ui.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.script.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.widget.tsx","../src/components/mobile/topTab/topTab.ui.tsx","../src/components/mobile/lastTrades/lastTrades.widget.tsx","../src/components/mobile/tradeData/tradeData.ui.tsx","../src/components/mobile/tradeData/tradeData.script.tsx","../src/components/mobile/tradeData/tradeData.widget.tsx","../src/components/mobile/tradingview/tradingview.ui.tsx","../src/components/base/icons.tsx","../src/components/mobile/tradingview/tradingview.script.tsx","../src/components/mobile/tradingview/tradingview.widget.tsx","../src/components/mobile/topTab/topTab.script.tsx","../src/components/mobile/topTab/topTab.widget.tsx","../src/pages/trading/trading.widget.tsx","../src/provider/tradingPageProvider.tsx","../src/pages/trading/trading.page.tsx"],"names":["useTranslation","OrderStatus","Box","Divider","Flex","TabPanel","Tabs","DesktopOrderListWidget","TabType","LiquidationWidget","PositionHistoryWidget","PositionsWidget","Checkbox","Statistic","Text","useScreen","Decimal","jsx","jsxs","PositionHeader","props","isMobile","MobileLayout","DesktopLayout","UnrealPnL","Notional","checked","unrealPnLClsName","unrealPnLROIClsName","usePositionStream","useDataTap","useLocalStorage","useTradingLocalStorage","unPnlPriceBasis","setUnPnlPriceBasic","pnlNotionalDecimalPrecision","setPnlNotionalDecimalPrecision","showAllSymbol","setShowAllSymbol","hideAssets","setHideAssets","useMemo","usePositionsCount","symbol","data","count","useOrderStream","AlgoOrderRootType","usePendingOrderCount","pendingOrdersPageSizeKey","tpslOrdersPageSizeKey","pendingOrders","pendingCount","tpslOrders","tpslCount","pendingOrderCount","tpSlOrderCount","usePositionHeaderScript","calcMode","aggregated","unrealPnL","unrealPnlROI","notional","PositionHeaderWidget","state","createContext","useContext","TradingPageContext","useTradingPageContext","useDataListScript","current","sharePnLConfig","includedPendingOrder","localStorage","onSymbolChange","positionCount","useState","Button","DropdownMenuContent","DropdownMenuRoot","DropdownMenuTrigger","SettingFillIcon","Setting","open","setOpen","t","DecimalPrecisionCheckbox","e","UnPnlPriceBasisCheckBox","value","onValueChange","RadioButton","sel","label","onCheckChange","SelIcon","UnselIcon","useSettingScript","SettingWidget","DataList","PositionsView","DataListWidget","cn","Grid","ListView","OrderSide","commifyOptional","LastTrades","Header","List","Row","left","mid","right","classNames","item","index","useMarketTradeStream","useSymbolsInfo","useLastTradesScript","isLoading","config","base","quote","baseDp","quoteDp","LastTradesWidget","useCallback","useAccount","useAppContext","AccountStatusEnum","ArrowDownShortIcon","EyeIcon","EyeCloseIcon","ChevronDownIcon","Tooltip","gradientTextVariants","AuthGuard","LTVRiskTooltipWidget","FaucetUi","useConfig","useMutation","useWalletConnector","ChainNamespace","isTestnet","modal","toast","useFaucetScript","connectedChain","namespace","account","operatorUrl","getTestUSDC","isMutating","loading","setLoading","showFaucet","message","res","resolve","error","FaucetWidget","Fragment","calculateTextColor","val","useCurrentStatusText","wrongNetwork","disabledConnect","statusText","TooltipContent","description","formula","TotalValue","totalValue","visible","onToggleVisibility","AssetDetail","unit","rule","placeholder","LTVDetail","AssetValueList","freeCollateral","marginRatioVal","renderMMR","isConnected","currentLtv","optionsOpen","setOptionsOpen","toggleOpen","prevOpen","showLTV","AssetView","networkId","isFirstTimeDeposit","onDeposit","onWithdraw","onTransfer","toggleVisible","isMainAccount","hasSubAccount","title","titleColor","titleClsName","transferButton","depositButton","withdrawButton","useAccountInstance","useEventEmitter","useCollateral","useMarginRatio","useComputedLTV","DepositAndWithdrawWithDialogId","TransferDialogId","useAssetViewScript","ee","marginRatio","mmr","positionsInfo","openDepositAndWithdraw","viewName","onSettle","setVisible","_freeCollateral","_marginRatioVal","_mmr","_totalValue","AssetViewWidget","useEffect","useRef","EMPTY_LIST","Spinner","React","OrderBookContext","useOrderBookContext","ORDERBOOK_COIN_TYPE_KEY","ORDERBOOK_MOBILE_COIN_TYPE_KEY","OrderBookProvider","mode","setMode","totalMode","setTotalMode","memoizedValue","TooltipTrigger","TooltipRoot","TooltipArrow","parseNumber","getPrecisionByNumber","CellBar","direction","transform","x","DesktopOrderBookCell","cellHeight","showTotal","onItemClick","depth","symbolInfo","currentHover","accumulated","accumulatedAmount","price","quantity","base_dp","quote_dp","coinType","width","dp","totalAmount","isPendingOrder","priceStr","DesktopListBox","type","countQty","findMaxItem","priceDp","maxQty","a","b","hoverIndex","setHoverIndex","Tip","isHover","calcHintInfo","totalInfo","hintInfo","info","content","contentDp","DesktopAsks","max","len","DesktopBids","Select","DesktopDepthSelect","options","d","CaretDownIcon","CaretUpIcon","Popover","Option","onClick","setCoinType","DesktopHeader","popoverOpen","TriggerIcon","Title","children","className","justifyEnd","ArrowUpShortIcon","MiddlePriceView","markPrice","lastPrice","iconSize","prevLastPrice","middlePrice","down","up","SimpleDialog","MarkPriceView","FlagIcon","DesktopMarkPrice","asks","bids","Spread","spread","bid1","ask1","dValue","DesktopOrderBook","onDepthChange","divRef","setShowTotal","resizeObserver","entries","entry","targetDiv","FundingRate","predFundingRate","countDown","useFundingRate","i18n","registerSimpleDialog","registerSimpleSheet","useFundingDetails","useFundingRateModalScript","fundingPeriod","capFunding","floorFunding","FundingRateModal","FundingRateModalWidget","FundingRateDialogId","FundingRateSheetId","useFundingRateScript","FundingRateWidget","OrderBookCell","coinUnit","setCoinUnit","renderCell","ListBox","Asks","Bids","Picker","DepthSelect","_","MarkPrice","OrderBook","useOrderbookStream","removeTrailingZeros","getBasicSymbolInfo","DEFAULT_CELL_HEIGHT","SPACE","useOrderBookScript","height","setCellHeight","level","setLevel","allDepths","usePendingOrderStream","cellsHeight","restSpace","selDepth","depths","OrderBookWidget","EditIcon","LeverageWidgetWithDialogId","RiskRate","riskRate","riskRateColor","currentLeverage","maxLeverage","isHigh","isMedium","isLow","textColor","useLeverage","getRiskRateColor","useRiskRateScript","curLeverage","riskRateNumber","_curLeverage","_maxLeverage","RiskRateWidget","OrderBookAndTrades","TwoColLayout","TabLayout","tab","useOrderBookAndTradesScript","containerSize","setContainerSize","setTab","containerRef","OrderBookAndTradesWidget","forwardRef","Split","SplitLineBar","onMouseDown","rest","disable","filterCls","cls","SplitLayout","ref","onSizeChange","barProps","num","ScanQRCodeWidget","ExtensionPositionEnum","ExtensionSlot","installExtension","ArrowRightShortIcon","HeadIcon","CopyIcon","USDCIcon","size","OrderlyIcon","AccountSheet","AccountInfo","ReferralInfo","TradingRewardsInfo","TWType","useChains","useCurEpochEstimate","useEpochInfo","useReferralInfo","useModal","useAccountSheetScript","linkDeviceStorage","accountId","address","hide","disconnect","chainId","showGetTestUSDC","chainName","useGetChains","onCopyAddress","affiliateCommission30D","traderCommission30D","isAffiliate","isTrader","onClickReferral","useReferral","curEpochId","estRewards","onClickTradingRewards","useTradingRewards","onDisconnect","gettingTestUSDC","_onClickReferral","_onClick","curEpochEstimate","list","curEpoch","mainChains","findByChainId","chain","AccountSheetWidget","useAccountScript","referral","tradingRewards","bottomSheetLeading","formatAddress","Account","MobileAccountMenuExtension","Balance","useBalanceScript","BalanceWidget","ChainIcon","ChainSelectorSheetId","Chain","r","useChainScript","currentChainId","setCurrentChainId","ChainWidget","BottomNavBar","renderContent","LinkDevice","showScanQRCode","showDialog","hideDialog","DesktopIcon","Dot","LinkIcon","MobileIcon","DotIcon","useBottomNavBarScript","BottomNavBarWidget","useId","Trans","ArrowLeftRightIcon","Input","inputFormatter","PlusIcon","ReduceIcon","RefreshIcon","useDebouncedCallback","DepositAndWithdrawWithSheetId","TransferSheetId","usePortfolioSheetScript","assets","useAssets","useMarginRatioAndLeverage","subAccounts","showSliderTip","setShowSliderTip","onSettlePnL","toggleHideAssets","totalCollateral","availableBalance","totalUnrealizedROI","update","leverageLevers","marks","leverage","setLeverage","step","onLeverageChange","onSave","err","onValueCommit","debouncedCommit","onInputChange","parsed","raw","clamped","prev","getMarginRatioColor","imr","high","low","RiskIndicator","PortfolioSheet","Asset","MarginRatio","Buttons","onUnsettleClick","clsName","PortfolioSheetWidget","SideMarketsWidget","SymbolInfoBarFullWidget","TradingviewFullscreenKey","OrderEntryWidget","TradingviewWidget","DepositStatusWidget","RemovablePanel","showIndicator","TopIcon","MiddleIcon","BottomIcon","Icon","idx","IndicatorIcon","CloseIcon","DropdownMenuPortal","SwitchLayout","SwitchLayoutDropDown","LayoutIcon","renderItem","position","OrderEntryIcon","useMediaQuery","useSplitPersistent","key","defaulValue","dep","useAssetsHistory","AssetHistorySideEnum","AssetHistoryStatusEnum","useFirstTimeDeposit","unavailable","startTime","endTime","meta","scrollBarWidth","topBarHeight","bottomBarHeight","space","symbolInfoBarHeight","orderEntryMinWidth","orderEntryMaxWidth","orderbookMinWidth","orderbookMaxWidth","orderbookMinHeight","orderbookMaxHeight","tradindviewMinHeight","tradingViewMinWidth","dataListMaxHeight","dataListInitialHeight","ORDERLY_ORDER_ENTRY_SIDE_MARKETS_LAYOUT","ORDERLY_SIDE_MARKETS_MODE_KEY","useTradingScript","openMarketsSheet","setOpenMarketsSheet","restrictedInfo","onRouteChange","total","max2XL","min3XL","max4XL","layout","setLayout","canTrade","onShowPortfolioSheet","horizontalDraggable","positionsState","useOrderEntryPositions","marketsCollapseState","useMarketsCollapse","observerState","useObserverOrderEntry","marketsWidth","tradindviewMaxHeight","dataListMinHeight","splitSizeState","useSplitSize","tradingViewHeightState","useExtraHeight","map","resizeable","animating","setAnimating","panelSize","setPanelSize","onPanelSizeChange","collapsed","memoizedPanelSize","positions","setPositions","updatePositions","currentIdx","targetIdx","pos","i","showPositionIcon","mainSplitSize","setMainSplitSize","dataListSplitSize","setDataListSplitSize","orderBookSplitSize","setOrderbookSplitSize","dataListSplitHeightSM","setDataListSplitHeightSM","orderBookSplitHeightSM","setOrderbookSplitHeightSM","orderEntryHeight","setOrderEntryHeight","orderEntryViewRef","element","getOffsetSizeNum","tradingviewAndOrderbookSplitRef","max2XLSplitRef","extraHeight","setExtraHeight","dataListHeight","setDataListHeight","preSize","nextSize","boxHeight","splitTradingviewHeight","splitOrderbookHeight","tradingviewHeight","orderbookHeight","offset","splitDataListHeight","onLayout","tradingViewFullScreen","minScreenHeight","minScreenHeightSM","marketsWidget","marketsView","trailing","symbolInfoBarView","library_path","restTradingViewConfig","tradingviewWidget","tradingView","orderbookWidget","orderbookView","dataListWidget","dataListView","assetsOrderEntryMargin","orderEntryWidget","orderEntryView","tradingViewAndOrderbookView","renderTradingViewAndOrderbookView","mainView","MarketsSheetWidget","SymbolInfoBarWidget","SimpleSheet","MobileOrderListWidget","MobileLiquidationWidget","MobilePositionHistoryWidget","MobilePositionsWidget","subTab","setSubTab","cancelAllOrders","cancelAllTPSLOrders","OrdersView","HistoryTab","SymbolControlHeader","OrderBookAndEntry","setHeight","div","useOrderBookAndEntryScript","OrderBookAndEntryWidget","MWebLastTrades","TradeData","showUSDC","useTickerStream","useTradeDataScript","ticker","vol_24h","close","volume","openInterest","TradeDataWidget","KlineDragIcon","TradingviewUi","MaxHeight","MinHeight","Key","useTradingviewScript","dragging","setDragging","dragRef","boxRef","offsetY","setOffsetY","topRef","handleTouchStart","event","rect","handleTouchMove","newHeight","handleTouchEnd","drag","useTopTabScript","TopTab","tradingViewConfig","ChevronIcon","TopTabWidget","MaybeEqual","topBar","Trading","TradingWidget","TradingPageProvider","basicSymbol","TradingPage"],"mappings":"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","sourcesContent":["import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { Box, Divider, Flex, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { DesktopOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport {\n LiquidationWidget,\n PositionHistoryWidget,\n PositionsWidget,\n} from \"@orderly.network/ui-positions\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\nimport { DataListState, DataListTabType } from \"./dataList.script\";\nimport { SettingWidget } from \"./setting\";\n\nexport const DataList: FC<DataListState> = (props) => {\n const { t } = useTranslation();\n\n // return (\n // <DesktopOrderListWidget\n // type={TabType.orderHistory}\n // onSymbolChange={props.onSymbolChange}\n // />\n // );\n return (\n <Tabs\n defaultValue={props.current || DataListTabType.positions}\n variant=\"contained\"\n trailing={\n <SettingWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n setPnlNotionalDecimalPrecision={props.setPnlNotionalDecimalPrecision}\n unPnlPriceBasis={props.unPnlPriceBasis}\n setUnPnlPriceBasic={props.setUnPnlPriceBasic}\n hideOtherSymbols={!props.showAllSymbol}\n setHideOtherSymbols={(value: boolean) =>\n props.setShowAllSymbol(!value)\n }\n />\n }\n size=\"lg\"\n className=\"oui-h-full\"\n classNames={{\n // tabsList: \"oui-px-3\",\n tabsContent: \"oui-h-[calc(100%_-_32px)]\",\n }}\n >\n <TabPanel\n testid=\"oui-testid-dataList-position-tab\"\n value={DataListTabType.positions}\n title={`${t(\"common.positions\")} ${\n (props.positionCount ?? 0) > 0 ? `(${props.positionCount})` : \"\"\n }`}\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-pending-tab\"\n value={DataListTabType.pending}\n title={`${t(\"orders.status.pending\")} ${\n (props.pendingOrderCount ?? 0) > 0\n ? `(${props.pendingOrderCount})`\n : \"\"\n }`}\n >\n <DesktopOrderListWidget\n type={TabType.pending}\n ordersStatus={OrderStatus.INCOMPLETE}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n testIds={{\n tableBody: \"oui-testid-dataList-pending-table-body\",\n }}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-tpsl-tab\"\n value={DataListTabType.tp_sl}\n title={`${t(\"common.tpsl\")} ${\n (props.tpSlOrderCount ?? 0) > 0 ? `(${props.tpSlOrderCount})` : \"\"\n }`}\n >\n <DesktopOrderListWidget\n type={TabType.tp_sl}\n ordersStatus={OrderStatus.INCOMPLETE}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n testIds={{\n tableBody: \"oui-testid-dataList-tpsl-table-body\",\n }}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-filled-tab\"\n value={DataListTabType.filled}\n title={t(\"orders.status.filled\")}\n >\n <DesktopOrderListWidget\n type={TabType.filled}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n ordersStatus={OrderStatus.FILLED}\n onSymbolChange={props.onSymbolChange}\n testIds={{\n tableBody: \"oui-testid-dataList-filled-table-body\",\n }}\n sharePnLConfig={props.sharePnLConfig}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-positionHistory-tab\"\n value={DataListTabType.positionHistory}\n title={t(\"positions.positionHistory\")}\n >\n <PositionHistoryWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n sharePnLConfig={props.sharePnLConfig}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-orderHistory-tab\"\n value={DataListTabType.orderHistory}\n title={t(\"orders.orderHistory\")}\n >\n <DesktopOrderListWidget\n type={TabType.orderHistory}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n testIds={{\n tableBody: \"oui-testid-dataList-orderHistory-table-body\",\n }}\n sharePnLConfig={props.sharePnLConfig}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-liquidation-tab\"\n value={DataListTabType.liquidation}\n title={t(\"positions.liquidation\")}\n >\n <LiquidationWidget\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n />\n </TabPanel>\n </Tabs>\n );\n};\n\nconst PositionsView: FC<DataListState> = (props) => {\n return (\n <Flex direction=\"column\" width=\"100%\" height=\"100%\">\n <PositionHeaderWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n unPnlPriceBasis={props.unPnlPriceBasis}\n />\n <Divider className=\"oui-w-full\" />\n <Box className=\"oui-h-[calc(100%_-_60px)]\" width=\"100%\">\n <PositionsWidget\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n sharePnLConfig={props.sharePnLConfig}\n calcMode={props.calcMode}\n includedPendingOrder={props.includedPendingOrder}\n onSymbolChange={props.onSymbolChange}\n />\n </Box>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport {\n Checkbox,\n Divider,\n Flex,\n Statistic,\n Text,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { PositionHeaderState } from \"./positionHeader.script\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const PositionHeader: FC<PositionHeaderState> = (props) => {\n const { isMobile } = useScreen();\n\n return isMobile ? <MobileLayout {...props} /> : <DesktopLayout {...props} />;\n};\n\nconst MobileLayout: FC<PositionHeaderState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={2}\n width={\"100%\"}\n itemAlign={\"start\"}\n p={2}\n className=\"oui-bg-base-9 oui-rounded-b-xl\"\n >\n <Flex width={\"100%\"} justify={\"between\"}>\n <UnrealPnL\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n root: \"oui-text-sm\",\n }}\n {...props}\n />\n <Notional\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n root: \"oui-text-sm\",\n }}\n {...props}\n />\n </Flex>\n <Divider className=\"oui-w-full\" />\n <Flex className=\"oui-gap-[2px] oui-cursor-pointer\">\n <Checkbox\n id=\"oui-checkbox-hideOtherSymbols\"\n color=\"white\"\n checked={!props.showAllSymbol}\n onCheckedChange={(checked: boolean) => {\n props.setShowAllSymbol(!checked);\n }}\n />\n\n <label\n className=\"oui-text-2xs oui-text-base-contrast-54 oui-cursor-pointer\"\n htmlFor=\"oui-checkbox-hideOtherSymbols\"\n >\n {t(\"trading.hideOtherSymbols\")}\n </label>\n </Flex>\n </Flex>\n );\n};\nconst DesktopLayout: FC<PositionHeaderState> = (props) => {\n return (\n <Flex py={2} px={3} gap={6} width={\"100%\"} justify={\"start\"}>\n <UnrealPnL\n {...props}\n classNames={{ label: \"oui-text-base-contrast-54\" }}\n />\n <Notional\n {...props}\n classNames={{ label: \"oui-text-base-contrast-54\" }}\n />\n </Flex>\n );\n};\n\nconst UnrealPnL: FC<\n PositionHeaderState & {\n classNames?:\n | {\n root?: string;\n label?: string;\n value?: string;\n }\n | undefined;\n }\n> = (props) => {\n const { t } = useTranslation();\n\n const unrealPnLClsName =\n typeof props.unrealPnL === \"number\"\n ? props.unrealPnL >= 0\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\"\n : \"oui-text-base-contrast-80\";\n\n const unrealPnLROIClsName =\n typeof props.unrealPnL === \"number\" && props.unrealPnlROI\n ? props.unrealPnlROI >= 0\n ? \"oui-text-success-darken\"\n : \"oui-text-danger-darken\"\n : \"oui-text-base-contrast-80\";\n\n return (\n <Statistic label={t(\"common.unrealizedPnl\")} classNames={props.classNames}>\n <Flex gap={1}>\n <Text.numeral\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n className={unrealPnLClsName}\n >\n {props.unrealPnL ?? \"--\"}\n </Text.numeral>\n {typeof props.unrealPnlROI !== \"undefined\" && (\n <Text.numeral\n prefix=\"(\"\n suffix=\")\"\n rule=\"percentages\"\n size=\"2xs\"\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n className={unrealPnLROIClsName}\n >\n {props.unrealPnlROI}\n </Text.numeral>\n )}\n </Flex>\n </Statistic>\n );\n};\n\nconst Notional: FC<\n PositionHeaderState & {\n classNames?:\n | {\n root?: string;\n label?: string;\n value?: string;\n }\n | undefined;\n }\n> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Statistic label={t(\"common.notional\")} classNames={props.classNames}>\n <Text.numeral\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n >\n {props.notional ?? \"--\"}\n </Text.numeral>\n </Statistic>\n );\n};\n","import { usePositionStream } from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { useTradingLocalStorage } from \"../../../hooks\";\n\nexport const usePositionHeaderScript = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n}) => {\n const { pnlNotionalDecimalPrecision, unPnlPriceBasis, symbol } = props;\n const calcMode = unPnlPriceBasis;\n\n const [data] = usePositionStream(symbol, {\n calcMode,\n });\n const aggregated = useDataTap(data.aggregated);\n\n const unrealPnL = aggregated?.total_unreal_pnl;\n const unrealPnlROI = aggregated?.unrealPnlROI;\n const notional = aggregated?.notional;\n const { showAllSymbol, setShowAllSymbol } = useTradingLocalStorage();\n\n return {\n pnlNotionalDecimalPrecision,\n unrealPnL,\n unrealPnlROI,\n notional,\n showAllSymbol,\n setShowAllSymbol,\n };\n};\n\nexport type PositionHeaderState = ReturnType<typeof usePositionHeaderScript>;\n","import { useLocalStorage } from \"@orderly.network/hooks\";\n\nexport const useTradingLocalStorage = (props?: {\n pnlNotionalDecimalPrecision?: number;\n}) => {\n const [unPnlPriceBasis, setUnPnlPriceBasic] = useLocalStorage(\n \"unPnlPriceBasis\",\n \"markPrice\",\n );\n const [pnlNotionalDecimalPrecision, setPnlNotionalDecimalPrecision] =\n useLocalStorage(\n \"pnlNotionalDecimalPrecision\",\n props?.pnlNotionalDecimalPrecision ?? 2,\n );\n const [showAllSymbol, setShowAllSymbol] = useLocalStorage(\n \"showAllSymbol\",\n true,\n );\n\n const [hideAssets, setHideAssets] = useLocalStorage(\"hideAssets\", false);\n\n return {\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n showAllSymbol,\n setShowAllSymbol,\n hideAssets,\n setHideAssets,\n };\n};\n","import { useMemo } from \"react\";\nimport { usePositionStream } from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\n\nexport const usePositionsCount = (symbol?: string) => {\n const { showAllSymbol } = useTradingLocalStorage();\n const [data] = usePositionStream(showAllSymbol ? undefined : symbol);\n\n const count = useMemo(() => {\n return data.rows?.length;\n }, [data.rows?.length]);\n\n const positionCount = useDataTap(count) ?? 0;\n\n return {\n positionCount,\n };\n};\n","import { useOrderStream } from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { AlgoOrderRootType, OrderStatus } from \"@orderly.network/types\";\nimport { TabType } from \"@orderly.network/ui-orders\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\n\nexport const usePendingOrderCount = (symbol?: string) => {\n const { showAllSymbol } = useTradingLocalStorage();\n\n const pendingOrdersPageSizeKey = `orderly_${TabType.pending}_pageSize`;\n const tpslOrdersPageSizeKey = `orderly_${TabType.tp_sl}_pageSize`;\n //\n // const [pendingOrderPageSize] = useLocalStorage(pendingOrdersPageSizeKey, 500);\n // const [tpslOrderPageSize] = useLocalStorage(tpslOrdersPageSizeKey, 500);\n\n const [pendingOrders, { total: pendingCount }] = useOrderStream(\n {\n symbol: showAllSymbol ? undefined : symbol,\n status: OrderStatus.INCOMPLETE,\n excludes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n // size: pendingOrderPageSize,\n size: 500,\n // sourceTypeAll: true,\n },\n {\n keeplive: true,\n },\n );\n\n const [tpslOrders, { total: tpslCount }] = useOrderStream(\n {\n symbol: showAllSymbol ? undefined : symbol,\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n // size: tpslOrderPageSize,\n size: 500,\n // sourceTypeAll: true,\n },\n {\n keeplive: true,\n },\n );\n\n const pendingOrderCount = useDataTap(pendingCount) ?? 0;\n const tpSlOrderCount = useDataTap(tpslCount) ?? 0;\n\n return {\n pendingOrderCount,\n tpSlOrderCount,\n };\n};\n","import { usePositionHeaderScript } from \"./positionHeader.script\";\nimport { PositionHeader } from \"./positionHeader.ui\";\n\nexport const PositionHeaderWidget = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n}) => {\n const state = usePositionHeaderScript(props);\n return <PositionHeader {...state}/>;\n};\n","import { createContext, useContext } from \"react\";\nimport { TradingPageState } from \"../types/types\";\n\nexport const TradingPageContext = createContext({} as TradingPageState);\n\nexport const useTradingPageContext = () => {\n return useContext(TradingPageContext);\n};\n","import { PositionsProps } from \"@orderly.network/ui-positions\";\nimport {\n usePendingOrderCount,\n usePositionsCount,\n useTradingLocalStorage,\n} from \"../../../hooks\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport enum DataListTabType {\n positions = \"Positions\",\n pending = \"Pending\",\n tp_sl = \"TP/SL\",\n filled = \"Filled\",\n positionHistory = \"Position history\",\n orderHistory = \"Order history\",\n liquidation = \"Liquidation\",\n}\n\nexport const useDataListScript = (\n props: {\n current?: DataListTabType;\n } & PositionsProps,\n) => {\n const {\n current,\n pnlNotionalDecimalPrecision,\n sharePnLConfig,\n symbol,\n includedPendingOrder,\n } = props;\n const localStorage = useTradingLocalStorage({\n pnlNotionalDecimalPrecision,\n });\n const { onSymbolChange } = useTradingPageContext();\n\n const { positionCount } = usePositionsCount(props.symbol);\n const { pendingOrderCount, tpSlOrderCount } = usePendingOrderCount(\n props.symbol,\n );\n\n return {\n current,\n sharePnLConfig,\n symbol,\n calcMode: localStorage.unPnlPriceBasis,\n includedPendingOrder,\n ...localStorage,\n positionCount,\n pendingOrderCount,\n tpSlOrderCount,\n onSymbolChange,\n };\n};\n\nexport type DataListState = ReturnType<typeof useDataListScript>;\n","import { FC, useCallback, useState } from \"react\";\nimport {\n Button,\n Checkbox,\n Divider,\n DropdownMenuContent,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n SettingFillIcon,\n Text,\n} from \"@orderly.network/ui\";\nimport { SettingState } from \"./setting.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Setting: FC<SettingState> = (props) => {\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n return (\n <Flex gap={0}>\n <Flex gap={1}>\n <Checkbox\n id=\"oui-checkbox-hideOtherSymbols\"\n color=\"white\"\n checked={props.hideOtherSymbols}\n onCheckedChange={(checked: boolean) => {\n props.setHideOtherSymbols(checked);\n }}\n />\n <label\n className=\"oui-text-xs oui-text-base-contrast-54 oui-cursor-pointer\"\n htmlFor=\"oui-checkbox-hideOtherSymbols\"\n >\n {t(\"trading.hideOtherSymbols\")}\n </label>\n </Flex>\n\n <DropdownMenuRoot open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"xs\"\n type=\"button\"\n variant=\"contained\"\n className=\"oui-bg-transparent hover:oui-bg-transparent\"\n >\n <SettingFillIcon\n size={16}\n color=\"white\"\n opacity={1}\n className=\"oui-text-white/[.36] hover:oui-text-white/80\"\n />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"oui-px-5 oui-py-3 oui-w-[360px]\"\n alignOffset={2}\n align=\"end\"\n >\n <div className=\"oui-flex oui-flex-col oui-text-sm\">\n <Text className=\"oui-text-base oui-pb-3\">\n {t(\"trading.portfolioSettings\")}\n </Text>\n <Divider />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n {t(\"trading.portfolioSettings.decimalPrecision\")}\n </Text>\n <DecimalPrecisionCheckbox\n value={props.pnlNotionalDecimalPrecision}\n onValueChange={(e) => {\n props.setPnlNotionalDecimalPrecision(e);\n setOpen(false);\n }}\n />\n <Divider className=\"oui-my-3\" />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n {t(\"trading.portfolioSettings.unrealPnlPriceBasis\")}\n </Text>\n <UnPnlPriceBasisCheckBox\n value={props.unPnlPriceBasis}\n onValueChange={(e) => {\n props.setUnPnlPriceBasic(e);\n setOpen(false);\n }}\n />\n </div>\n </DropdownMenuContent>\n </DropdownMenuRoot>\n </Flex>\n );\n};\n\nconst UnPnlPriceBasisCheckBox = (props: {\n value: string;\n onValueChange: (value: string) => void;\n}) => {\n const { value, onValueChange } = props;\n const { t } = useTranslation();\n\n // \"markPrice\" | \"lastPrice\"\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === \"markPrice\"}\n label={t(\"common.markPrice\")}\n value={\"markPrice\"}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === \"lastPrice\"}\n label={t(\"common.lastPrice\")}\n value={\"lastPrice\"}\n onCheckChange={onValueChange}\n />\n </Flex>\n );\n};\n\nconst DecimalPrecisionCheckbox = (props: {\n value: number;\n onValueChange: (value: number) => void;\n}) => {\n const { value, onValueChange } = props;\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === 0}\n label={1}\n value={0}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === 1}\n label={0.1}\n value={1}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === 2}\n label={0.01}\n value={2}\n onCheckChange={onValueChange}\n />\n </Flex>\n );\n};\n\n// const InnerCheckbox = (props: {\n// sel: boolean;\n// label: any;\n// value: any;\n// onCheckChange: (value: any) => void;\n// }) => {\n// const { sel, label, value, onCheckChange } = props;\n// return (\n// <Flex\n// onClick={(e) => {\n// onCheckChange(value);\n// e.stopPropagation();\n// }}\n// gap={1}\n// >\n// <Checkbox color=\"white\" checked={sel} />\n// <Text size=\"xs\" intensity={sel ? 98 : 54}>\n// {`${label}`}\n// </Text>\n// </Flex>\n// );\n// };\n\nconst RadioButton = (props: {\n sel: boolean;\n label: any;\n value: any;\n onCheckChange: (value: any) => void;\n}) => {\n const { sel, label, value, onCheckChange } = props;\n return (\n <Flex\n onClick={(e) => {\n onCheckChange(value);\n e.stopPropagation();\n }}\n gap={1}\n className=\"oui-cursor-pointer\"\n >\n {sel ? <SelIcon /> : <UnselIcon />}\n <Text size=\"2xs\" intensity={sel ? 98 : 54}>\n {label}\n </Text>\n </Flex>\n );\n};\n\nconst SelIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-white\"\n >\n <path\n d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <circle cx=\"8\" cy=\"8\" r=\"3.333\" />\n </svg>\n );\n};\n\nconst UnselIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n );\n};\n","import { SettingWidgetProps } from \"./setting.widget\";\n\nexport const useSettingScript = (props: SettingWidgetProps) => {\n return {\n ...props,\n };\n};\n\nexport type SettingState = ReturnType<typeof useSettingScript>;\n","import { useSettingScript } from \"./setting.script\";\nimport { Setting } from \"./setting.ui\";\n\nexport type SettingWidgetProps = {\n pnlNotionalDecimalPrecision: any;\n setPnlNotionalDecimalPrecision: (value: number) => void;\n unPnlPriceBasis: any;\n setUnPnlPriceBasic: (value: string) => void;\n hideOtherSymbols: any;\n setHideOtherSymbols: (value: boolean) => void;\n}\n\nexport const SettingWidget = (props: SettingWidgetProps) => {\n const state = useSettingScript(props);\n return <Setting {...state} />;\n};\n","import { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { DataListTabType, useDataListScript } from \"./dataList.script\";\nimport { DataList } from \"./dataList.ui\";\n\nexport const DataListWidget = (\n props: {\n current?: DataListTabType;\n } & PositionsProps\n) => {\n const state = useDataListScript({\n ...props,\n });\n return <DataList {...state} />;\n};\n","import React, { FC, ReactNode } from \"react\";\nimport { Box, cn, Grid, ListView, Text } from \"@orderly.network/ui\";\nimport { LastTradesState } from \"./lastTrades.script\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const LastTrades: FC<\n LastTradesState & {\n classNames?: {\n root?: string;\n list?: string;\n listHeader?: string;\n listItem?: {\n left?: string;\n mid?: string;\n right?: string;\n };\n };\n style?: React.CSSProperties;\n }\n> = (props) => {\n return (\n <Box\n className={cn(\n \"oui-grid oui-grid-rows=[auto,1fr] oui-h-full oui-w-full\",\n props.classNames?.root\n )}\n style={props.style}\n >\n <Box className=\"oui-pr-1\">\n <Header\n base={props.base}\n quote={props.quote}\n className={props.classNames?.listHeader}\n />\n </Box>\n <List\n data={props.data}\n isLoading={props.isLoading}\n baseDp={props.baseDp}\n quoteDp={props.quoteDp}\n classNames={props.classNames?.listItem}\n className={props.classNames?.list}\n />\n </Box>\n );\n};\n\nconst Row = (props: {\n key?: React.Key | null;\n classNames?: {\n root?: string;\n left?: string;\n mid?: string;\n right?: string;\n };\n left: ReactNode | string;\n mid: ReactNode | string;\n right: ReactNode | string;\n}) => {\n const { left, mid, right, classNames } = props;\n return (\n // <Flex\n // key={key}\n // height={20}\n // gap={2}\n // width={\"100%\"}\n // className={cn(\"oui-text-xs oui-tabular-nums\", classNames?.root)}\n // >\n // <Box className={cn(\"oui-flex-1\", classNames?.left)}>{left}</Box>\n // <Box className={cn(\"oui-flex-1\", classNames?.mid)}>{mid}</Box>\n // <Box className={cn(\"oui-flex-1 oui-text-right\", classNames?.right)}>\n // {right}\n // </Box>\n // </Flex>\n\n <Grid\n cols={3}\n gapX={2}\n width=\"100%\"\n className={cn(\"oui-text-xs oui-tabular-nums\", classNames?.root)}\n >\n <div className={cn(\"oui-flex-1\", classNames?.left)}>{left}</div>\n <div className={cn(\"oui-flex-1\", classNames?.mid)}>{mid}</div>\n <div className={cn(\"oui-flex-1 oui-text-right\", classNames?.right)}>\n {right}\n </div>\n </Grid>\n );\n};\n\nconst Header = (props: { base: string; quote: string; className?: string }) => {\n const { t } = useTranslation();\n return (\n <Row\n left={t(\"common.time\")}\n mid={`${t(\"common.price\")}(${props.quote})`}\n right={`${t(\"common.qty\")}(${props.base})`}\n classNames={{\n root: cn(\n \"oui-text-base-contrast-54 oui-h-[32px] oui-sticky\",\n props.className\n ),\n }}\n />\n );\n};\n\nconst List = (props: {\n data?: any[];\n isLoading?: boolean;\n baseDp: number;\n quoteDp: number;\n classNames?: {\n left?: string;\n mid?: string;\n right?: string;\n };\n className?: string;\n}) => {\n return (\n <ListView\n dataSource={props.data}\n className={cn(\n \"oui-last-trades-list\",\n \"oui-w-full oui-h-full\",\n props.className,\n \"oui-overflow-auto\"\n )}\n contentClassName=\"!oui-space-y-0 oui-pr-[-4px]\"\n renderItem={(item, index) => {\n return (\n <Row\n key={index}\n left={\n <Text.formatted rule={\"date\"} formatString=\"HH:mm:ss\">\n {item?.ts}\n </Text.formatted>\n }\n mid={commifyOptional(item?.price, { fix: props.quoteDp })}\n right={commifyOptional(item?.size, { fix: props.baseDp })}\n classNames={{\n left: cn(\"oui-text-base-contrast-80\", props.classNames?.left),\n right: cn(\n item.side === OrderSide.BUY\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\",\n props.classNames?.mid\n ),\n mid: cn(\n item.side === OrderSide.BUY\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\",\n props.classNames?.right\n ),\n }}\n />\n );\n }}\n />\n );\n};\n","import { useMarketTradeStream, useSymbolsInfo } from \"@orderly.network/hooks\";\n\nexport const useLastTradesScript = (symbol: string) => {\n const { data, isLoading } = useMarketTradeStream(symbol);\n // const { quote, quote_dp, base, base_dp } = useContext(SymbolContext);\n const config = useSymbolsInfo()?.[symbol];\n const base = config?.(\"base\");\n const quote = config?.(\"quote\");\n const baseDp = config?.(\"base_dp\");\n const quoteDp = config?.(\"quote_dp\");\n// console.log(\"base, quote\", base, quote, \"baseDp, quoteDp\", baseDp, quoteDp);\n\n return {\n base,\n quote,\n data,\n isLoading,\n baseDp,\n quoteDp,\n };\n};\n\nexport type LastTradesState = ReturnType<typeof useLastTradesScript>;\n","import { useLastTradesScript } from \"./lastTrades.script\";\nimport { LastTrades } from \"./lastTrades.ui\";\n\nexport const LastTradesWidget = (props: {\n symbol: string;\n classNames?: {\n root?: string;\n list?: string;\n listHeader?: string;\n listItem?: {\n left?: string;\n mid?: string;\n right?: string;\n }\n };\n style?: React.CSSProperties;\n}) => {\n const state = useLastTradesScript(props.symbol);\n return <LastTrades {...state} classNames={props.classNames} style={props.style} />;\n};\n","import { FC, useMemo, useState, useCallback, ReactNode } from \"react\";\nimport { useAccount, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Flex,\n Text,\n Box,\n Button,\n ArrowDownShortIcon,\n EyeIcon,\n EyeCloseIcon,\n ChevronDownIcon,\n Tooltip,\n Divider,\n gradientTextVariants,\n cn,\n} from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { LTVRiskTooltipWidget } from \"@orderly.network/ui-order-entry\";\nimport { AssetViewState } from \"./assetView.script\";\nimport { FaucetWidget } from \"./faucet/faucet.widget\";\n\ninterface StatusInfo {\n title: string;\n description: string;\n titleColor?: any;\n titleClsName?: string;\n}\n\ninterface TooltipContentProps {\n description: ReactNode;\n formula: ReactNode;\n}\n\ninterface TotalValueProps {\n totalValue?: number;\n visible?: boolean;\n onToggleVisibility?: () => void;\n}\n\ninterface AssetDetailProps {\n label: string;\n description?: ReactNode;\n formula?: ReactNode;\n visible: boolean;\n value?: number | string;\n unit?: string;\n rule?: \"percentages\";\n isConnected?: boolean;\n showPercentage?: boolean;\n placeholder?: string;\n}\n\ninterface AssetValueListProps {\n visible?: boolean;\n freeCollateral?: number | null;\n marginRatioVal?: number;\n renderMMR?: string | number;\n isConnected: boolean;\n currentLtv?: string | number;\n}\n\nconst calculateTextColor = (val: number): string => {\n if (val >= 0 && val < 50) {\n return \"oui-text-success\";\n } else if (val >= 50 && val < 80) {\n return \"oui-text-warning\";\n } else if (val >= 80) {\n return \"oui-text-danger\";\n } else {\n return \"\";\n }\n};\n\nconst useCurrentStatusText = (): StatusInfo => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { t } = useTranslation();\n\n return useMemo(() => {\n const statusText = {\n wrongNetwork: {\n title: t(\"connector.wrongNetwork\"),\n description: t(\"connector.wrongNetwork.tooltip\"),\n titleColor: \"warning\",\n },\n connectWallet: {\n title: t(\"connector.connectWallet\"),\n description: t(\"connector.trade.connectWallet.tooltip\"),\n titleClsName:\n \"oui-text-transparent oui-bg-clip-text oui-gradient-brand\",\n },\n createAccount: {\n title: t(\"connector.createAccount\"),\n description: t(\"connector.trade.createAccount.tooltip\"),\n titleColor: \"primary\",\n },\n enableTrading: {\n title: t(\"connector.enableTrading\"),\n description: t(\"connector.trade.enableTrading.tooltip\"),\n titleColor: \"primary\",\n },\n empty: {\n title: \"\",\n description: \"\",\n },\n };\n\n if (disabledConnect) {\n return statusText.connectWallet;\n }\n\n if (wrongNetwork) {\n return statusText.wrongNetwork;\n }\n\n // EnableTradingWithoutConnected is enabled trading status, so we don't need to show anything\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return statusText.empty;\n }\n\n if (state.status <= AccountStatusEnum.NotConnected) {\n return statusText.connectWallet;\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return statusText.createAccount;\n }\n\n if (state.status < AccountStatusEnum.EnableTrading) {\n return statusText.enableTrading;\n }\n\n return statusText.empty;\n }, [t, state.status, wrongNetwork, disabledConnect]);\n};\n\nexport const TooltipContent: FC<TooltipContentProps> = (props) => {\n const { description, formula } = props;\n return (\n <div className=\"oui-min-w-[204px] oui-max-w-[240px] oui-text-2xs oui-leading-normal oui-text-base-contrast-80\">\n {typeof description !== \"undefined\" && description !== null && (\n <span>{description}</span>\n )}\n <Divider className=\"oui-border-white/10\" my={2} />\n {typeof formula !== \"undefined\" && formula !== null && (\n <span>{formula}</span>\n )}\n </div>\n );\n};\n\nconst TotalValue: FC<TotalValueProps> = (props) => {\n const { t } = useTranslation();\n const { totalValue, visible = true, onToggleVisibility } = props;\n return (\n <Flex\n direction=\"column\"\n gap={1}\n className=\"oui-text-2xs\"\n itemAlign=\"center\"\n >\n <Text.numeral\n visible={visible}\n weight=\"bold\"\n size=\"2xl\"\n className={gradientTextVariants({ color: \"brand\" })}\n as=\"div\"\n padding={false}\n dp={2}\n >\n {totalValue ?? \"--\"}\n </Text.numeral>\n <Flex gap={1} itemAlign=\"center\">\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n {`${t(\"trading.asset.myAssets\")} (USDC)`}\n </Text>\n <button onClick={onToggleVisibility}>\n {visible ? (\n <EyeIcon size={18} className=\"oui-text-base-contrast-54\" />\n ) : (\n <EyeCloseIcon size={18} className=\"oui-text-base-contrast-54\" />\n )}\n </button>\n </Flex>\n </Flex>\n );\n};\n\nconst AssetDetail: FC<AssetDetailProps> = (props) => {\n const {\n label,\n description,\n formula,\n visible,\n value,\n unit,\n rule,\n placeholder,\n } = props;\n return (\n <Flex justify=\"between\">\n <Tooltip\n className={\"\"}\n content={<TooltipContent description={description} formula={formula} />}\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {label}\n </Text>\n </Tooltip>\n <Text.numeral\n visible={visible}\n size=\"2xs\"\n unit={unit}\n unitClassName=\"oui-text-base-contrast-36 oui-ml-0.5\"\n as=\"div\"\n rule={rule}\n padding={false}\n dp={2}\n // suffix={value && unit}\n placeholder={placeholder}\n >\n {value || \"--\"}\n </Text.numeral>\n </Flex>\n );\n};\n\nconst LTVDetail: FC<Pick<AssetDetailProps, \"value\" | \"visible\">> = (props) => {\n const { visible, value } = props;\n const { t } = useTranslation();\n return (\n <Flex justify=\"between\">\n <Tooltip\n className={cn(\"oui-bg-base-6 oui-p-2\")}\n content={<LTVRiskTooltipWidget />}\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {t(\"transfer.LTV\")}\n </Text>\n </Tooltip>\n <Text\n size=\"2xs\"\n className={cn(\n \"select-none\",\n visible && calculateTextColor(Number(value)),\n )}\n >\n {visible ? `${value}%` : \"*****\"}\n </Text>\n </Flex>\n );\n};\n\nconst AssetValueList: FC<AssetValueListProps> = (props) => {\n const {\n visible = true,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n currentLtv,\n } = props;\n\n const [optionsOpen, setOptionsOpen] = useLocalStorage(\n \"orderly_entry_asset_list_open\",\n false,\n );\n const [open, setOpen] = useState<boolean>(optionsOpen);\n\n const { t } = useTranslation();\n\n const toggleOpen = useCallback(() => {\n setOpen((prevOpen) => !prevOpen);\n setTimeout(() => {\n setOptionsOpen(!open);\n }, 0);\n }, []);\n\n const showLTV =\n typeof currentLtv === \"number\" &&\n !Number.isNaN(currentLtv) &&\n currentLtv > 0;\n\n return (\n <Box className=\"oui-group\">\n <Flex\n justify=\"center\"\n gap={1}\n itemAlign=\"center\"\n className=\"oui-cursor-pointer\"\n onClick={toggleOpen}\n >\n <Divider className=\"oui-flex-1\" />\n <ChevronDownIcon\n size={12}\n color=\"white\"\n className={cn(\"oui-transition-transform\", open && \"oui-rotate-180\")}\n />\n <Divider className=\"oui-flex-1\" />\n </Flex>\n <Box\n style={{ transform: \"translateZ(0)\" }}\n className={cn(\n \"oui-select-none oui-space-y-1.5 oui-overflow-hidden\",\n \"oui-transition-[max-height] oui-duration-150\",\n \"group-hover:oui-will-change-[max-height]\",\n open\n ? showLTV\n ? \"oui-max-h-[94px]\"\n : \"oui-max-h-[69px]\"\n : \"oui-max-h-0\",\n )}\n >\n <AssetDetail\n label={t(\"trading.asset.freeCollateral\")}\n description={t(\"trading.asset.freeCollateral.tooltip\")}\n formula={t(\"trading.asset.freeCollateral.formula\")}\n visible={visible}\n // TODO: change AssetDetail value\n value={freeCollateral! === 0 ? (\"0\" as any) : freeCollateral}\n unit=\"USDC\"\n />\n <AssetDetail\n label={t(\"trading.asset.marginRatio\")}\n description={t(\"trading.asset.marginRatio.tooltip\")}\n formula={t(\"trading.asset.marginRatio.formula\")}\n visible={visible}\n value={marginRatioVal}\n isConnected={isConnected}\n rule=\"percentages\"\n showPercentage={true}\n placeholder=\"--%\"\n />\n <AssetDetail\n label={t(\"trading.asset.maintenanceMarginRatio\")}\n description={t(\"trading.asset.maintenanceMarginRatio.tooltip\")}\n formula={t(\"trading.asset.maintenanceMarginRatio.formula\")}\n visible={visible}\n value={renderMMR}\n rule=\"percentages\"\n showPercentage={true}\n placeholder=\"--%\"\n />\n {showLTV && <LTVDetail visible={visible} value={currentLtv} />}\n </Box>\n </Box>\n );\n};\n\nexport const AssetView: FC<\n AssetViewState & { isFirstTimeDeposit?: boolean }\n> = ({\n networkId,\n isFirstTimeDeposit,\n totalValue,\n onDeposit,\n onWithdraw,\n onTransfer,\n toggleVisible,\n visible,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n isMainAccount,\n hasSubAccount,\n currentLtv,\n}) => {\n const { title, description, titleColor, titleClsName } =\n useCurrentStatusText();\n\n const { t } = useTranslation();\n\n const transferButton = hasSubAccount && (\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={onTransfer}\n data-testid=\"oui-testid-assetView-transfer-button\"\n >\n <Text>{t(\"common.transfer\")}</Text>\n </Button>\n );\n\n const depositButton = isMainAccount && (\n <Button\n data-testid=\"oui-testid-assetView-deposit-button\"\n fullWidth\n size=\"md\"\n onClick={onDeposit}\n >\n {!hasSubAccount && <ArrowDownShortIcon color=\"white\" opacity={1} />}\n <Text>{t(\"common.deposit\")}</Text>\n </Button>\n );\n\n const withdrawButton = isMainAccount && (\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={onWithdraw}\n data-testid=\"oui-testid-assetView-withdraw-button\"\n >\n {!hasSubAccount && (\n <ArrowDownShortIcon\n color=\"white\"\n opacity={1}\n className=\"oui-rotate-180\"\n />\n )}\n <Text>{t(\"common.withdraw\")}</Text>\n </Button>\n );\n\n return (\n <Box className=\"oui-relative\">\n {title && description && (\n <Flex direction=\"column\" gap={1} className=\"oui-mb-[32px]\">\n <Text\n size=\"lg\"\n weight=\"bold\"\n color={titleColor || \"inherit\"}\n className={titleClsName}\n >\n {title}\n </Text>\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-text-center\"\n >\n {description}\n </Text>\n </Flex>\n )}\n <AuthGuard\n networkId={networkId}\n buttonProps={{ size: \"md\", fullWidth: true }}\n >\n {isFirstTimeDeposit && isMainAccount ? (\n <>\n <Box>\n <Flex direction=\"column\" gap={1} className=\"oui-mb-[32px]\">\n <Text.gradient size=\"lg\" weight=\"bold\" color=\"brand\">\n {t(\"trading.asset.startTrading\")}\n </Text.gradient>\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n {t(\"trading.asset.startTrading.description\")}\n </Text>\n </Flex>\n </Box>\n <Button\n data-testid=\"oui-testid-assetView-deposit-button\"\n fullWidth\n size=\"md\"\n onClick={onDeposit}\n >\n <ArrowDownShortIcon color=\"white\" opacity={1} />\n <Text>{t(\"common.deposit\")}</Text>\n </Button>\n\n <Box className=\"oui-mt-3\">\n <FaucetWidget />\n </Box>\n </>\n ) : (\n <Box className=\"oui-space-y-4\">\n <TotalValue\n totalValue={totalValue}\n visible={visible}\n onToggleVisibility={toggleVisible}\n />\n <AssetValueList\n visible={visible}\n freeCollateral={freeCollateral}\n marginRatioVal={marginRatioVal}\n renderMMR={renderMMR}\n isConnected={isConnected}\n currentLtv={currentLtv}\n />\n <Flex\n gap={isMainAccount ? (hasSubAccount ? 2 : 3) : 0}\n itemAlign=\"center\"\n >\n {isMainAccount ? (\n <>\n {depositButton}\n {transferButton}\n {withdrawButton}\n </>\n ) : (\n transferButton\n )}\n </Flex>\n {isMainAccount && <FaucetWidget />}\n </Box>\n )}\n </AuthGuard>\n <div\n className={cn(\n \"oui-absolute oui-inset-0 oui-rotate-180\",\n \"oui-pointer-events-none oui-rounded-2xl oui-blur-[200px]\",\n )}\n style={{\n background:\n \"conic-gradient(from -40.91deg at 40.63% 50.41%, rgba(159, 115, 241, 0) -48.92deg, rgba(242, 98, 181, 0) 125.18deg, #5FC5FF 193.41deg, #FFAC89 216.02deg, #8155FF 236.07deg, #789DFF 259.95deg, rgba(159, 115, 241, 0) 311.08deg, rgba(242, 98, 181, 0) 485.18deg)\",\n }}\n />\n </Box>\n );\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Button } from \"@orderly.network/ui\";\nimport { FaucetState } from \"./faucet.script\";\n\nexport function FaucetUi(props: FaucetState) {\n const { t } = useTranslation();\n\n if (!props.showFaucet) {\n return null;\n }\n\n return (\n <Button\n variant=\"outlined\"\n fullWidth\n size=\"md\"\n onClick={props.getFaucet}\n loading={props.loading}\n className=\"oui-text-primary-light oui-border-primary-light oui-rounded\"\n data-testid=\"oui-testid-assetView-getFaucet-button\"\n >\n {t(\"trading.faucet.getTestUSDC\")}\n </Button>\n );\n}\n","import { useMemo, useState } from \"react\";\nimport {\n useAccount,\n useConfig,\n useMutation,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum, ChainNamespace } from \"@orderly.network/types\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport function useFaucetScript() {\n const { t } = useTranslation();\n const { connectedChain, namespace } = useWalletConnector();\n const { state, account } = useAccount();\n const config = useConfig();\n const operatorUrl = config.get<string>(\"operatorUrl\");\n\n const [getTestUSDC, { isMutating }] = useMutation(\n `${operatorUrl}/v1/faucet/usdc`\n );\n const [loading, setLoading] = useState<boolean>(false);\n\n const showFaucet = useMemo(() => {\n if (!connectedChain || !connectedChain.id) {\n return false;\n }\n return (\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected) &&\n isTestnet(parseInt(connectedChain.id as string))\n );\n }, [state, connectedChain]);\n\n const getFaucet = () => {\n if (loading) {\n return;\n }\n setLoading(true);\n const message = t(\"trading.faucet.getTestUSDC.success\", {\n quantity: namespace === ChainNamespace.solana ? \"100\" : \"1,000\",\n });\n\n return getTestUSDC({\n chain_id: account.walletAdapter?.chainId.toString(),\n user_address: state.address,\n broker_id: config.get(\"brokerId\"),\n }).then(\n (res) => {\n setLoading(false);\n if (res.success) {\n return modal.alert({\n title: t(\"trading.faucet.getTestUSDC\"),\n message,\n onOk: () => {\n return new Promise((resolve) => resolve(true));\n },\n });\n }\n res.message && toast.error(res.message);\n },\n (error: Error) => {\n toast.error(error.message);\n }\n );\n };\n return { getFaucet, showFaucet, loading };\n}\n\nexport type FaucetState = ReturnType<typeof useFaucetScript>;\n","import { FaucetUi } from \"./faucet.ui\";\nimport { useFaucetScript } from \"./faucet.script\";\n\nexport function FaucetWidget() {\n const state = useFaucetScript();\n return (\n <FaucetUi {...state}/>\n )\n}","import { useCallback, useMemo } from \"react\";\nimport {\n useAccountInstance,\n useEventEmitter,\n useLocalStorage,\n useAccount,\n useConfig,\n useCollateral,\n useMarginRatio,\n usePositionStream,\n useComputedLTV,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport {\n DepositAndWithdrawWithDialogId,\n TransferDialogId,\n} from \"@orderly.network/ui-transfer\";\n\nexport const useAssetViewScript = () => {\n const { t } = useTranslation();\n const account = useAccountInstance();\n const ee = useEventEmitter();\n\n const { totalValue } = useCollateral({\n dp: 2,\n });\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n const { state, isMainAccount } = useAccount();\n const { freeCollateral } = useCollateral({\n dp: 2,\n });\n const { marginRatio, mmr } = useMarginRatio();\n const isConnected = state.status >= AccountStatusEnum.Connected;\n const [{ aggregated }, positionsInfo] = usePositionStream();\n const marginRatioVal = useMemo(() => {\n return Math.min(\n 10,\n aggregated.notional === 0\n ? positionsInfo[\"margin_ratio\"](10)!\n : marginRatio,\n );\n }, [marginRatio, aggregated]);\n\n // const renderMMR = useMemo(() => {\n // if (!mmr) {\n // return \"\";\n // }\n // const bigMMR = new Decimal(mmr);\n // return bigMMR.mul(100).todp(2, 0).toFixed(2);\n // }, [mmr]);\n\n const openDepositAndWithdraw = useCallback(\n (viewName: \"deposit\" | \"withdraw\") => {\n // desktop always show dialog\n return modal.show(DepositAndWithdrawWithDialogId, {\n activeTab: viewName,\n });\n },\n [],\n );\n\n const onDeposit = useCallback(async () => {\n return openDepositAndWithdraw(\"deposit\");\n }, []);\n\n const onWithdraw = useCallback(async () => {\n return openDepositAndWithdraw(\"withdraw\");\n }, []);\n\n const onTransfer = useCallback(async () => {\n return modal.show(TransferDialogId);\n }, []);\n\n const onSettle = useCallback(async () => {\n return account\n .settle()\n .catch((e) => {\n if (e.code === -1104) {\n toast.error(t(\"settle.settlement.error\"));\n return Promise.reject(e);\n }\n if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n }\n })\n .then((res) => {\n toast.success(t(\"settle.settlement.requested\"));\n return Promise.resolve(res);\n });\n }, [account, t]);\n\n const [visible, setVisible] = useLocalStorage<boolean>(\n \"orderly_assets_visible\",\n true,\n );\n\n const toggleVisible = useCallback(() => {\n // @ts-ignore\n setVisible((visible: boolean) => {\n return !visible;\n });\n }, [visible]);\n\n const currentLtv = useComputedLTV();\n const _freeCollateral = useDataTap(freeCollateral) ?? undefined;\n const _marginRatioVal = useDataTap(marginRatioVal) ?? undefined;\n const _mmr = useDataTap(mmr) ?? undefined;\n const _totalValue = useDataTap(totalValue) ?? undefined;\n\n return {\n onDeposit,\n onWithdraw,\n onTransfer,\n onSettle,\n visible,\n toggleVisible,\n networkId,\n totalValue: _totalValue,\n status: state.status,\n freeCollateral: _freeCollateral,\n marginRatioVal: _marginRatioVal,\n renderMMR: _mmr,\n isConnected,\n isMainAccount,\n hasSubAccount: !!state.subAccounts?.length,\n currentLtv,\n };\n};\n\nexport type AssetViewState = ReturnType<typeof useAssetViewScript>;\n","import { useAssetViewScript } from \"./assetView.script\";\nimport { AssetView } from \"./assetView.ui\";\n\ntype AssetViewWidgetProps = {\n isFirstTimeDeposit?: boolean;\n};\n\nexport const AssetViewWidget = (props: AssetViewWidgetProps) => {\n const state = useAssetViewScript();\n return <AssetView {...state} isFirstTimeDeposit={props.isFirstTimeDeposit} />;\n};\n","import { FC } from \"react\";\nimport { Box } from \"@orderly.network/ui\";\nimport { DesktopOrderBook } from \"../../desktop/orderBook/index.desktop\";\nimport { OrderBook as MWebOrderBook } from \"../../mobile/orderBook\";\nimport type { OrderBookState } from \"./orderBook.script\";\n\nexport const OrderBook: FC<\n OrderBookState & {\n className?: string;\n }\n> = (props) => {\n return (\n <Box className=\"oui-font-semibold\" width={\"100%\"} height={\"100%\"}>\n {props.isMobile ? (\n <MWebOrderBook\n level={props.level}\n asks={props.asks!}\n bids={props.bids!}\n markPrice={props.markPrice!}\n lastPrice={props.lastPrice!}\n depths={props.depths}\n activeDepth={props.selDepth}\n base={props.base}\n quote={props.quote}\n isLoading={props.isLoading}\n onItemClick={props.onItemClick}\n cellHeight={props.cellHeight}\n onDepthChange={props.onDepthChange}\n className={props.className}\n symbolInfo={props.symbolInfo}\n />\n ) : (\n <DesktopOrderBook\n level={props.level}\n asks={props.asks!}\n bids={props.bids!}\n markPrice={props.markPrice!}\n lastPrice={props.lastPrice!}\n depths={props.depths}\n activeDepth={props.selDepth}\n base={props.base}\n quote={props.quote}\n isLoading={props.isLoading}\n onItemClick={props.onItemClick}\n cellHeight={props.cellHeight}\n onDepthChange={props.onDepthChange}\n className={props.className}\n pendingOrders={props.pendingOrders}\n symbolInfo={props.symbolInfo}\n />\n )}\n </Box>\n );\n};\n","import { FC, useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { EMPTY_LIST } from \"@orderly.network/types\";\nimport { cn, Grid, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport {\n ORDERBOOK_COIN_TYPE_KEY,\n OrderBookProvider,\n} from \"../../base/orderBook/orderContext\";\nimport { DesktopAsks } from \"./asks.desktop\";\nimport { DesktopBids } from \"./bids.desktop\";\nimport { DesktopDepthSelect } from \"./depthSelect.desktop\";\nimport { DesktopHeader } from \"./header.desktop\";\nimport { DesktopMarkPrice } from \"./markPrice.desktop\";\n\nexport interface DesktopOrderBookProps {\n asks: any[];\n bids: any[];\n markPrice: number;\n lastPrice: number[];\n onItemClick?: (item: number[]) => void;\n depths: string[];\n activeDepth?: string;\n onDepthChange?: (depth: number) => void;\n //\n autoSize?: boolean;\n level?: number;\n base: string;\n quote: string;\n\n isLoading?: boolean;\n\n cellHeight?: number;\n\n className?: string;\n pendingOrders?: number[];\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const DesktopOrderBook: FC<DesktopOrderBookProps> = (props) => {\n const { lastPrice, markPrice, quote, base, isLoading, onDepthChange } = props;\n\n const divRef = useRef<HTMLDivElement>(null);\n\n const [showTotal, setShowTotal] = useState(false);\n\n const [coinType, setCoinType] = useLocalStorage(\n ORDERBOOK_COIN_TYPE_KEY,\n base,\n );\n\n useEffect(() => {\n if (coinType !== quote && base) {\n setCoinType(base);\n }\n }, [base, quote]);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { inlineSize: width } = entry.borderBoxSize[0];\n setShowTotal(width >= 360);\n }\n });\n\n const targetDiv = divRef.current;\n\n if (targetDiv) {\n resizeObserver.observe(targetDiv);\n }\n\n return () => {\n if (targetDiv) {\n resizeObserver.unobserve(targetDiv);\n }\n };\n }, []);\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n showTotal={showTotal}\n pendingOrders={props.pendingOrders || EMPTY_LIST}\n symbolInfo={props.symbolInfo}\n >\n <Grid\n cols={1}\n rows={5}\n id=\"oui-orderbook-desktop\"\n ref={divRef}\n className=\"oui-relative oui-size-full oui-grid-rows-[auto,auto,1fr,auto,1fr]\"\n >\n <DesktopDepthSelect\n depths={props.depths}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n <DesktopHeader quote={quote} base={base} />\n <DesktopAsks data={[...props.asks]} />\n <DesktopMarkPrice\n lastPrice={lastPrice}\n markPrice={markPrice}\n asks={[...props.asks]}\n bids={[...props.bids]}\n symbolInfo={props.symbolInfo}\n />\n <DesktopBids data={[...props.bids]} />\n {isLoading && (\n <div className=\"oui-bg-bg-8/70 oui-absolute oui-inset-0 oui-z-10 oui-flex oui-items-center oui-justify-center\">\n <Spinner />\n </div>\n )}\n </Grid>\n </OrderBookProvider>\n );\n};\n","import React, {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useState,\n} from \"react\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { QtyMode, TotalMode } from \"./types\";\n\nexport interface OrderBookContextValue {\n cellHeight: number;\n mode: QtyMode;\n depth?: string;\n onModeChange?: (mode: QtyMode) => void;\n onItemClick?: (item: number[]) => void;\n showTotal: boolean;\n totalMode: TotalMode;\n pendingOrders: ReadonlyArray<number> | number[];\n onTotalModeChange?: (mode: TotalMode) => void;\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const OrderBookContext = createContext({\n cellHeight: 22,\n} as OrderBookContextValue);\n\nexport const useOrderBookContext = () => useContext(OrderBookContext);\n\nexport const ORDERBOOK_COIN_TYPE_KEY = \"orderbook_coin_type\";\n\nexport const ORDERBOOK_MOBILE_COIN_TYPE_KEY = \"orderbook_mobile_coin_unit\";\n\ninterface OrderBookProviderProps {\n cellHeight: number;\n depth?: string;\n showTotal: boolean;\n pendingOrders: ReadonlyArray<number> | number[];\n onItemClick?: (item: number[]) => void;\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const OrderBookProvider: FC<\n PropsWithChildren<OrderBookProviderProps>\n> = (props) => {\n const [mode, setMode] = useState<QtyMode>(\"quantity\");\n const [totalMode, setTotalMode] = useState<QtyMode>(\"quantity\");\n const memoizedValue = React.useMemo<OrderBookContextValue>(() => {\n return {\n cellHeight: props.cellHeight,\n onItemClick: props.onItemClick,\n mode,\n totalMode: totalMode || \"quantity\",\n depth: props.depth,\n onModeChange: setMode,\n onTotalModeChange: setTotalMode,\n showTotal: props.showTotal || false,\n pendingOrders: props.pendingOrders,\n symbolInfo: props.symbolInfo,\n };\n }, [\n mode,\n props.cellHeight,\n props.depth,\n props.onItemClick,\n props.pendingOrders,\n props.showTotal,\n props.symbolInfo,\n totalMode,\n ]);\n return (\n <OrderBookContext.Provider value={memoizedValue}>\n {props.children}\n </OrderBookContext.Provider>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { DesktopListBox } from \"./listBox.desktop\";\n\nexport interface Props {\n data: number[][];\n}\n\nexport const DesktopAsks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n const len = data.length;\n let index = 0;\n\n while (Number.isNaN(max) && index < len) {\n max = data[index][2];\n index++;\n }\n\n return max;\n }, [data]);\n\n return (\n <DesktopListBox\n type={OrderBookCellType.ASK}\n data={data}\n countQty={countQty}\n />\n );\n};\n","import { FC, useCallback, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n TooltipContent,\n TooltipTrigger,\n Text,\n TooltipRoot,\n TooltipArrow,\n cn,\n} from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { DesktopOrderBookCell } from \"./cell.desktop\";\n\ninterface DesktopListBoxProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const DesktopListBox: FC<DesktopListBoxProps> = (props) => {\n const { data, type, countQty } = props;\n const { symbolInfo, depth } = useOrderBookContext();\n\n const findMaxItem = useCallback(() => {\n if ((data?.length || 0) === 0) {\n return null;\n }\n if (type === OrderBookCellType.ASK) {\n const index = data.findIndex((item) => !Number.isNaN(item[0]));\n if (index != -1) {\n return data[index];\n }\n return null;\n } else {\n for (let index = data.length - 1; index >= 0; index--) {\n const item = data[index];\n\n if (!Number.isNaN(item[0])) {\n return item;\n }\n }\n return null;\n }\n }, [data, type]);\n\n const priceDp = useMemo(() => {\n if (depth?.toString().includes(\".\")) {\n return depth.toString().split(\".\")[1].length;\n }\n return 0;\n }, [depth]);\n\n const maxQty = useMemo(() => {\n return data.reduce((a, b) => Math.max(a, b[1]), 0);\n }, [data]);\n\n const [hoverIndex, setHoverIndex] = useState<number>(-1);\n\n return (\n <div className=\"oui-order-book-list oui-flex oui-flex-col oui-gap-px\">\n {data.map((item, index) => {\n return (\n <Tip\n key={index}\n index={index}\n item={item}\n countQty={countQty}\n setHoverIndex={setHoverIndex}\n hoverIndex={hoverIndex}\n type={type}\n maxQty={maxQty}\n priceDp={priceDp}\n symbolInfo={symbolInfo}\n findMaxItem={findMaxItem}\n />\n );\n })}\n </div>\n );\n};\n\nconst Tip: FC<{\n index: number;\n item: any;\n countQty: number;\n setHoverIndex: any;\n type: OrderBookCellType;\n maxQty: number;\n hoverIndex: number;\n priceDp: number;\n // base: any;\n // quote: any;\n // baseDp: number;\n // quoteDp: number;\n findMaxItem: () => number[] | null;\n symbolInfo: BasicSymbolInfo;\n}> = (props) => {\n const {\n index,\n item,\n setHoverIndex,\n type,\n maxQty,\n hoverIndex,\n priceDp,\n countQty,\n symbolInfo,\n } = props;\n\n const { base, quote, base_dp: baseDp, quote_dp: quoteDp } = symbolInfo;\n const { t } = useTranslation();\n\n const isHover =\n hoverIndex !== -1\n ? type === OrderBookCellType.ASK\n ? index >= hoverIndex\n : index <= hoverIndex\n : false;\n\n const [open, setOpen] = useState(false);\n\n const calcHintInfo = (\n item: any,\n ): {\n avgPrice: number;\n sumQty: number;\n sumQtyAmount: number;\n } => {\n if (item === null) {\n return {\n sumQty: 0,\n sumQtyAmount: 0,\n avgPrice: 0,\n };\n }\n let totalInfo = { sumQty: 0, sumQtyAmount: 0 };\n if (!Number.isNaN(item[2])) {\n totalInfo = {\n sumQty: item[2],\n sumQtyAmount: item[3],\n };\n }\n\n return {\n ...totalInfo,\n avgPrice:\n totalInfo.sumQtyAmount == 0\n ? 0\n : totalInfo.sumQtyAmount / totalInfo.sumQty,\n };\n };\n\n const hintInfo = useMemo(() => {\n const info = calcHintInfo(item);\n return info.avgPrice === 0 ? calcHintInfo(props.findMaxItem()) : info;\n }, [item, props]);\n\n return (\n <TooltipRoot open={open} onOpenChange={setOpen}>\n <TooltipTrigger>\n <DesktopOrderBookCell\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n count={countQty}\n type={type}\n accumulatedAmount={item[3]}\n maxQty={maxQty}\n isHover={isHover}\n currentHover={hoverIndex === index}\n symbolInfo={symbolInfo}\n base={base}\n quote={quote}\n onMouseEnter={() => {\n setHoverIndex(index);\n setOpen(true);\n }}\n onMouseLeave={() => {\n setHoverIndex(-1);\n setOpen(false);\n }}\n />\n </TooltipTrigger>\n <TooltipContent\n className={cn(\n \"oui-rounded-base oui-flex oui-w-full oui-max-w-[400px] oui-flex-col oui-gap-2 oui-bg-base-6 oui-p-3 oui-text-2xs oui-shadow-md\",\n // type === OrderBookCellType.ASK ? `oui-mb-${30}` : \"oui-mt-0\"\n )}\n align={type === OrderBookCellType.ASK ? \"end\" : \"start\"}\n alignOffset={-25.4}\n side=\"left\"\n sideOffset={2}\n onPointerEnter={(e) => e.preventDefault()}\n >\n <Row\n title={`${t(\"common.avgPrice\")}≈`}\n content={hintInfo.avgPrice}\n contentDp={priceDp}\n />\n <Row\n title={`${t(\"trading.orderBook.sum\")} (${base})`}\n content={hintInfo.sumQty}\n contentDp={baseDp}\n />\n <Row\n title={`${t(\"trading.orderBook.sum\")} (${quote})`}\n content={hintInfo.sumQtyAmount}\n contentDp={quoteDp}\n />\n\n <TooltipArrow\n className=\"oui-fill-base-6\"\n style={{\n transform:\n type === OrderBookCellType.ASK\n ? \"translateX(80%)\"\n : \"translateX(-80%)\",\n }}\n />\n </TooltipContent>\n </TooltipRoot>\n );\n};\n\nconst Row: FC<{ title: string; content: number; contentDp: number }> = (\n props,\n) => {\n const { title, content, contentDp } = props;\n return (\n <div className=\"oui-flex oui-flex-row oui-justify-between oui-gap-4\">\n <div className=\"oui-text-base-contrast-36\">{title}</div>\n <div className=\"oui-text-right\">\n <Text.numeral dp={contentDp}>{content}</Text.numeral>\n </div>\n </div>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { cn, Divider, parseNumber, Text } from \"@orderly.network/ui\";\nimport { getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { CellBar, CellBarDirection } from \"../../base/orderBook/cellBar\";\nimport {\n ORDERBOOK_COIN_TYPE_KEY,\n useOrderBookContext,\n} from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\n\nexport interface DesktopOrderBookCellProps {\n background: string;\n maxQty: number;\n price: number;\n quantity: number;\n // size: number;\n count: number;\n accumulated: number;\n accumulatedAmount: number;\n type: OrderBookCellType;\n symbolInfo: BasicSymbolInfo;\n base: string;\n quote: string;\n isHover: boolean;\n currentHover: boolean;\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n}\n\nexport const DesktopOrderBookCell: FC<DesktopOrderBookCellProps> = (props) => {\n const { cellHeight, showTotal, onItemClick, depth, pendingOrders } =\n useOrderBookContext();\n const {\n symbolInfo,\n currentHover,\n accumulated,\n accumulatedAmount,\n count,\n price,\n quantity,\n base,\n quote,\n } = props;\n\n const { base_dp, quote_dp } = symbolInfo;\n\n const [coinType] = useLocalStorage<string>(ORDERBOOK_COIN_TYPE_KEY, base);\n\n const width = Number.isNaN(price) ? 0 : (accumulated / count) * 100;\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n const totalAmount = Number.isNaN(accumulated)\n ? \"-\"\n : accumulatedAmount?.toString();\n\n const isPendingOrder = useMemo(() => {\n const priceStr = parseNumber(price, { dp: dp, padding: true });\n return pendingOrders.some(\n (item) => priceStr === parseNumber(item, { dp: dp, padding: true }),\n );\n }, [pendingOrders, price, dp]);\n\n return (\n <div\n className=\"oui-relative oui-flex oui-cursor-pointer oui-flex-row oui-justify-between oui-pl-3 oui-text-xs oui-tabular-nums oui-text-base-contrast-80\"\n style={{ height: `${cellHeight}px` }}\n onClick={() => {\n if (Number.isNaN(price) || Number.isNaN(quantity)) {\n return;\n }\n onItemClick?.([price, quantity]);\n }}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n <div\n className={cn(\n \"oui-mr-2 oui-flex oui-basis-7/12 oui-flex-row oui-items-center\",\n showTotal && \"oui-basis-5/12\",\n )}\n >\n <div\n className={cn(\n \"oui-flex-1 oui-text-left\",\n props.type === OrderBookCellType.ASK\n ? \"oui-text-trade-loss\"\n : \"oui-text-trade-profit\",\n )}\n >\n <Text.numeral dp={dp}>{price}</Text.numeral>\n </div>\n <div className=\"oui-flex-1 oui-text-right oui-text-base-contrast-80\">\n <Text.numeral dp={base_dp}>{quantity}</Text.numeral>\n </div>\n </div>\n <div\n className={cn(\n \"oui-fex-row oui-relative oui-flex oui-basis-5/12 oui-items-center oui-justify-end oui-overflow-hidden\",\n showTotal && \"oui-basis-7/12\",\n )}\n >\n {showTotal ? (\n <>\n <div className={cn(\"oui-flex-1 oui-pr-3 oui-text-right\")}>\n <Text.numeral dp={base_dp} className=\"oui-z-10\">\n {accumulated}\n </Text.numeral>\n </div>\n <div className={cn(\"oui-flex-1 oui-pr-3 oui-text-right\")}>\n <Text.numeral dp={0} className=\"oui-z-10\">\n {totalAmount}\n </Text.numeral>\n </div>\n </>\n ) : (\n <div className={cn(\"oui-flex-1 oui-pr-3 oui-text-right\")}>\n {coinType === base && (\n <Text.numeral dp={base_dp} className=\"oui-z-10\">\n {accumulated}\n </Text.numeral>\n )}\n {coinType === quote && (\n <Text.numeral dp={0} className=\"oui-z-10\">\n {totalAmount}\n </Text.numeral>\n )}\n </div>\n )}\n <CellBar\n width={width}\n direction={CellBarDirection.LEFT_TO_RIGHT}\n className={\n props.type === OrderBookCellType.ASK\n ? \"oui-bg-trade-loss/10\"\n : \"oui-bg-trade-profit/10\"\n }\n />\n </div>\n\n {isPendingOrder && (\n <div\n className={cn(\n \"oui-pointer-events-none oui-absolute oui-left-[4px] oui-size-[4px] oui-rounded-full\",\n props.type === OrderBookCellType.ASK && \"oui-bg-trade-loss\",\n props.type === OrderBookCellType.BID && \"oui-bg-trade-profit\",\n )}\n style={{ top: `${cellHeight / 2 - 2}px` }}\n />\n )}\n\n {props.isHover && (\n <div className=\"oui-absolute oui-inset-0 oui-bg-white oui-opacity-[.12]\" />\n )}\n {currentHover && (\n <div\n className={cn(\n \"oui-absolute oui-inset-x-0\",\n props.type === OrderBookCellType.ASK && \"oui-top-0\",\n props.type === OrderBookCellType.BID && \"oui-bottom-0\",\n )}\n >\n <Divider\n lineStyle=\"dashed\"\n className={cn(\n \"oui-w-full\",\n props.type === OrderBookCellType.BID && \"oui-border-trade-profit\",\n props.type === OrderBookCellType.ASK && \"oui-border-trade-loss\",\n )}\n />\n </div>\n )}\n </div>\n );\n};\n","import { cn } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\nexport enum CellBarDirection {\n LEFT_TO_RIGHT,\n RIGHT_TO_LEFT,\n}\n\ninterface CellBarProps {\n width: number;\n className?: string;\n direction?: CellBarDirection\n}\n\nexport const CellBar: FC<CellBarProps> = (props) => {\n const { direction = CellBarDirection.RIGHT_TO_LEFT } = props;\n const transform = useMemo(() => {\n const x = Math.max(props.width, 0);\n if (direction === CellBarDirection.LEFT_TO_RIGHT) {\n return { transform: `translateX(${x}%)` };\n }\n return { transform: `translateX(-${x}%)` };\n \n }, [props.width]);\n\n return (\n <div\n className={cn(\n \"oui-absolute oui-right-[-100%] oui-top-0 oui-h-full oui-w-full oui-transition-transform oui-pointer-events-none\",\n direction === CellBarDirection.LEFT_TO_RIGHT && \"oui-left-[-100%]\",\n props.className\n )}\n style={transform}\n />\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { DesktopListBox } from \"./listBox.desktop\";\n\nexport interface Props {\n data: any[];\n}\n\nexport const DesktopBids: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n // let len = data.length;\n let index = data.length - 1;\n\n while (Number.isNaN(max) && index > 0) {\n max = data[index][2];\n index--;\n }\n\n return max;\n // return data.length > 0 ? data[data.length - 1][2] : 0;\n }, [data]);\n return (\n <DesktopListBox\n type={OrderBookCellType.BID}\n data={data}\n countQty={countQty}\n />\n );\n};\n","import { Box, Select } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\ninterface DesktopDepthSelectProps {\n depths: string[];\n value?: string;\n onChange?: (depth: number) => void;\n}\n\nexport const DesktopDepthSelect: FC<DesktopDepthSelectProps> = (props) => {\n const options = useMemo(() => {\n return props.depths.map((d) => ({\n value: d,\n label: `${d}`,\n }));\n }, [props.depths]);\n\n return (\n <Box pl={3} width={97} className=\"oui-py-[10px]\">\n <Select.options\n options={options}\n size={\"xs\"}\n value={props.value}\n onValueChange={(value: any) => {\n props.onChange?.(value);\n }}\n />\n </Box>\n );\n};\n","import React, { FC, ReactNode } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n CaretDownIcon,\n CaretUpIcon,\n cn,\n Flex,\n Popover,\n} from \"@orderly.network/ui\";\nimport {\n ORDERBOOK_COIN_TYPE_KEY,\n useOrderBookContext,\n} from \"../../base/orderBook/orderContext\";\n\ninterface DesktopHeaderProps {\n quote: string;\n base: string;\n}\n\nconst Option: React.FC<{\n item: string;\n base: string;\n onClick: React.MouseEventHandler<HTMLElement>;\n}> = (props) => {\n const { item, base, onClick } = props;\n const { t } = useTranslation();\n const [coinType, setCoinType] = useLocalStorage(\n ORDERBOOK_COIN_TYPE_KEY,\n base,\n );\n return (\n <Flex\n justify=\"between\"\n itemAlign=\"center\"\n className={cn(\n \"oui-w-full oui-px-2 oui-py-[3px]\",\n \"oui-cursor-pointer\",\n \"oui-text-xs\",\n \"oui-text-base-contrast-54\",\n \"hover:oui-bg-base-6\",\n \"oui-rounded-[3px]\",\n \"oui-transition-all\",\n coinType === item && \"oui-bg-base-5\",\n )}\n onClick={(e) => {\n setCoinType(item);\n onClick(e);\n }}\n >\n {t(\"common.total\")}({item})\n <div\n className={cn(\n \"oui-transition-all\",\n \"oui-w-1\",\n \"oui-h-1\",\n \"oui-rounded-full\",\n \"oui-bg-gradient-to-r\",\n coinType === item &&\n \"oui-from-[rgb(var(--oui-gradient-brand-start))] oui-to-[rgb(var(--oui-gradient-brand-end))]\",\n )}\n />\n </Flex>\n );\n};\n\nexport const DesktopHeader: FC<DesktopHeaderProps> = (props) => {\n const { base, quote } = props;\n const { showTotal } = useOrderBookContext();\n const { t } = useTranslation();\n const [popoverOpen, setOpen] = React.useState<boolean>(false);\n const [coinType] = useLocalStorage(ORDERBOOK_COIN_TYPE_KEY, base);\n const TriggerIcon = popoverOpen ? CaretUpIcon : CaretDownIcon;\n return (\n <Flex pl={3} justify={\"between\"} className=\"oui-py-[6px]\">\n <Flex\n gap={1}\n className={cn(\"oui-basis-7/12\", showTotal && \"oui-basis-1/2\")}\n >\n <Box width={\"100%\"}>\n <Title\n id=\"oui-order-book-header-price\"\n className=\"oui-text-base-contrast-36\"\n >\n {`${t(\"common.price\")}(${quote})`}\n </Title>\n </Box>\n <Box width={\"100%\"}>\n <Title\n justifyEnd\n id=\"oui-order-book-header-qty\"\n className=\"oui-text-base-contrast-36\"\n >\n {`${t(\"common.qty\")}(${base})`}\n </Title>\n </Box>\n </Flex>\n <Flex\n gap={1}\n pr={3}\n className={cn(\"oui-basis-5/12\", showTotal && \"oui-basis-1/2\")}\n >\n {showTotal ? (\n <>\n <Box className=\"oui-text-base-contrast-36\" width={\"100%\"}>\n <Title id=\"oui-order-book-header-total-quote\" justifyEnd>\n {`${t(\"common.total\")}(${base})`}\n </Title>\n </Box>\n <Box className=\"oui-text-base-contrast-36\" width={\"100%\"}>\n <Title justifyEnd id=\"oui-order-book-header-total-base\">\n {`${t(\"common.total\")}(${quote})`}\n </Title>\n </Box>\n </>\n ) : (\n <Box width={\"100%\"}>\n <Popover\n open={popoverOpen}\n onOpenChange={setOpen}\n contentProps={{ className: cn(\"oui-w-28 oui-p-1\") }}\n content={\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n className={cn(\"oui-w-full oui-gap-0.5\")}\n >\n {[base, quote].map((item) => {\n return (\n <Option\n key={`type-${item}`}\n item={item}\n base={base}\n onClick={() => setOpen(false)}\n />\n );\n })}\n </Flex>\n }\n >\n <Flex\n justify=\"end\"\n itemAlign=\"center\"\n className=\"oui-cursor-pointer oui-select-none oui-text-base-contrast-36 oui-transition-all hover:oui-text-base-contrast\"\n >\n <Title justifyEnd id=\"oui-order-book-header-total-base\">\n {`${t(\"common.total\")}(${coinType})`}\n </Title>\n <TriggerIcon\n color=\"inherit\"\n className=\"oui-size-4 oui-text-3xs\"\n />\n </Flex>\n </Popover>\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<{\n justifyEnd?: boolean;\n id?: string;\n children: ReactNode;\n className?: string;\n}> = (props) => {\n const { children, className, justifyEnd = false } = props;\n return (\n <Flex\n id={props.id}\n className={cn(\n className,\n \"oui-items-end oui-text-xs\",\n justifyEnd && \"oui-justify-end\",\n )}\n >\n {children}\n </Flex>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { cn, Flex, Text, Tooltip } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { MiddlePriceView } from \"../../base/orderBook/midPriceView\";\nimport { MarkPriceView } from \"../../base/orderBook/markPrice\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface DesktopMarkPriceProps {\n markPrice: number;\n lastPrice: number[];\n asks: number[][];\n bids: number[][];\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const DesktopMarkPrice: FC<DesktopMarkPriceProps> = (props) => {\n const { markPrice = 0, lastPrice, asks, bids, symbolInfo } = props;\n const { showTotal } = useOrderBookContext();\n\n return (\n <div className=\"oui-flex oui-flex-row oui-pl-3 oui-tabular-nums oui-justify-between oui-text-base-contrast-80 oui-text-xs oui-relative oui-cursor-pointer oui-py-[6px]\">\n <div\n className={cn(\n \"oui-basis-7/12 oui-flex oui-flex-row oui-items-center oui-mr-2 oui-justify-between\",\n showTotal && \"oui-basis-5/12\"\n )}\n >\n <MiddlePriceView\n markPrice={markPrice}\n lastPrice={lastPrice}\n quote_dp={symbolInfo.quote_dp}\n className=\"oui-text-base\"\n />\n <MarkPriceView markPrice={markPrice} quote_dp={symbolInfo.quote_dp} />\n </div>\n <div\n className={cn(\n \"oui-basis-5/12 oui-flex oui-items-center oui-fex-row oui-overflow-hidden oui-relative oui-justify-end\",\n showTotal && \"oui-basis-7/12\",\n \"oui-pr-3\"\n )}\n >\n <Spread asks={asks} bids={bids} />\n </div>\n </div>\n );\n};\n\nconst Spread: FC<{\n asks: number[][];\n bids: number[][];\n}> = (props) => {\n const { asks, bids } = props;\n\n const { t } = useTranslation();\n\n const spread = useMemo(() => {\n if (bids.length === 0 && asks.length === 0) {\n return 0;\n }\n const bid1 = Number.isNaN(bids[0][0]) ? 0 : bids[0][0];\n const index = asks.reverse().findIndex((item) => !Number.isNaN(item[0]));\n\n let ask1 = 0.0;\n if (index !== -1) {\n ask1 = Number.isNaN(asks[index][0]) ? 0 : asks[index][0];\n }\n const dValue = new Decimal(ask1)\n .sub(bid1)\n .div(new Decimal(ask1).add(bid1).div(2));\n // 0.00006416604461251195\n // 0.000065\n // 0.0065\n return Math.ceil(dValue.toNumber() * 1000000 + 0.1) / 10000;\n }, [asks, bids]);\n\n return (\n <div>\n <Tooltip\n content={t(\"trading.orderBook.spreadRatio.tooltip\")}\n className=\"oui-max-w-[240px]\"\n >\n <Text\n size=\"2xs\"\n intensity={36}\n className={\n \"oui-cursor-pointer oui-underline oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-base-contrast-36\"\n }\n >\n {`${spread}%`}\n </Text>\n </Tooltip>\n </div>\n );\n};\n","import {\n ArrowDownShortIcon,\n ArrowUpShortIcon,\n Box,\n cn,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { FC } from \"react\";\n\n/**\n * default style is desktop effect\n */\nexport const MiddlePriceView: FC<{\n markPrice: number;\n lastPrice: number[];\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const {\n markPrice = 0,\n lastPrice,\n quote_dp,\n className,\n iconSize = 18,\n } = props;\n\n const [prevLastPrice, middlePrice] = lastPrice;\n\n const down = middlePrice < prevLastPrice;\n const up = middlePrice > prevLastPrice;\n\n return (\n <Flex\n gap={1}\n className={cn(\n up ? \"oui-text-trade-profit\" : down ? \"oui-text-trade-loss\" : \"\",\n className\n )}\n >\n <Text.numeral dp={quote_dp} intensity={98}>\n {middlePrice}\n </Text.numeral>\n <Box width={19}>\n {down && (\n <ArrowDownShortIcon size={iconSize} color=\"danger\" opacity={1} />\n )}\n {up && <ArrowUpShortIcon size={iconSize} color=\"success\" opacity={1} />}\n </Box>\n </Flex>\n );\n};\n","import { FC, useState } from \"react\";\nimport {\n Tooltip,\n cn,\n Flex,\n Text,\n SimpleDialog,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\n/**\n * default style is desktop effect\n */\nexport const MarkPriceView: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const { isMobile } = useScreen();\n\n return isMobile ? <MobileLayout {...props} /> : <DesktopLayout {...props} />;\n};\n\nconst DesktopLayout: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const { quote_dp, className, iconSize = 18 } = props;\n const { t } = useTranslation();\n return (\n <Tooltip\n content={t(\"trading.orderBook.markPrice.tooltip\")}\n className=\"oui-max-w-[270px]\"\n >\n <Flex\n gap={1}\n className={cn(\"oui-cursor-pointer oui-text-2xs\", className)}\n >\n <FlagIcon size={iconSize} />\n <Text.numeral\n dp={quote_dp}\n color=\"warning\"\n className=\"oui-underline oui-text-base oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-warning-darken\"\n >\n {props.markPrice}\n </Text.numeral>\n </Flex>\n </Tooltip>\n );\n};\n\nconst MobileLayout: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const { quote_dp, className, iconSize = 18 } = props;\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n return (\n <>\n <Flex\n gap={1}\n className={cn(\"oui-cursor-pointer oui-text-2xs\", className)}\n onClick={() => {\n setOpen(true);\n }}\n >\n <FlagIcon size={iconSize} />\n <Text.numeral\n dp={quote_dp}\n color=\"warning\"\n className=\"oui-underline oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-warning-darken\"\n >\n {props.markPrice}\n </Text.numeral>\n </Flex>\n <SimpleDialog\n size=\"xs\"\n open={open}\n onOpenChange={setOpen}\n title={t(\"common.tips\")}\n actions={{\n primary: {\n label: t(\"common.ok\"),\n onClick: () => setOpen(false),\n },\n }}\n >\n <Text>{t(\"trading.orderBook.markPrice.tooltip\")}</Text>\n </SimpleDialog>\n </>\n );\n};\n\nconst FlagIcon = (props: { size: number }) => {\n return (\n <svg\n width={props.size}\n height={props.size}\n viewBox=\"0 0 18 18\"\n fill=\"currenColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-warning-darken\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.75 1.5a.75.75 0 0 1 .75.75h6a.75.75 0 0 1 .75.75v1.5h3a.75.75 0 0 1 .75.75V12a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75v-1.5H4.5v5.25a.75.75 0 0 1-1.5 0V2.25a.75.75 0 0 1 .75-.75M4.5 9h5.25V3.75H4.5zm6.75-3v3.75a.75.75 0 0 1-.75.75H8.25v.75h5.25V6z\"\n // fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import { FC, useEffect } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { EMPTY_LIST } from \"@orderly.network/types\";\nimport { cn, Flex, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport {\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n OrderBookProvider,\n} from \"../../base/orderBook/orderContext\";\nimport { FundingRateWidget } from \"../fundingRate\";\nimport { Asks } from \"./asks\";\nimport { Bids } from \"./bids\";\nimport { DepthSelect } from \"./depthSelect\";\nimport { Header } from \"./header\";\nimport { MarkPrice } from \"./markPrice\";\n\nexport interface OrderBookProps {\n asks: any[];\n bids: any[];\n markPrice: number;\n lastPrice: number[];\n onItemClick?: (item: number[]) => void;\n depths?: string[];\n activeDepth?: string;\n onDepthChange?: (depth: number) => void;\n //\n autoSize?: boolean;\n level?: number;\n base: string;\n quote: string;\n\n isLoading?: boolean;\n\n cellHeight?: number;\n\n className?: string;\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const OrderBook: FC<OrderBookProps> = (props) => {\n const { lastPrice, markPrice, quote, base, isLoading, onDepthChange } = props;\n\n const symbol = `PERP_${props.symbolInfo.base}_${props.symbolInfo.quote}`;\n\n const [coinUnit, setCoinUnit] = useLocalStorage<\"qty\" | \"base\" | \"quote\">(\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n \"qty\",\n );\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n pendingOrders={EMPTY_LIST}\n showTotal={false}\n symbolInfo={props.symbolInfo}\n >\n <Flex\n direction={\"column\"}\n p={2}\n id=\"oui-orderbook-mobile\"\n className={cn(\"oui-relative oui-size-full\", props.className)}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n <FundingRateWidget symbol={symbol} />\n <Header quote={quote} base={base} />\n <Asks data={props.asks} />\n <MarkPrice lastPrice={lastPrice} markPrice={markPrice} />\n <Bids data={props.bids} />\n <DepthSelect\n depth={props.depths || EMPTY_LIST}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n {isLoading && (\n <div className=\"oui-bg-base-800/70 oui-absolute oui-inset-0 oui-z-10 oui-flex oui-h-full oui-min-h-[420px] oui-items-center oui-justify-center\">\n <Spinner />\n </div>\n )}\n </Flex>\n </OrderBookProvider>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { FundingRateState } from \"./fundingRate.script\";\n\nexport const FundingRate: FC<FundingRateState> = (props) => {\n const { data, onClick } = props;\n const predFundingRate = data.est_funding_rate;\n const countDown = data.countDown;\n const { t } = useTranslation();\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} pb={2}>\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\"\n onClick={onClick}\n >\n {t(\"trading.fundingRate.predFundingRate\")}\n </Text>\n {predFundingRate === null ? (\n \"--\"\n ) : (\n <div className=\"orderly-flex orderly-gap-1 oui-text-2xs oui-text-base-contrast-36\">\n {/* <span className=\"orderly-text-warning-darken\">{`${predFundingRate}%`}</span> */}\n <Text.numeral coloring suffix=\"%\" dp={4}>\n {predFundingRate ?? \"--\"}\n </Text.numeral>\n <span>{\" in\"}</span>\n <span>{\" \" + countDown}</span>\n </div>\n )}\n </Flex>\n );\n};\n","import { useCallback } from \"react\";\nimport { useFundingRate } from \"@orderly.network/hooks\";\nimport { modal } from \"@orderly.network/ui\";\nimport { FundingRateDialogId } from \"../fundingRateModal/fundingRateModal.widget\";\n\nexport const useFundingRateScript = (symbol: string) => {\n const data = useFundingRate(symbol);\n const onClick = useCallback<React.MouseEventHandler<HTMLElement>>(() => {\n modal.show(FundingRateDialogId, { symbol });\n }, [symbol]);\n return {\n data,\n onClick,\n };\n};\n\nexport type FundingRateState = ReturnType<typeof useFundingRateScript>;\n","import React from \"react\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { useFundingRateModalScript } from \"./fundingRateModal.script\";\nimport { FundingRateModal } from \"./fundingRateModal.ui\";\n\nexport const FundingRateModalWidget: React.FC<{ symbol: string }> = (props) => {\n const state = useFundingRateModalScript(props);\n return <FundingRateModal {...state} />;\n};\n\nexport const FundingRateDialogId = \"FundingRateDialogId\";\nexport const FundingRateSheetId = \"FundingRateSheetId\";\n\nregisterSimpleDialog(FundingRateDialogId, FundingRateModalWidget, {\n size: \"md\",\n classNames: { content: \"oui-border oui-border-line-6\" },\n title: () => i18n.t(\"funding.fundingRate\"),\n});\n\nregisterSimpleSheet(FundingRateSheetId, FundingRateModalWidget, {\n title: () => i18n.t(\"funding.fundingRate\"),\n});\n","import { useMemo } from \"react\";\nimport { useFundingDetails } from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\n\ninterface FundingRateOptions {\n symbol: string;\n}\n\nexport const useFundingRateModalScript = (options: FundingRateOptions) => {\n const { data, isLoading } = useFundingDetails(options.symbol);\n\n const fundingPeriod = useMemo(() => {\n if (!data || isLoading) {\n return \"-\";\n }\n return `${data.funding_period}h`;\n }, [data, isLoading]);\n\n const capFunding = useMemo(() => {\n if (!data || isLoading) {\n return \"-\";\n }\n return `${new Decimal(data.cap_funding).mul(100).toNumber()}%`;\n }, [data, isLoading]);\n\n const floorFunding = useMemo(() => {\n if (!data || isLoading) {\n return \"-\";\n }\n return `${new Decimal(data.floor_funding).mul(100).toNumber()}%`;\n }, [data, isLoading]);\n\n return { fundingPeriod, capFunding, floorFunding };\n};\n\nexport type FundingRateModalState = ReturnType<\n typeof useFundingRateModalScript\n>;\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, Divider } from \"@orderly.network/ui\";\nimport type { FundingRateModalState } from \"./fundingRateModal.script\";\n\nexport const FundingRateModal: React.FC<FundingRateModalState> = (props) => {\n const { t } = useTranslation();\n const { fundingPeriod, capFunding, floorFunding } = props;\n return (\n <Flex width={\"100%\"} itemAlign={\"center\"} direction=\"column\" gap={1}>\n <Flex justify=\"between\" itemAlign={\"center\"} width={\"100%\"}>\n <Text intensity={54}>\n {t(\"trading.fundingRate.predFundingRate.interval\")}\n </Text>\n <Text intensity={80}>{fundingPeriod}</Text>\n </Flex>\n <Flex justify=\"between\" itemAlign={\"center\"} width={\"100%\"}>\n <Text intensity={54}>\n {t(\"trading.fundingRate.predFundingRate.cap\")} /\n {t(\"trading.fundingRate.predFundingRate.floor\")}\n </Text>\n <Text intensity={80}>\n {capFunding} / {floorFunding}\n </Text>\n </Flex>\n <Divider my={4} className=\"oui-w-full\" intensity={8} />\n {t(\"markets.symbolInfoBar.predFundingRate.tooltip\")}\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useFundingRateScript } from \"./fundingRate.script\";\nimport { FundingRate } from \"./fundingRate.ui\";\n\nexport const FundingRateWidget: React.FC<{ symbol: string }> = (props) => {\n const state = useFundingRateScript(props.symbol);\n return <FundingRate {...state} />;\n};\n","import { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { ListBox } from \"./listBox\";\n\nexport interface Props {\n data: number[][];\n}\nexport const Asks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n const len = data.length;\n let max = Number.NaN;\n\n let index = 0;\n\n while (Number.isNaN(max) && index < len) {\n max = data[index][2];\n index++;\n }\n\n return max;\n }, [data]);\n return (\n <ListBox type={OrderBookCellType.ASK} data={data} countQty={countQty} />\n );\n};\n","import { FC } from \"react\";\nimport { Box } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { OrderBookCell } from \"./cell\";\n\ninterface OrderBookListProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const ListBox: FC<OrderBookListProps> = (props) => {\n const { data } = props;\n const { mode } = useOrderBookContext();\n return (\n <Box className=\"oui-order-book-list oui-flex oui-w-full oui-flex-col oui-gap-px\">\n {data.map((item, index) => {\n return (\n <OrderBookCell\n key={`item-${index}`}\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n accumulatedAmount={item[3]}\n count={props.countQty}\n type={props.type}\n mode={mode}\n />\n );\n })}\n </Box>\n );\n};\n","import { FC, useContext, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { Box, cn, Flex, Text } from \"@orderly.network/ui\";\nimport { getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { CellBar } from \"../../base/orderBook/cellBar\";\nimport {\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n OrderBookContext,\n} from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType, QtyMode } from \"../../base/orderBook/types\";\n\nexport interface OrderBookCellProps {\n background: string;\n price: number;\n quantity: number;\n accumulatedAmount: number;\n // size: number;\n count: number;\n accumulated: number;\n type: OrderBookCellType;\n mode: QtyMode;\n}\n\nexport const OrderBookCell: FC<OrderBookCellProps> = (props) => {\n const { accumulated, count, quantity, price, type, accumulatedAmount } =\n props;\n\n const width = (accumulated / count) * 100;\n\n const { cellHeight, onItemClick, depth, symbolInfo } =\n useContext(OrderBookContext);\n\n const { base_dp, quote_dp, base, quote } = symbolInfo;\n\n const [coinUnit, setCoinUnit] = useLocalStorage<\"qty\" | \"base\" | \"quote\">(\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n \"qty\",\n );\n\n const totalAmount = Number.isNaN(accumulated)\n ? \"-\"\n : accumulatedAmount?.toString();\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n const renderCell = () => {\n switch (coinUnit) {\n case \"base\":\n return (\n <Text.numeral className=\"oui-text-base-contrast-80\" dp={base_dp}>\n {accumulated}\n </Text.numeral>\n );\n case \"quote\":\n return (\n <Text.numeral className=\"oui-text-base-contrast-80\" dp={0}>\n {totalAmount}\n </Text.numeral>\n );\n default:\n return (\n <Text.numeral className=\"oui-text-base-contrast-80\" dp={base_dp}>\n {Number.isNaN(quantity) ? \"-\" : quantity}\n </Text.numeral>\n );\n }\n };\n\n return (\n <Box\n className={cn(\n \"oui-relative oui-w-full oui-cursor-pointer oui-overflow-hidden oui-text-2xs oui-tabular-nums\",\n )}\n style={{ height: `${cellHeight}px` }}\n onClick={() => {\n if (Number.isNaN(price) || Number.isNaN(quantity)) {\n return;\n }\n onItemClick?.([price, quantity]);\n }}\n >\n <Flex itemAlign=\"center\" justify={\"between\"}>\n <Text.numeral\n color={type === OrderBookCellType.BID ? \"buy\" : \"sell\"}\n dp={dp}\n >\n {price}\n </Text.numeral>\n {renderCell()}\n </Flex>\n {Number.isNaN(width) ? null : (\n <CellBar\n width={width}\n className={cn(\n type === OrderBookCellType.ASK\n ? \"oui-bg-trade-loss/20\"\n : \"oui-bg-trade-profit/20\",\n )}\n />\n )}\n </Box>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { ListBox } from \"./listBox\";\n\nexport interface Props {\n data: any[];\n}\n\nexport const Bids: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n // let len = data.length;\n let index = data.length - 1;\n\n while (Number.isNaN(max) && index > 0) {\n max = data[index][2];\n index--;\n }\n\n return max;\n // return data.length > 0 ? data[data.length - 1][2] : 0;\n }, [data]);\n\n return (\n <ListBox type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { Box, Picker } from \"@orderly.network/ui\";\n\ninterface DepthSelectProps {\n depth: ReadonlyArray<string> | string[];\n value?: string;\n onChange?: (depth: number) => void;\n}\n\nexport const DepthSelect: FC<DepthSelectProps> = (props) => {\n const options = useMemo(() => {\n return props.depth.map((d) => ({\n value: d,\n label: `${d}`,\n }));\n }, [props.depth]);\n return (\n <Box id=\"oui-order-book-depth\" className=\"oui-w-full oui-pt-2\">\n {/* <Select size={\"small\"} value={\"0.001\"} /> */}\n <Picker\n options={options}\n fullWidth\n size={\"sm\"}\n value={props.value}\n className=\"oui-text-2xs oui-text-base-contrast-54\"\n onValueChange={(value) => {\n //\n props.onChange?.(value);\n }}\n />\n </Box>\n );\n};\n","import React, { FC, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n CaretDownIcon,\n CaretUpIcon,\n Flex,\n Picker,\n Text,\n} from \"@orderly.network/ui\";\nimport { SelectOption } from \"@orderly.network/ui/src/select/withOptions\";\nimport { ORDERBOOK_MOBILE_COIN_TYPE_KEY } from \"../../base/orderBook/orderContext\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const Header: FC<Props> = (props) => {\n const { t } = useTranslation();\n\n const { base, quote } = props;\n\n const [coinUnit, setCoinUnit] = useLocalStorage<\"qty\" | \"base\" | \"quote\">(\n ORDERBOOK_MOBILE_COIN_TYPE_KEY,\n \"qty\",\n );\n\n const options = useMemo<SelectOption[]>(() => {\n return [\n {\n value: \"qty\",\n label: `${t(\"common.quantity\")}(${base})`,\n data: [t(\"common.quantity\"), base],\n },\n {\n value: \"base\",\n label: `${t(\"common.total\")}(${base})`,\n data: [t(\"common.total\"), base],\n },\n {\n value: \"quote\",\n label: `${t(\"common.total\")}(${quote})`,\n data: [t(\"common.total\"), quote],\n },\n ];\n }, [t, base, quote]);\n\n return (\n <Flex\n justify={\"between\"}\n width={\"100%\"}\n className=\"oui-py-[5px] oui-text-2xs oui-text-base-contrast-36\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n id=\"oui-order-book-header-price\"\n >\n <Text>{t(\"common.price\")}</Text>\n <Text>{`(${quote})`}</Text>\n </Flex>\n <Picker\n size=\"sm\"\n value={coinUnit}\n onValueChange={setCoinUnit}\n options={options}\n valueRenderer={(_, { open, data }) => {\n return (\n <Flex justify=\"between\" itemAlign=\"center\" gap={1}>\n {Array.isArray(data) && (\n <Flex direction={\"column\"} itemAlign={\"end\"}>\n {data[0] && <Text>{data[0]}</Text>}\n {data[1] && <Text>({data[1]})</Text>}\n </Flex>\n )}\n {open ? (\n <CaretUpIcon size={14} color=\"inherit\" />\n ) : (\n <CaretDownIcon size={14} color=\"inherit\" />\n )}\n </Flex>\n );\n }}\n />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { MarkPriceView } from \"../../base/orderBook/markPrice\";\nimport { MiddlePriceView } from \"../../base/orderBook/midPriceView\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\n\ninterface MarkPriceProps {\n markPrice: number;\n lastPrice: number[];\n}\n\nexport const MarkPrice: FC<MarkPriceProps> = (props) => {\n const { symbolInfo } = useOrderBookContext();\n\n const { quote_dp } = symbolInfo;\n\n return (\n <Flex\n id=\"oui-order-book-mark-price\"\n className=\"oui-py-[6px]\"\n width={\"100%\"}\n justify={\"between\"}\n >\n <MiddlePriceView\n markPrice={props.markPrice}\n lastPrice={props.lastPrice}\n quote_dp={quote_dp}\n className=\"oui-text-sm\"\n iconSize={14}\n />\n <MarkPriceView\n markPrice={props.markPrice}\n quote_dp={quote_dp}\n className=\"oui-text-2xs\"\n iconSize={12}\n />\n </Flex>\n );\n};\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useOrderbookStream,\n useOrderStream,\n useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { removeTrailingZeros } from \"@orderly.network/utils\";\nimport { getBasicSymbolInfo } from \"../../../utils/utils\";\n\nconst CELL_MAX = 30;\nconst DEFAULT_CELL_HEIGHT = 20;\n\nconst SPACE = 104;\n\nexport const useOrderBookScript = (props: {\n symbol: string;\n height?: number;\n}) => {\n const { symbol, height } = props;\n const symbolInfo = useSymbolsInfo()[props.symbol];\n\n const [cellHeight, setCellHeight] = useState(DEFAULT_CELL_HEIGHT);\n\n const [level, setLevel] = useState(10);\n const { base, quote, quote_dp } = getBasicSymbolInfo(symbolInfo);\n // const counter = useRef(0);\n\n const [data, { onDepthChange, isLoading, onItemClick, depth, allDepths }] =\n useOrderbookStream(symbol, undefined, {\n level,\n });\n\n // useEffect(() => {\n // counter.current = 0;\n // }, [symbol]);\n\n const pendingOrders = usePendingOrderStream(symbol);\n useEffect(() => {\n if (height) {\n // setCellHeight(height.content / level);\n const level = Math.floor(\n (height - SPACE) / ((DEFAULT_CELL_HEIGHT + 1) * 2),\n );\n\n const cellsHeight = (DEFAULT_CELL_HEIGHT + 1) * 2 * level;\n\n const restSpace = height - SPACE - cellsHeight;\n\n // console.log(\n // \"restSpace\",\n // level,\n // height,\n // SPACE,\n // cellsHeight,\n // restSpace\n // );\n\n if (restSpace > 10) {\n setCellHeight(DEFAULT_CELL_HEIGHT + restSpace / level / 2);\n } else {\n setCellHeight(DEFAULT_CELL_HEIGHT);\n }\n\n setLevel(level);\n }\n }, [height]);\n\n const selDepth = useMemo(() => {\n if (typeof depth === \"undefined\" || typeof quote_dp === \"undefined\") {\n return undefined;\n }\n // // FIXME: hardcode for now, need to optimize it\n // counter.current++;\n // if (counter.current === 1 && DEFAULT_DEPTH[symbol]) {\n // return DEFAULT_DEPTH[symbol];\n // }\n\n return removeTrailingZeros(depth);\n }, [depth, quote_dp, symbol]);\n\n const depths = useMemo(() => {\n return allDepths?.map((e) => removeTrailingZeros(e)) || [];\n }, [allDepths, quote_dp]);\n\n const { isMobile } = useScreen();\n\n return {\n level,\n asks: data?.asks,\n bids: data?.bids,\n markPrice: data?.markPrice,\n lastPrice: data?.middlePrice,\n depths,\n selDepth,\n base,\n quote,\n isLoading,\n onItemClick,\n cellHeight,\n onDepthChange,\n pendingOrders,\n symbolInfo: getBasicSymbolInfo(symbolInfo),\n isMobile,\n };\n};\n\nexport const usePendingOrderStream = (symbol: string): number[] => {\n const [data] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n symbol: symbol,\n });\n\n const pendingOrders = useMemo(() => {\n const info = data\n ?.filter((item) => item.symbol === symbol)\n .reduce((a, b) => {\n // TODO: check if this is the correct price, when the data is from WS, it crashes\n const price = b.price || b.trigger_price || 0;\n return [...a, price];\n }, []);\n\n return info;\n }, [data, symbol]);\n\n return pendingOrders;\n};\n\nexport type OrderBookState = ReturnType<typeof useOrderBookScript>;\n","import type { API } from \"@orderly.network/types\";\nimport type { BasicSymbolInfo } from \"../types/types\";\n\ntype ValueOf<T> = T[keyof T];\n\nexport const getBasicSymbolInfo = (\n symbolInfo: (\n key?: keyof API.SymbolExt,\n defaultValue?: ValueOf<API.SymbolExt>,\n ) => any,\n): BasicSymbolInfo => {\n return {\n base_dp: symbolInfo(\"base_dp\"),\n quote_dp: symbolInfo(\"quote_dp\"),\n base_tick: symbolInfo(\"base_tick\"),\n base: symbolInfo(\"base\"),\n quote: symbolInfo(\"quote\"),\n };\n};\n","import { useOrderBookScript } from \"./orderBook.script\";\nimport { OrderBook } from \"./orderBook.ui\";\n\nexport const OrderBookWidget = (props: {\n className?: string;\n symbol: string;\n height?: number;\n}) => {\n const state = useOrderBookScript({\n symbol: props.symbol,\n height: props.height,\n });\n return <OrderBook {...state} className={props.className} />;\n};\n","import React, { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport {\n Flex,\n Text,\n Box,\n Tooltip,\n modal,\n gradientTextVariants,\n cn,\n EditIcon,\n} from \"@orderly.network/ui\";\nimport { LeverageWidgetWithDialogId } from \"@orderly.network/ui-leverage\";\nimport { TooltipContent } from \"../assetView/assetView.ui\";\nimport { RiskRateState } from \"./riskRate.script\";\n\nexport const RiskRate: FC<RiskRateState> = (props) => {\n const { riskRate, riskRateColor, currentLeverage, maxLeverage } = props;\n const { isHigh, isMedium, isLow } = riskRateColor;\n const { wrongNetwork } = useAppContext();\n const { t } = useTranslation();\n\n const textColor = wrongNetwork\n ? \"\"\n : isHigh\n ? \"oui-text-danger\"\n : isMedium\n ? \"oui-text-warning-darken\"\n : isLow\n ? gradientTextVariants({ color: \"brand\" })\n : \"\";\n\n const boxClsName = wrongNetwork\n ? \"oui-bg-gradient-to-r oui-opacity-20 oui-from-[#26fefe] oui-via-[#ff7d00] oui-to-[#d92d6b] oui-h-1.5 oui-rounded-full\"\n : isHigh\n ? \"oui-bg-gradient-to-tr oui-from-[#791438] oui-to-[#ff447c] oui-h-1.5 oui-rounded-full\"\n : isMedium\n ? \"oui-bg-gradient-to-tr oui-from-[#792e00] oui-to-[#ffb65d] oui-h-1.5 oui-rounded-full\"\n : isLow\n ? \"oui-bg-gradient-to-tr oui-from-[#59b0fe] oui-to-[#26fefe] oui-h-1.5 oui-rounded-full\"\n : \"oui-bg-gradient-to-r oui-opacity-20 oui-from-[#26fefe] oui-via-[#ff7d00] oui-to-[#d92d6b] oui-h-1.5 oui-rounded-full\";\n\n return (\n <Box data-risk={\"\"} className=\"oui-space-y-2\">\n <Flex\n itemAlign=\"center\"\n justify=\"start\"\n className=\"oui-w-full oui-bg-base-6 oui-rounded-full oui-h-2 oui-px-[1px]\"\n >\n <Box\n className={boxClsName}\n style={\n riskRate && riskRate !== \"--\"\n ? { width: riskRate }\n : { width: \"100%\" }\n }\n />\n </Flex>\n\n <Flex className=\"oui-gap-2\" justify=\"between\">\n <Flex direction=\"column\">\n <Tooltip\n content={\n <TooltipContent\n description={t(\"trading.riskRate.tooltip\")}\n formula={t(\"trading.riskRate.formula\")}\n />\n }\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className={cn(\n \"oui-cursor-pointer\",\n \"oui-border-b oui-border-dashed oui-border-b-white/10\",\n )}\n >\n {t(\"trading.riskRate\")}\n </Text>\n </Tooltip>\n <Text\n size=\"xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className={cn(textColor)}\n >\n {riskRate ?? \"--\"}\n </Text>\n </Flex>\n\n <Flex direction=\"column\">\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className={cn(\n \"oui-cursor-pointer\",\n // add extra bottom border to make height same as risk rate text\n \"oui-border-b oui-border-b-transparent\",\n )}\n >\n {t(\"leverage.maxAccountLeverage\")}\n </Text>\n <Flex className=\"oui-gap-1\">\n <Text.numeral\n dp={2}\n padding={false}\n suffix={currentLeverage ? \"x\" : undefined}\n >\n {currentLeverage ?? \"--\"}\n </Text.numeral>\n\n <span className={\"oui-text-base-contrast-54\"}>/</span>\n\n <button\n className=\"oui-flex oui-items-center oui-gap-1\"\n onClick={() => {\n modal.show(LeverageWidgetWithDialogId, { currentLeverage: 5 });\n }}\n data-testid=\"oui-testid-riskRate-leverage-button\"\n >\n <Text.numeral\n dp={2}\n padding={false}\n suffix={maxLeverage ? \"x\" : undefined}\n data-testid=\"oui-testid-riskRate-leverage-value\"\n >\n {maxLeverage ?? \"--\"}\n </Text.numeral>\n\n {typeof maxLeverage !== \"undefined\" && maxLeverage !== null && (\n <EditIcon size={12} color=\"white\" />\n )}\n </button>\n </Flex>\n </Flex>\n </Flex>\n </Box>\n );\n};\n","import { useMemo } from \"react\";\nimport {\n useAccount,\n useLeverage,\n useMarginRatio,\n} from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nconst getRiskRateColor = (riskRate: null | number) => {\n if (riskRate === null) {\n return { isHigh: false, isMedium: false, isLow: false, isDefault: true };\n }\n\n const isLow = riskRate < 40;\n const isMedium = riskRate >= 40 && riskRate < 80;\n const isHigh = riskRate >= 80;\n const isDefault = !isLow && !isMedium && !isHigh;\n\n return { isHigh, isMedium, isLow, isDefault };\n};\n\nexport const useRiskRateScript = () => {\n const { state } = useAccount();\n\n const isConnected =\n state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n const { marginRatio, currentLeverage, mmr } = useMarginRatio();\n\n const { curLeverage } = useLeverage();\n\n const riskRate = useMemo(() => {\n if (!isConnected || marginRatio === null || mmr === null) {\n return \"--\";\n }\n\n if (marginRatio === 0 || mmr === 0) {\n return \"0%\";\n }\n\n const calculatedRiskRate = new Decimal(mmr)\n .div(marginRatio)\n .mul(100)\n .todp(2, Decimal.ROUND_UP);\n\n // Remove trailing zeroes and add percentage sign\n return `${calculatedRiskRate.toString().replace(/\\.?0+$/, \"\")}%`;\n }, [isConnected, marginRatio, mmr]);\n\n const riskRateNumber = riskRate === \"--\" ? null : parseFloat(riskRate);\n\n const riskRateColor = useMemo(() => {\n return getRiskRateColor(riskRateNumber);\n }, [riskRateNumber]);\n\n const _curLeverage = useDataTap(currentLeverage);\n const _maxLeverage = useDataTap(curLeverage);\n const _riskRate = useDataTap(riskRate);\n\n return {\n riskRate: _riskRate,\n riskRateColor,\n isConnected,\n currentLeverage: _curLeverage,\n maxLeverage: _maxLeverage,\n };\n};\n\nexport type RiskRateState = ReturnType<typeof useRiskRateScript>;\n","import { useRiskRateScript } from \"./riskRate.script\";\nimport { RiskRate } from \"./riskRate.ui\";\n\nexport const RiskRateWidget = () => {\n const state = useRiskRateScript();\n return <RiskRate {...state} />;\n};\n","import { FC } from \"react\";\nimport { Box, cn, Flex, Grid, TabPanel, Tabs, Text } from \"@orderly.network/ui\";\nimport { OrderBookAndTradesState } from \"./orderBookAndTrades.script\";\nimport { OrderBookWidget } from \"../../base/orderBook\";\nimport { LastTradesWidget } from \"../../base/lastTrades\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const OrderBookAndTrades: FC<OrderBookAndTradesState> = (props) => {\n return (\n <div ref={props.containerRef} className=\"oui-h-full\">\n {(props.containerSize?.width || 0) >= 572 ? (\n <TwoColLayout {...props} />\n ) : (\n <TabLayout {...props} />\n )}\n </div>\n );\n};\n\nconst TwoColLayout: FC<OrderBookAndTradesState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Grid\n cols={2}\n width={\"100%\"}\n gap={3}\n className=\"oui-auto-rows-fr\"\n style={{\n height: props.containerSize?.height,\n }}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n // pl={3}\n pt={3}\n pb={3}\n r=\"2xl\"\n className=\"oui-bg-base-9\"\n >\n <Title\n title={t(\"trading.orderBook\")}\n className=\"oui-pl-3 oui-text-sm\"\n />\n <OrderBookWidget\n symbol={props.symbol}\n height={\n props.containerSize\n ? props.containerSize.height - 29 - 24\n : undefined\n }\n />\n </Flex>\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n py={3}\n r=\"2xl\"\n className=\"oui-bg-base-9 oui-h-full\"\n >\n <Title\n title={t(\"trading.lastTrades\")}\n className=\"oui-text-sm oui-px-3\"\n />\n <LastTradesWidget\n symbol={props.symbol}\n style={{\n height: props.containerSize && props.containerSize.height - 29 - 24,\n }}\n classNames={{\n listHeader: \"oui-px-3\",\n list: \"oui-px-3\",\n }}\n />\n </Flex>\n </Grid>\n );\n};\nconst TabLayout: FC<OrderBookAndTradesState & {}> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Box\n // pl={3}\n pt={3}\n pb={3}\n pr={0}\n r=\"2xl\"\n className=\"oui-bg-base-9\"\n style={{\n maxHeight: props.containerSize?.height,\n }}\n >\n <Tabs\n value={props.tab}\n variant=\"contained\"\n onValueChange={(tab) => {\n props.setTab(tab as any);\n }}\n classNames={{\n tabsList: \"oui-pl-3\",\n // tabsContent: props.tab === \"lastTrades\" ? 'oui-pl-3' : ''\n }}\n size=\"lg\"\n >\n <TabPanel value=\"orderBook\" title={t(\"trading.orderBook\")}>\n <OrderBookWidget\n symbol={props.symbol}\n height={\n props.containerSize\n ? props.containerSize.height - 29 - 18\n : undefined\n }\n />\n </TabPanel>\n <TabPanel value=\"lastTrades\" title={t(\"trading.lastTrades\")}>\n <LastTradesWidget\n symbol={props.symbol}\n style={{\n height:\n props.containerSize && props.containerSize.height - 29 - 18,\n }}\n classNames={{\n root: \"oui-pt-[6px]\",\n listHeader: \"oui-px-3\",\n list: \"oui-px-3\",\n }}\n />\n </TabPanel>\n </Tabs>\n </Box>\n );\n};\n\nconst Title = (props: { title: string; className?: string }) => {\n return (\n <Text\n size=\"base\"\n intensity={80}\n className={cn(\"oui-pb-[5px]\", props.className)}\n >\n {props.title}\n </Text>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\n\nexport const useOrderBookAndTradesScript = (symbol: string) => {\n const [containerSize, setContainerSize] = useState<\n | {\n width: number;\n height: number;\n }\n | undefined\n >(undefined);\n\n const [tab, setTab] = useState<\"orderBook\" | \"lastTrades\">(\"orderBook\");\n\n const containerRef = useRef<HTMLDivElement>();\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n const { width, height } = entry.contentRect;\n setContainerSize({\n width,\n height,\n });\n }\n });\n\n const targetDiv = containerRef.current;\n\n if (targetDiv) {\n resizeObserver.observe(targetDiv);\n }\n\n return () => {\n if (targetDiv) {\n resizeObserver.unobserve(targetDiv);\n }\n };\n }, []);\n\n return {\n symbol,\n containerSize,\n containerRef: containerRef as any,\n tab,\n setTab,\n };\n};\n\nexport type OrderBookAndTradesState = ReturnType<\n typeof useOrderBookAndTradesScript\n>;\n","import { useOrderBookAndTradesScript } from \"./orderBookAndTrades.script\";\nimport { OrderBookAndTrades } from \"./orderBookAndTrades.ui\";\n\nexport const OrderBookAndTradesWidget = (props: { symbol: string }) => {\n const state = useOrderBookAndTradesScript(props.symbol);\n return <OrderBookAndTrades {...state} />;\n};\n","import React, { PropsWithChildren, forwardRef } from \"react\";\nimport Split, { SplitProps } from \"@uiw/react-split\";\nimport { SplitLineBar } from \"./splitLineBar\";\n\ntype SplitLayoutProps = PropsWithChildren<SplitProps> & {\n onSizeChange?: (size: string) => void;\n};\n\nexport const SplitLayout = forwardRef<Split, SplitLayoutProps>((props, ref) => {\n const { onSizeChange, ...rest } = props;\n\n return (\n /* @ts-ignore */\n <Split\n ref={ref}\n {...rest}\n lineBar\n renderBar={(barProps: any) => (\n <SplitLineBar {...barProps} mode={props.mode} />\n )}\n onDragEnd={(_, width, num) => {\n // console.log(\"onDragEnd\", width);\n onSizeChange?.(`${width}`);\n }}\n />\n );\n});\n","import React, { HTMLAttributes, useMemo } from \"react\";\nimport { SplitProps } from \"@uiw/react-split\";\nimport { cn } from \"@orderly.network/ui\";\n\nexport type SplitLineBarProps = Pick<SplitProps, \"mode\"> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const SplitLineBar: React.FC<SplitLineBarProps> = (props) => {\n const { onMouseDown, mode = \"horizontal\", ...rest } = props;\n\n const disable = useMemo(\n () => props.className?.split(\" \").includes(\"disable\"),\n [props.className],\n );\n\n const filterCls = useMemo(\n () => props.className?.split(\" \").filter((cls) => cls !== \"disable\"),\n [props.className],\n );\n\n return (\n <div\n {...rest}\n className={cn(\n filterCls,\n \"!oui-transition-none\",\n \"!oui-shadow-none !oui-bg-transparent\",\n \"hover:!oui-bg-primary-light hover:!oui-shadow-[0px_0px_4px_0px] hover:!oui-shadow-primary-light/80\",\n \"active:!oui-bg-primary-light active:!oui-shadow-[0px_0px_4px_0px] active:!oui-shadow-primary-light/80\",\n \"focus:!oui-bg-primary-light focus:!oui-shadow-[0px_0px_4px_0px] focus:!oui-shadow-primary-light/80\",\n mode === \"horizontal\"\n ? \"!oui-w-[2px] !oui-min-w-[2px] !oui-mx-[3px]\"\n : \"!oui-h-[2px] !oui-min-h-[2px] !oui-my-[3px]\",\n disable && \"oui-pointer-events-none\",\n )}\n >\n <div\n onMouseDown={onMouseDown}\n className={cn(\n \"!oui-transition-none\",\n mode === \"horizontal\" ? \"after:!oui-w-[2px]\" : \"after:!oui-h-[2px]\",\n \"after:!oui-bg-transparent after:!oui-shadow-transparent\",\n )}\n />\n </div>\n );\n};\n","import { FC, SVGProps, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Flex, SimpleDialog, Text } from \"@orderly.network/ui\";\nimport { ScanQRCodeWidget } from \"@orderly.network/ui-scaffold\";\nimport { MobileAccountMenuExtension } from \"./account/account.widget\";\nimport { BalanceWidget } from \"./balance\";\nimport { BottomNavBarState } from \"./bottomNavBar.script\";\nimport { ChainWidget } from \"./chain\";\n\nexport const BottomNavBar: FC<BottomNavBarState> = (props) => {\n const renderContent = () => {\n if (props.wrongNetwork) {\n return null;\n }\n\n if (\n !props.disabledConnect &&\n props.status === AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n return <LinkDevice onDisconnect={props.onDisconnect} />;\n }\n\n return <ChainWidget />;\n };\n\n const showScanQRCode =\n !props.disabledConnect &&\n props.status !== AccountStatusEnum.EnableTradingWithoutConnected &&\n props.status < AccountStatusEnum.EnableTrading;\n\n return (\n <div className=\"oui-bg-base-9 oui-border-t oui-border-line-4\">\n <Flex\n height={64}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-px-[14px]\"\n // style={{\n // height: \"calc(64px + env(safe-area-inset-bottom))\"\n // }}\n >\n <BalanceWidget />\n <Flex gap={2}>\n {showScanQRCode && <ScanQRCodeWidget />}\n {renderContent()}\n <MobileAccountMenuExtension />\n </Flex>\n </Flex>\n <div className=\"oui-h-[env(safe-area-inset-bottom)]\" />\n </div>\n );\n};\n\ntype LinkDeviceProps = {\n onDisconnect: () => void;\n};\n\nconst LinkDevice: FC<LinkDeviceProps> = (props) => {\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"common.tips\")}\n size=\"xs\"\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: hideDialog,\n size: \"md\",\n fullWidth: true,\n },\n primary: {\n label: t(\"connector.disconnect\"),\n onClick: async () => {\n await props.onDisconnect();\n hideDialog();\n },\n size: \"md\",\n variant: \"outlined\",\n color: \"danger\",\n },\n }}\n >\n <Text intensity={54} size=\"sm\">\n {t(\"linkDevice.scanQRCode.connected.description\")}\n </Text>\n </SimpleDialog>\n <Flex\n className=\"oui-text-base-contrast oui-px-[6px]\"\n intensity={500}\n height={28}\n r=\"md\"\n onClick={showDialog}\n >\n <DesktopIcon />\n <Dot />\n <LinkIcon />\n <Dot />\n <MobileIcon />\n </Flex>\n </>\n );\n};\n\nconst Dot = () => {\n return (\n <Flex className=\"oui-gap-x-[1px] oui-px-[1px]\">\n <DotIcon />\n <DotIcon />\n <DotIcon />\n </Flex>\n );\n};\n\nconst DesktopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M4.5 2.93a2.25 2.25 0 0 0-2.25 2.25v5.25a.75.75 0 0 0-.75.75v1.5c0 1.272.93 2.25 2.25 2.25h10.5c1.318 0 2.25-.978 2.25-2.25v-1.5a.75.75 0 0 0-.75-.75V5.18a2.25 2.25 0 0 0-2.25-2.25zm0 1.5h9a.75.75 0 0 1 .75.75v5.25H3.75V5.18a.75.75 0 0 1 .75-.75M3 11.93h12v.75c0 .46-.277.75-.75.75H3.75c-.474 0-.75-.29-.75-.75z\" />\n </svg>\n);\n\nconst MobileIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M13.498 3.715a2.25 2.25 0 0 0-2.25-2.25h-4.5a2.25 2.25 0 0 0-2.25 2.25v10.5a2.25 2.25 0 0 0 2.25 2.25h4.5a2.25 2.25 0 0 0 2.25-2.25zm-1.5 0v9.75h-6v-9.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75m-2.25 11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0\" />\n </svg>\n);\n\nconst LinkIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.007 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0m7.486-2.344A.6.6 0 0 1 8.91 3.5c.15 0 .305.048.418.156a.55.55 0 0 1 0 .798L5.254 8.337a.62.62 0 0 1-.837 0L2.67 6.673a.55.55 0 0 1 0-.798.62.62 0 0 1 .837 0l1.329 1.266z\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"11.007\"\n y1=\"5.999\"\n x2=\"1.007\"\n y2=\"5.999\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nconst DotIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"2\"\n height=\"2\"\n viewBox=\"0 0 2 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M.667.334a.667.667 0 1 1 0 1.333.667.667 0 0 1 0-1.333\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"1.333\"\n y1=\"1.001\"\n x2=\"0\"\n y2=\"1.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import { ExtensionPositionEnum, ExtensionSlot, installExtension } from \"@orderly.network/ui\";\nimport { useAccountScript } from \"./account.script\";\nimport { Account } from \"./account.ui\";\n\nexport const AccountWidget = () => {\n const state = useAccountScript();\n return (<Account {...state} />);\n};\ninstallExtension<any>({\n name: \"mobile-account-menu\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.MobileAccountMenu],\n builder: useAccountScript,\n __isInternal: true,\n })((props:any) => {\n return <Account {...props} />;\n });\n \n export const MobileAccountMenuExtension = () => {\n return <ExtensionSlot position={ExtensionPositionEnum.MobileAccountMenu} />;\n };\n ","import { AccountState as AccountStateType } from \"@orderly.network/core\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { modal } from \"@orderly.network/ui\";\nimport { useTradingPageContext } from \"../../../../provider/tradingPageContext\";\nimport { AccountSheetWidget } from \"../../accountSheet\";\n\nexport const useAccountScript = () => {\n const { t } = useTranslation();\n const { referral, tradingRewards, bottomSheetLeading } =\n useTradingPageContext();\n const { account, state } = useAccount();\n\n const onShowAccountSheet = () => {\n modal.sheet({\n title: t(\"common.account\"),\n leading: bottomSheetLeading,\n content: <AccountSheetWidget {...referral} {...tradingRewards} />,\n });\n };\n\n return {\n onShowAccountSheet,\n address: account.address,\n state: state as AccountStateType,\n };\n};\n\nexport type AccountState = ReturnType<typeof useAccountScript>;\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ArrowRightShortIcon, Button, Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { AccountSheetState } from \"./accountSheet.script\";\nimport { CopyIcon, HeadIcon, OrderlyIcon, USDCIcon } from \"./icons\";\n\nexport const AccountSheet: FC<AccountSheetState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} gap={4}>\n <AccountInfo {...props} />\n <ReferralInfo {...props} />\n <TradingRewardsInfo {...props} />\n <Flex gap={3} width={\"100%\"} justify={\"center\"}>\n {props.showGetTestUSDC && (\n <Button\n variant=\"outlined\"\n // color=\"primary\"\n size=\"md\"\n onClick={props.onGetTestUSDC}\n fullWidth\n loading={props.gettingTestUSDC}\n className=\"oui-border-primary-light oui-text-primary-light\"\n >\n {t(\"trading.faucet.getTestUSDC\")}\n </Button>\n )}\n <Button\n variant=\"outlined\"\n color=\"danger\"\n size=\"md\"\n onClick={props.onDisconnect}\n className={props.showGetTestUSDC ? \"oui-w-full\" : \"oui-w-[50%]\"}\n >\n {t(\"connector.disconnect\")}\n </Button>\n </Flex>\n </Flex>\n );\n};\nexport const AccountInfo: FC<AccountSheetState> = (props) => {\n return (\n <Flex width={\"100%\"} justify={\"between\"}>\n <Flex gap={3}>\n <HeadIcon />\n <Flex\n direction={\"column\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n className=\"oui-gap-[2px]\"\n >\n <Text.formatted rule={\"address\"}>{props.address}</Text.formatted>\n <Text.formatted\n size=\"2xs\"\n intensity={80}\n // @ts-ignore\n prefix={\n <div className=\"oui-h-1 oui-w-1 oui-rounded-full oui-bg-success oui-pr-1\" />\n }\n >\n {props.chainName}\n </Text.formatted>\n </Flex>\n </Flex>\n <button\n className=\"oui-cursor-pointer\"\n onClick={() => {\n props.onCopyAddress();\n }}\n >\n <CopyIcon />\n </button>\n </Flex>\n );\n};\n\nexport const ReferralInfo: FC<AccountSheetState> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n direction={\"column\"}\n gap={3}\n r=\"lg\"\n p={3}\n className=\"oui-bg-base-6\"\n width={\"100%\"}\n >\n <button\n onClick={props.onClickReferral}\n className=\"oui-cursor-pointer oui-w-full\"\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text size=\"2xs\">{t(\"affiliate.referral\")}</Text>\n <ArrowRightShortIcon color=\"white\" opacity={0.98} size={16} />\n </Flex>\n </button>\n {props.isAffiliate && (\n <Flex\n gradient=\"primary\"\n p={4}\n r=\"lg\"\n width={\"100%\"}\n angle={180}\n justify={\"between\"}\n >\n <Flex direction={\"column\"} itemAlign={\"start\"}>\n <Text size=\"xs\">{t(\"common.affiliate\")}</Text>\n <Text size=\"2xs\" intensity={54}>\n ({t(\"affiliate.commission.30d\")})\n </Text>\n </Flex>\n <Flex className=\"oui-gap-[6px]\">\n <USDCIcon />\n <Text.numeral\n dp={2}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n rule=\"price\"\n >\n {props.affiliateCommission30D ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Flex>\n )}\n {props.isTrader && (\n <Flex\n gradient=\"success\"\n p={4}\n r=\"lg\"\n width={\"100%\"}\n angle={180}\n justify={\"between\"}\n >\n <Flex direction={\"column\"} itemAlign={\"start\"}>\n <Text size=\"xs\">{t(\"affiliate.trader\")}</Text>\n <Text size=\"2xs\" intensity={54}>\n ({t(\"affiliate.commission.30d\")})\n </Text>\n </Flex>\n <Flex className=\"oui-gap-[6px]\">\n <USDCIcon />\n <Text.numeral\n dp={2}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n rule=\"price\"\n >\n {props.traderCommission30D ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Flex>\n )}\n </Flex>\n );\n};\n\nexport const TradingRewardsInfo: FC<AccountSheetState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={3}\n r=\"lg\"\n p={3}\n className=\"oui-bg-base-6\"\n width={\"100%\"}\n >\n <button\n onClick={props.onClickTradingRewards}\n className=\"oui-cursor-pointer oui-w-full\"\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex gap={1} className=\"oui-text-base-contrast oui-text-2xs\">\n <Text>{t(\"common.tradingRewards\")}</Text>\n <Text intensity={54}>\n (\n <Text>{`${(\n t(\"tradingRewards.epoch\") as string\n )?.toLowerCase()} `}</Text>\n <Text intensity={98}>{props.curEpochId}</Text> )\n </Text>\n </Flex>\n <ArrowRightShortIcon color=\"white\" opacity={0.98} size={16} />\n </Flex>\n </button>\n <Flex\n p={4}\n r=\"lg\"\n width={\"100%\"}\n angle={180}\n justify={\"between\"}\n className=\"oui-bg-gradient-to-t oui-from-[#2d0061] oui-to-[#bd6bed]\"\n >\n <Text size=\"2xs\" intensity={80}>\n {t(\"tradingRewards.myEstRewards\")}\n </Text>\n\n <Flex className=\"oui-gap-[6px]\">\n <OrderlyIcon />\n <Text.numeral\n dp={2}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n rule=\"price\"\n >\n {props.estRewards}\n </Text.numeral>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","export const HeadIcon = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-rounded-full\"\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"m31.002 14.493-8.326-22.51L.166.31l8.327 22.51z\"\n fill=\"#03435D\"\n />\n <path\n d=\"m4.456-8.716-18.03 15.84 15.84 18.03 18.03-15.84z\"\n fill=\"#157CF2\"\n />\n <path\n d=\"m17.548 38.67 22.825-7.416-7.416-22.825-22.826 7.416z\"\n fill=\"#F3E200\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#fff\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport const CopyIcon = () => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.832 2.492A3.333 3.333 0 0 0 2.5 5.826v5a3.333 3.333 0 0 0 3.333 3.333 3.333 3.333 0 0 0 3.334 3.333h5a3.333 3.333 0 0 0 3.333-3.333v-5a3.333 3.333 0 0 0-3.333-3.333 3.333 3.333 0 0 0-3.334-3.334zm8.334 5c.92 0 1.666.746 1.666 1.667v5c0 .92-.746 1.666-1.666 1.666h-5c-.92 0-1.667-.745-1.667-1.666h3.333a3.333 3.333 0 0 0 3.334-3.334z\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n </svg>\n );\n};\n\nexport const USDCIcon = (props: { size?: number }) => {\n const { size = 20 } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M10 20c5.542 0 10-4.458 10-10S15.542 0 10 0 0 4.458 0 10s4.458 10 10 10\"\n fill=\"#2775CA\"\n />\n <path\n d=\"M13 11.473c0-1.452-.94-1.95-2.82-2.158-1.344-.166-1.613-.498-1.613-1.078s.448-.955 1.343-.955c.806 0 1.254.25 1.478.872.045.124.18.207.313.207h.717c.179 0 .313-.125.313-.29v-.042c-.179-.913-.985-1.618-2.015-1.701v-.996c0-.166-.134-.29-.358-.332h-.671c-.18 0-.314.124-.359.332v.954c-1.343.166-2.194.996-2.194 2.034 0 1.369.896 1.908 2.776 2.116 1.254.207 1.657.456 1.657 1.12s-.627 1.12-1.477 1.12c-1.165 0-1.568-.456-1.702-1.078a.32.32 0 0 0-.313-.25h-.762c-.179 0-.313.125-.313.291v.042c.179 1.037.895 1.784 2.373 1.991v.996c0 .166.134.29.358.332h.672c.18 0 .313-.124.358-.332v-.996C12.105 13.465 13 12.593 13 11.473\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n d=\"M7.74 16.57c-3.458-1.215-5.23-4.986-3.945-8.324.665-1.821 2.127-3.208 3.944-3.859.178-.086.266-.216.266-.433v-.607c0-.174-.088-.304-.266-.347-.044 0-.133 0-.177.043-4.21 1.3-6.516 5.68-5.186 9.798.798 2.428 2.704 4.292 5.186 5.072.177.087.355 0 .399-.173.044-.043.044-.087.044-.173v-.608c0-.13-.133-.303-.266-.39m4.698-13.527c-.178-.086-.355 0-.4.174-.043.043-.043.086-.043.173v.607c0 .174.133.347.266.434 3.457 1.213 5.23 4.985 3.944 8.323-.664 1.821-2.127 3.209-3.944 3.859-.178.086-.266.216-.266.433v.607c0 .174.088.304.266.347.044 0 .133 0 .177-.043 4.21-1.3 6.515-5.68 5.186-9.798-.798-2.471-2.748-4.335-5.186-5.116\"\n fill=\"#fff\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport const OrderlyIcon = (props: { size?: number }) => {\n const { size = 20 } = props;\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_6403_64483)\">\n <path\n d=\"M10.0245 19.9493C15.5198 19.9493 19.9747 15.4944 19.9747 9.99908C19.9747 4.50371 15.5198 0.0488281 10.0245 0.0488281C4.5291 0.0488281 0.0742188 4.50371 0.0742188 9.99908C0.0742188 15.4944 4.5291 19.9493 10.0245 19.9493Z\"\n fill=\"url(#paint0_linear_6403_64483)\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.1553 4.89304C14.2199 4.94541 14.1821 5.04758 14.0989 5.04758H5.95035C5.86716 5.04758 5.82936 4.94541 5.894 4.89304C7.0223 3.97912 8.45953 3.43164 10.0246 3.43164C11.5898 3.43164 13.0269 3.97912 14.1553 4.89304Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.47013 11.7869C7.42315 11.7199 7.34748 11.6777 7.26565 11.6777H3.82985C3.75113 11.6777 3.69375 11.7525 3.71563 11.8281C4.5078 14.565 7.0326 16.566 10.0247 16.566C13.017 16.566 15.5417 14.565 16.3339 11.8281C16.3558 11.7525 16.2984 11.6777 16.2197 11.6777H12.7839C12.702 11.6777 12.6264 11.7199 12.5795 11.7869C12.0155 12.5911 11.0815 13.1167 10.0248 13.1167C8.96803 13.1167 8.03406 12.5911 7.47013 11.7869Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.3347 7.90519C12.3822 7.95756 12.449 7.9891 12.5196 7.9891H16.1137C16.1952 7.9891 16.253 7.90983 16.2261 7.83301C15.9724 7.10689 15.5948 6.43893 15.1187 5.85447C15.074 5.79961 15.0067 5.76855 14.9358 5.76855H5.11323C5.04247 5.76855 4.97512 5.79961 4.93044 5.85447C4.45429 6.43893 4.0767 7.10689 3.82306 7.83301C3.79622 7.90983 3.85398 7.9891 3.93536 7.9891H7.52952C7.60022 7.9891 7.66694 7.95756 7.71445 7.90519C8.28491 7.2763 9.10861 6.88136 10.0246 6.88136C10.9405 6.88136 11.7643 7.2763 12.3347 7.90519Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.1164 10.9586C13.0553 10.9586 13.0118 10.899 13.0284 10.8401C13.1033 10.5722 13.1433 10.2898 13.1433 9.9981C13.1433 9.58758 13.064 9.19556 12.9199 8.83657C12.8954 8.77581 12.9392 8.70801 13.0046 8.70801H16.392C16.4349 8.70801 16.472 8.73831 16.4799 8.78052C16.5538 9.17511 16.5925 9.58216 16.5925 9.9982C16.5925 10.2978 16.5724 10.5926 16.5337 10.8815C16.5277 10.9258 16.4897 10.9586 16.4451 10.9586H13.1164ZM7.02223 10.8401C7.03868 10.899 6.99532 10.9586 6.93421 10.9586H3.60551C3.56084 10.9586 3.52285 10.9258 3.5169 10.8815C3.47807 10.5926 3.45801 10.2978 3.45801 9.9982C3.45801 9.58216 3.4967 9.17511 3.57069 8.78052C3.57859 8.73831 3.61563 8.70801 3.65856 8.70801H7.04593C7.11141 8.70801 7.15516 8.77581 7.13076 8.83657C6.98657 9.19556 6.90722 9.58758 6.90722 9.9981C6.90722 10.2898 6.94728 10.5722 7.02223 10.8401Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_6403_64483\"\n x1=\"10.0245\"\n y1=\"0.0488561\"\n x2=\"10.0245\"\n y2=\"19.9493\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#C750FF\" />\n <stop offset=\"1\" stopColor=\"#5800E8\" />\n </linearGradient>\n <clipPath id=\"clip0_6403_64483\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import { useMemo } from \"react\";\nimport {\n TWType,\n useAccount,\n useChains,\n useConfig,\n useCurEpochEstimate,\n useEpochInfo,\n useLocalStorage,\n useMutation,\n useReferralInfo,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum, ChainNamespace } from \"@orderly.network/types\";\nimport { modal, toast, useModal } from \"@orderly.network/ui\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { ReferralProps, TradingRewardsProps } from \"../../../types/types\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const useAccountSheetScript = (\n props: ReferralProps & TradingRewardsProps\n) => {\n const { t } = useTranslation();\n const [linkDeviceStorage] = useLocalStorage(\"orderly_link_device\", {});\n const { account, state } = useAccount();\n const accountId = account.accountId;\n const address = account.address;\n const { hide } = useModal();\n\n const config = useConfig();\n\n const { connectedChain, disconnect, namespace } = useWalletConnector();\n\n const chainId =\n account.chainId || connectedChain?.id || linkDeviceStorage?.chainId;\n\n const showGetTestUSDC = useMemo(() => {\n if (chainId) {\n return (\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected) &&\n // @ts-ignore\n isTestnet(parseInt(chainId))\n );\n }\n\n return false;\n }, [state.status, chainId]);\n\n const chainName = useGetChains(chainId);\n\n const operatorUrl = config.get<string>(\"operatorUrl\");\n\n const onCopyAddress = () => {\n navigator.clipboard.writeText(address ?? \"\");\n toast.success(t(\"common.copy.copied\"));\n };\n\n const {\n affiliateCommission30D,\n traderCommission30D,\n isAffiliate,\n isTrader,\n onClickReferral,\n } = useReferral(props.onClickReferral);\n\n const { curEpochId, estRewards, onClickTradingRewards } = useTradingRewards(\n props.onClickTradingRewards\n );\n\n const onDisconnect = async () => {\n // The cache must be cleared first, otherwise it will be possible entered link device mode\n localStorage.removeItem(\"orderly_link_device\");\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n hide();\n };\n\n const [getTestUSDC, { isMutating: gettingTestUSDC }] = useMutation(\n `${operatorUrl}/v1/faucet/usdc`\n );\n\n const onGetTestUSDC = () => {\n if (\n state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n // return modal.show(WalletConnectSheet, {\n // status: state.status,\n // });\n return;\n }\n\n const message = t(\"trading.faucet.getTestUSDC.success\", {\n quantity: namespace === ChainNamespace.solana ? \"100\" : \"1,000\",\n });\n\n return getTestUSDC({\n chain_id: chainId?.toString(),\n user_address: state.address,\n broker_id: config.get(\"brokerId\"),\n }).then(\n (res: any) => {\n if (res.success) {\n return modal.alert({\n title: t(\"trading.faucet.getTestUSDC\"),\n message,\n onOk: () => {\n return Promise.resolve(true);\n },\n });\n }\n res.message && toast.error(res.message);\n // return Promise.reject(res);\n },\n (error: Error) => {\n toast.error(error.message);\n }\n );\n };\n return {\n accountId,\n address,\n chainId,\n chainName,\n onCopyAddress,\n\n affiliateCommission30D,\n onClickReferral,\n isAffiliate,\n isTrader,\n traderCommission30D,\n\n curEpochId,\n onClickTradingRewards,\n estRewards,\n\n onDisconnect,\n showGetTestUSDC,\n onGetTestUSDC,\n gettingTestUSDC,\n };\n};\n\nconst useReferral = (_onClickReferral?: () => void) => {\n const { data, isLoading, isAffiliate, isTrader } = useReferralInfo();\n const affiliateCommission30D = useMemo(() => {\n if (isAffiliate) {\n return data?.referrer_info[\"30d_referrer_rebate\"];\n }\n return undefined;\n }, [data]);\n const traderCommission30D = useMemo(() => {\n if (isTrader) {\n return data?.referee_info[\"30d_referee_rebate\"];\n }\n return undefined;\n }, [data]);\n\n const onClickReferral = () => {\n _onClickReferral?.();\n };\n\n return {\n onClickReferral,\n affiliateCommission30D,\n traderCommission30D,\n isAffiliate,\n isTrader,\n\n // WARNING: test data\n // affiliateCommission30D: 1234.43,\n // traderCommission30D:44343.33,\n // isAffiliate: true,\n // isTrader: true,\n };\n};\n\nconst useTradingRewards = (_onClick?: () => void) => {\n const [curEpochEstimate] = useCurEpochEstimate(TWType.normal);\n const [list, curEpoch] = useEpochInfo(TWType.normal);\n const curEpochId = useMemo(() => {\n return curEpoch.curEpochInfo?.epoch_id ?? \"--\";\n }, [curEpoch]);\n\n const estRewards = useMemo(() => {\n if (typeof curEpochEstimate?.est_r_wallet === \"undefined\") {\n return \"--\";\n }\n return curEpochEstimate?.est_r_wallet;\n }, [curEpochEstimate]);\n\n const onClickTradingRewards = () => {\n _onClick?.();\n };\n\n return {\n curEpochId,\n estRewards,\n onClickTradingRewards,\n };\n};\n\nfunction useGetChains(chainId: number) {\n const [mainChains, { findByChainId }] = useChains(\"mainnet\", {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const chainName = useMemo(() => {\n // @ts-ignore\n const chain = findByChainId(parseInt(chainId), \"network_infos\");\n\n if (!chain) {\n return \"Unknown\";\n }\n // // @ts-ignore\n // if (isTestnet(chain.chain_id)) {\n // return \"Testnet\";\n // }\n // @ts-ignore\n return chain.name;\n }, [chainId, findByChainId]);\n\n return chainName;\n}\n\nexport type AccountSheetState = ReturnType<typeof useAccountSheetScript>;\n","import { ReferralProps, TradingRewardsProps } from \"../../../types/types\";\nimport { useAccountSheetScript } from \"./accountSheet.script\";\nimport { AccountSheet } from \"./accountSheet.ui\";\n\nexport const AccountSheetWidget = (\n props: ReferralProps & TradingRewardsProps\n) => {\n const state = useAccountSheetScript(props);\n return <AccountSheet {...state} />;\n};\n","import { FC } from \"react\";\nimport { Button, formatAddress } from \"@orderly.network/ui\";\nimport { AccountState } from \"./account.script\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\n\nexport const Account: FC<AccountState> = (props) => {\n return (\n <AuthGuard\n buttonProps={{\n size: \"sm\",\n }}\n >\n <Button\n variant=\"gradient\"\n size={\"sm\"}\n className=\"oui-max-w-[83px]\"\n onClick={(e) => {\n props.onShowAccountSheet();\n }}\n >\n {formatAddress(props.address!, [4, 4])}\n </Button>\n </AuthGuard>\n );\n};\n","import { FC } from \"react\";\nimport { BalanceState } from \"./balance.script\";\n\nexport const Balance: FC<BalanceState> = () => {\n return null;\n};\n","export const useBalanceScript = () => {\n return {};\n};\n\nexport type BalanceState = ReturnType<typeof useBalanceScript>;\n","import { useBalanceScript } from \"./balance.script\";\nimport { Balance } from \"./balance.ui\";\n\nexport const BalanceWidget = () => {\n const state = useBalanceScript();\n return <Balance {...state} />;\n};\n","import { FC } from \"react\";\nimport { Box, ChainIcon, modal, toast } from \"@orderly.network/ui\";\nimport { ChainState } from \"./chain.script\";\nimport { ChainSelectorSheetId } from \"@orderly.network/ui-chain-selector\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Chain: FC<ChainState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <button\n onClick={(e) => {\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorSheetId, {\n // networkId: props.networkId,\n bridgeLessOnly: false,\n isWrongNetwork: props.wrongNetwork,\n })\n .then(\n (r: any) => {\n if (r?.chainId) {\n props.setCurrentChainId(r?.chainId);\n }\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error)\n );\n }}\n >\n <Box className=\"oui-relative oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px] oui-bg-base-5 oui-px-2 oui-h-7 oui-flex oui-items-center\">\n <ChainIcon chainId={props.currentChainId!} size=\"2xs\" />\n <div className=\"oui-absolute oui-right-0 oui-bottom-0\">\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 9 9\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M9 6V0L0 9h6a3 3 0 0 0 3-3\" fill=\"url(#a)\" />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"9\"\n y1=\"4.5\"\n x2=\"0\"\n y2=\"4.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop\n offset=\"1\"\n stopColor=\"rgb(var(--oui-gradient-brand-start))\"\n />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </Box>\n </button>\n );\n};\n","import { useConfig } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const useChainScript = () => {\n const config = useConfig();\n const { wrongNetwork, currentChainId, setCurrentChainId } = useAppContext();\n\n const networkId = config.get(\"networkId\");\n\n return {\n currentChainId,\n setCurrentChainId,\n networkId,\n wrongNetwork,\n };\n};\n\nexport type ChainState = ReturnType<typeof useChainScript>;\n","import { useChainScript } from \"./chain.script\";\nimport { Chain } from \"./chain.ui\";\n\nexport const ChainWidget = () => {\n const state = useChainScript();\n return (<Chain {...state} />);\n};\n","import { useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const useBottomNavBarScript = () => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { account, state } = useAccount();\n\n /** link device, acally wallet not connect */\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n };\n\n return {\n wrongNetwork,\n disabledConnect,\n status: state.status,\n onDisconnect,\n };\n};\n\nexport type BottomNavBarState = ReturnType<typeof useBottomNavBarScript>;\n","import { useBottomNavBarScript } from \"./bottomNavBar.script\";\nimport { BottomNavBar } from \"./bottomNavBar.ui\";\n\nexport const BottomNavBarWidget = () => {\n const state = useBottomNavBarScript();\n return (<BottomNavBar {...state} />);\n};\n","import { FC, useCallback, useId } from \"react\";\nimport React from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport {\n ArrowDownShortIcon,\n ArrowLeftRightIcon,\n ArrowUpShortIcon,\n Button,\n cn,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Grid,\n Input,\n inputFormatter,\n InputFormatter,\n modal,\n PlusIcon,\n ReduceIcon,\n RefreshIcon,\n Statistic,\n Text,\n} from \"@orderly.network/ui\";\nimport { LeverageProps, LeverageSlider } from \"@orderly.network/ui-leverage\";\nimport { USDCIcon } from \"../accountSheet/icons\";\nimport {\n getMarginRatioColor,\n PortfolioSheetState,\n} from \"./portfolioSheet.script\";\nimport { RiskIndicator } from \"./riskIndicator\";\n\nexport const PortfolioSheet: FC<PortfolioSheetState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={4} width={\"100%\"}>\n <Asset {...props} />\n <Divider className=\"oui-w-full\" />\n <MarginRatio {...props} />\n {/* <Leverage {...props} /> */}\n {/* <Divider className=\"oui-w-full\" /> */}\n {/* <AvailableBalance {...props} /> */}\n <Buttons {...props} />\n </Flex>\n );\n};\n\nconst Asset: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n const onUnsettleClick = useCallback(() => {\n return modal.confirm({\n title: t(\"settle.settlePnl\"),\n // maxWidth: \"xs\",\n content: (\n <Text intensity={54} size=\"xs\">\n {/* @ts-ignore */}\n <Trans i18nKey=\"settle.settlePnl.description\" />\n </Text>\n ),\n onCancel: () => {\n return Promise.reject();\n },\n onOk: () => {\n if (typeof props.onSettlePnL !== \"function\") {\n return Promise.resolve();\n }\n return props.onSettlePnL().catch((e) => {});\n },\n });\n }, [t]);\n\n const clsName =\n props.totalUnrealizedROI > 0\n ? \"oui-text-success-darken\"\n : \"oui-text-danger-darken\";\n\n return (\n <Flex direction={\"column\"} gap={3} width={\"100%\"}>\n <Flex direction={\"column\"} itemAlign={\"start\"} width={\"100%\"}>\n <Text.formatted\n size=\"2xs\"\n intensity={36}\n suffix={\n props.hideAssets ? (\n <EyeIcon\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n ) : (\n <EyeCloseIcon\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n )\n }\n onClick={() => {\n props.toggleHideAssets();\n }}\n className=\"oui-cursor-pointer\"\n >\n {`${t(\"common.totalValue\")} (USDC)`}\n </Text.formatted>\n <Text.numeral\n size=\"base\"\n // coloring\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.totalValue ?? \"--\"}\n </Text.numeral>\n </Flex>\n <Grid cols={2} rows={1} width={\"100%\"}>\n <Statistic\n label={`${t(\"common.unrealizedPnl\")} (USDC)`}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex gap={1}>\n <Text.numeral\n size=\"xs\"\n coloring\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.aggregated.unrealPnL}\n </Text.numeral>\n {!props.hideAssets && (\n <Text.numeral\n size=\"xs\"\n dp={2}\n padding={false}\n rule=\"percentages\"\n prefix={\"(\"}\n suffix={\")\"}\n className={clsName}\n >\n {props.totalUnrealizedROI}\n </Text.numeral>\n )}\n </Flex>\n </Statistic>\n <Statistic\n label={`${t(\"trading.asset.unsettledPnl\")} (USDC)`}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text.numeral\n size=\"xs\"\n coloring\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.aggregated.unsettledPnL}\n </Text.numeral>\n <button\n className=\"oui-flex oui-gap-1 oui-items-center\"\n onClick={onUnsettleClick}\n >\n <RefreshIcon\n opacity={1}\n size={12}\n className=\"oui-text-primary-light\"\n />\n <Text size=\"2xs\" color=\"primary\">\n {t(\"settle.settlePnl\")}\n </Text>\n </button>\n </Flex>\n </Statistic>\n </Grid>\n </Flex>\n );\n};\nconst MarginRatio: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n const { high, mid, low } = getMarginRatioColor(\n props.marginRatioVal,\n props.mmr,\n );\n\n return (\n <Grid cols={2} rows={1} width={\"100%\"}>\n <Statistic\n label={t(\"trading.asset.marginRatio\")}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex gap={2}>\n <Text.numeral\n size=\"xs\"\n rule=\"percentages\"\n color=\"primary\"\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.marginRatioVal}\n </Text.numeral>\n {!props.hideAssets && (\n <RiskIndicator\n className={\n low\n ? \"oui-rotate-0\"\n : mid\n ? \"oui-rotate-90\"\n : high\n ? \"oui-rotate-180\"\n : \"\"\n }\n />\n )}\n </Flex>\n </Statistic>\n <Statistic\n label={`${t(\"trading.asset.free&TotalCollateral\")} (USDC)`}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex justify={\"start\"} width={\"100%\"} gap={1}>\n <Text.numeral\n size=\"xs\"\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.freeCollateral}\n </Text.numeral>\n <Text size=\"xs\">/</Text>\n <Text.numeral\n size=\"xs\"\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.totalCollateral}\n </Text.numeral>\n </Flex>\n </Statistic>\n </Grid>\n );\n};\n\nconst IconButton: React.FC<{\n Icon: React.ComponentType<any>;\n onClick: React.MouseEventHandler<SVGSVGElement>;\n disabled: boolean;\n}> = (props) => {\n const { Icon, onClick, disabled } = props;\n return (\n <Icon\n onClick={disabled ? undefined : onClick}\n className={cn(\n \"oui-text-white oui-m-2 oui-transition-all\",\n disabled\n ? \"oui-cursor-not-allowed oui-opacity-20\"\n : \"oui-cursor-pointer oui-opacity-100\",\n )}\n />\n );\n};\n\nconst LeverageInput: React.FC<PortfolioSheetState> = (props) => {\n const formatters = React.useMemo<InputFormatter[]>(\n () => [\n inputFormatter.numberFormatter,\n inputFormatter.currencyFormatter,\n inputFormatter.decimalPointFormatter,\n ],\n [],\n );\n const id = useId();\n return (\n <label\n htmlFor={id}\n className={cn(\n \"oui-w-full\",\n \"oui-rounded\",\n \"oui-bg-base-6\",\n \"oui-flex\",\n \"oui-items-center\",\n \"oui-justify-between\",\n \"oui-outline\",\n \"oui-outline-offset-0\",\n \"oui-outline-1\",\n \"oui-outline-transparent\",\n \"focus-within:oui-outline-primary-light\",\n \"oui-input-root\",\n )}\n >\n <IconButton\n Icon={ReduceIcon}\n onClick={props.onLeverageReduce}\n disabled={props.isReduceDisabled}\n />\n <Flex itemAlign=\"center\" justify=\"center\">\n <Input\n // {...props}\n value={props.value}\n id={id}\n autoComplete=\"off\"\n classNames={{\n input: cn(\"oui-text-center\"),\n root: cn(\n \"oui-text-center\",\n \"oui-w-6\",\n \"oui-px-0\",\n \"oui-outline\",\n \"oui-outline-offset-0\",\n \"oui-outline-1\",\n \"oui-outline-transparent\",\n \"focus-within:oui-outline-primary-none\",\n ),\n }}\n formatters={formatters}\n onChange={props.onInputChange}\n />\n <div className=\"oui-select-none\">x</div>\n </Flex>\n <IconButton\n Icon={PlusIcon}\n onClick={props.onLeverageIncrease}\n disabled={props.isIncreaseDisabled}\n />\n </label>\n );\n};\n\nexport const LeverageSelector: React.FC<PortfolioSheetState> = (props) => {\n const { value, onLeverageChange, onValueCommit } = props;\n return (\n <Flex itemAlign=\"center\" justify=\"between\" width={\"100%\"} mt={2}>\n {[1, 5, 10, 20, 50].map((option) => (\n <Flex\n key={option}\n itemAlign=\"center\"\n justify=\"center\"\n className={cn(\n `oui-transition-all oui-cursor-pointer oui-box-border oui-bg-clip-padding oui-px-3 oui-py-2.5 oui-rounded-md oui-border oui-border-solid`,\n value === option\n ? \"oui-border-primary oui-bg-base-6\"\n : \"oui-border-line-12\",\n )}\n onClick={() => {\n onLeverageChange(option);\n onValueCommit(option);\n }}\n >\n <Flex\n itemAlign=\"center\"\n justify=\"center\"\n className={cn(`oui-h-3 oui-w-9 oui-select-none`)}\n >\n {option}x\n </Flex>\n </Flex>\n ))}\n </Flex>\n );\n};\n\nconst Buttons: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n if (props.isMainAccount) {\n return (\n <Grid\n cols={props.hasSubAccount ? 3 : 2}\n rows={1}\n gap={3}\n className=\"oui-grid-row-[1fr,1fr]\"\n width={\"100%\"}\n pt={2}\n pb={4}\n >\n <Button\n icon={<ArrowDownShortIcon color=\"white\" opacity={0.8} />}\n size=\"md\"\n fullWidth\n onClick={props.onDeposit}\n >\n {t(\"common.deposit\")}\n </Button>\n {props.hasSubAccount && (\n <Button\n icon={<ArrowLeftRightIcon color=\"white\" opacity={0.8} />}\n color=\"gray\"\n size=\"md\"\n onClick={props.onTransfer}\n data-testid=\"oui-testid-assetView-transfer-button\"\n >\n <Text>{t(\"common.transfer\")}</Text>\n </Button>\n )}\n <Button\n icon={<ArrowUpShortIcon color=\"white\" opacity={0.8} />}\n size=\"md\"\n fullWidth\n className=\"oui-bg-base-2 hover:oui-bg-base-2/50\"\n onClick={props.onWithdraw}\n >\n {t(\"common.withdraw\")}\n </Button>\n </Grid>\n );\n }\n\n return (\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={props.onTransfer}\n data-testid=\"oui-testid-assetView-transfer-button\"\n >\n <Text>{t(\"common.transfer\")}</Text>\n </Button>\n );\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport {\n useAccount,\n useCollateral,\n useDebouncedCallback,\n useEventEmitter,\n useLeverage,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { modal, SliderMarks, toast } from \"@orderly.network/ui\";\nimport {\n DepositAndWithdrawWithSheetId,\n TransferSheetId,\n} from \"@orderly.network/ui-transfer\";\nimport { useTradingLocalStorage } from \"../../../hooks\";\n\nexport const usePortfolioSheetScript = () => {\n const { state, account, isMainAccount } = useAccount();\n const assets = useAssets();\n const marginRatio = useMarginRatioAndLeverage();\n const ee = useEventEmitter();\n const { t } = useTranslation();\n const subAccounts = state.subAccounts ?? [];\n\n const [showSliderTip, setShowSliderTip] = useState(false);\n\n const onSettlePnL = useCallback(async () => {\n return account\n .settle()\n .catch((e) => {\n if (e.code == -1104) {\n toast.error(t(\"settle.settlement.error\"));\n return Promise.reject(e);\n }\n if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n return Promise.reject(e);\n }\n\n if (e?.code === \"ACTION_REJECTED\") {\n toast.error(t(\"connector.userRejected\"));\n return Promise.reject(e);\n }\n })\n .then((res) => {\n toast.success(t(\"settle.settlement.requested\"));\n return Promise.resolve(res);\n });\n }, [account, t]);\n\n const onDeposit = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"deposit\",\n });\n }, []);\n\n const onWithdraw = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"withdraw\",\n });\n }, []);\n\n const onTransfer = useCallback(() => {\n modal.show(TransferSheetId);\n }, []);\n\n return {\n ...assets,\n ...marginRatio,\n onSettlePnL,\n onDeposit,\n onWithdraw,\n showSliderTip,\n setShowSliderTip,\n isMainAccount,\n onTransfer,\n hasSubAccount: subAccounts?.length > 0,\n };\n};\n\nconst useAssets = () => {\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n const toggleHideAssets = () => {\n setHideAssets(!hideAssets);\n };\n const { totalCollateral, freeCollateral, totalValue, availableBalance } =\n useCollateral({\n dp: 2,\n });\n return {\n hideAssets,\n toggleHideAssets,\n totalCollateral,\n freeCollateral,\n totalValue,\n availableBalance,\n };\n};\n\nconst useMarginRatioAndLeverage = () => {\n const { t } = useTranslation();\n const [{ aggregated, totalUnrealizedROI }, positionsInfo] =\n usePositionStream();\n const { marginRatio, currentLeverage, mmr } = useMarginRatio();\n\n const marginRatioVal = useMemo(() => {\n return Math.min(\n 10,\n aggregated.notional === 0\n ? positionsInfo[\"margin_ratio\"](10)!\n : marginRatio,\n );\n }, [marginRatio, aggregated]);\n\n const { update, curLeverage, maxLeverage, leverageLevers } = useLeverage();\n\n const marks = useMemo<SliderMarks>(() => {\n return leverageLevers?.map((e) => ({\n label: `${e}x`,\n value: e,\n }));\n }, [leverageLevers]);\n\n const [leverage, setLeverage] = useState<number>(curLeverage ?? 0);\n\n const step = 100 / ((marks?.length || 0) - 1);\n\n // const leverageValue = useMemo(() => {\n // const index = leverageLevers.findIndex((item: any) => item === leverage);\n\n // return index * step;\n // }, [leverageLevers, leverage, step]);\n\n const onLeverageChange = (leverage: number) => {\n // maxLeverage / 100 * leverage;\n setLeverage(leverage);\n // updateLeverage(leverage);\n };\n\n const onSave = async (leverage: number) => {\n try {\n update({ leverage }).then(\n () => {\n toast.success(t(\"leverage.updated\"));\n },\n (err: Error) => {\n toast.error(err.message);\n },\n );\n } catch {\n //\n }\n };\n\n const onValueCommit = useCallback((value: number | number[]) => {\n onSave(Array.isArray(value) ? value[0] : value);\n }, []);\n\n const debouncedCommit = useDebouncedCallback(onValueCommit, 500);\n\n const onInputChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n (e) => {\n const parsed = Number.parseInt(e.target.value, 10);\n const raw = Number.isNaN(parsed) ? 0 : parsed;\n const clamped = Math.min(Math.max(raw, 1), maxLeverage);\n setLeverage(clamped);\n debouncedCommit(clamped);\n },\n [debouncedCommit, maxLeverage],\n );\n\n const onLeverageIncrease: React.MouseEventHandler<SVGSVGElement> = () => {\n setLeverage((prev) => {\n onSave(prev + 1);\n return prev + 1;\n });\n };\n\n const onLeverageReduce: React.MouseEventHandler<SVGSVGElement> = () => {\n setLeverage((prev) => {\n onSave(prev - 1);\n return prev - 1;\n });\n };\n\n return {\n aggregated,\n totalUnrealizedROI,\n positionsInfo,\n marginRatio,\n marginRatioVal,\n mmr,\n currentLeverage,\n step,\n marks,\n onLeverageChange,\n onLeverageIncrease,\n onLeverageReduce,\n onInputChange,\n isReduceDisabled: leverage <= 1,\n isIncreaseDisabled: leverage >= maxLeverage,\n onValueCommit,\n value: leverage,\n maxLeverage,\n onSaveLeverage: onSave,\n };\n};\n\nexport function getMarginRatioColor(marginRatio: number, mmr: number | null) {\n if (mmr === null) {\n return { isRed: false, isYellow: false, isGreen: true };\n }\n const imr = mmr * 2;\n\n const high = marginRatio <= imr;\n const mid = marginRatio > imr && marginRatio < 1;\n const low = marginRatio >= 1;\n return { high, mid, low };\n}\n\nexport type PortfolioSheetState = ReturnType<typeof usePortfolioSheetScript>;\n","import { FC } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\n\ninterface RiskIndicatorProps {\n size?: number;\n className?: string;\n}\n\nexport const RiskIndicator: FC<RiskIndicatorProps> = (props) => {\n const { size = 20, className } = props;\n\n return (\n <div\n className=\"oui-flex oui-justify-center oui-items-end\"\n style={{\n background: \"url(/images/riskLevelBg.png)\",\n backgroundSize: \"contain\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center bottom\",\n width: `${size}px`,\n height: `14px`,\n }}\n >\n <div\n className={cn(\n \"oui-relative oui-w-[2px] oui-h-[2px] oui-rounded-full oui-bg-white after:oui-block after:oui-content-[''] after:oui-absolute after:oui-right-0 after:oui-w-[10px] after:oui-h-[2px] after:oui-bg-white/50\",\n className\n // {\n // \"oui-rotate-0\": value > 1,\n // \"oui-rotate-90\": value >= 0.05 && value <= 1,\n // \"oui-rotate-180\": value < 0.05,\n // }\n )}\n ></div>\n </div>\n );\n};\n","import { usePortfolioSheetScript } from \"./portfolioSheet.script\";\nimport { PortfolioSheet } from \"./portfolioSheet.ui\";\n\nexport const PortfolioSheetWidget = () => {\n const state = usePortfolioSheetScript();\n return <PortfolioSheet {...state} />;\n};\n","import { FC } from \"react\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport type { TradingState } from \"./trading.script\";\nimport { DesktopLayout } from \"./trading.ui.desktop\";\nimport { MobileLayout } from \"./trading.ui.mobile\";\n\nexport const Trading: FC<TradingState> = (props) => {\n const { isMobile } = useScreen();\n\n if (isMobile) {\n return <MobileLayout {...props} />;\n }\n\n return (\n <DesktopLayout\n className=\"oui-h-[calc(100vh_-_48px_-_29px)] oui-bg-base-10\"\n {...props}\n />\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport {\n SideMarketsWidget,\n SymbolInfoBarFullWidget,\n} from \"@orderly.network/markets\";\nimport { TradingviewFullscreenKey } from \"@orderly.network/types\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { OrderEntryWidget } from \"@orderly.network/ui-order-entry\";\nimport { TradingviewWidget } from \"@orderly.network/ui-tradingview\";\nimport { DepositStatusWidget } from \"@orderly.network/ui-transfer\";\nimport { AssetViewWidget } from \"../../components/desktop/assetView\";\nimport { DataListWidget } from \"../../components/desktop/dataList\";\nimport { RemovablePanel } from \"../../components/desktop/layout/removablePanel\";\nimport { SplitLayout } from \"../../components/desktop/layout/splitLayout\";\nimport { SwitchLayout } from \"../../components/desktop/layout/switchLayout\";\nimport { OrderBookAndTradesWidget } from \"../../components/desktop/orderBookAndTrades\";\nimport { RiskRateWidget } from \"../../components/desktop/riskRate\";\nimport {\n dataListInitialHeight,\n getOffsetSizeNum,\n TradingState,\n} from \"./trading.script\";\nimport {\n scrollBarWidth,\n topBarHeight,\n bottomBarHeight,\n space,\n symbolInfoBarHeight,\n orderEntryMinWidth,\n orderEntryMaxWidth,\n orderbookMinWidth,\n orderbookMaxWidth,\n orderbookMinHeight,\n orderbookMaxHeight,\n tradindviewMinHeight,\n tradingViewMinWidth,\n dataListMaxHeight,\n} from \"./trading.script\";\n\nexport type DesktopLayoutProps = TradingState & {\n className?: string;\n};\n\nexport const DesktopLayout: FC<DesktopLayoutProps> = (props) => {\n const {\n resizeable,\n panelSize,\n onPanelSizeChange,\n layout,\n onLayout,\n orderBookSplitSize,\n setOrderbookSplitSize,\n dataListSplitSize,\n setDataListSplitSize,\n mainSplitSize,\n setMainSplitSize,\n dataListSplitHeightSM,\n setDataListSplitHeightSM,\n orderBookSplitHeightSM,\n setOrderbookSplitHeightSM,\n max2XL,\n max4XL,\n animating,\n setAnimating,\n positions,\n updatePositions,\n showPositionIcon,\n horizontalDraggable,\n marketsWidth,\n tradindviewMaxHeight,\n dataListMinHeight,\n } = props;\n\n const [tradingViewFullScreen] = useLocalStorage(\n TradingviewFullscreenKey,\n false,\n );\n\n const minScreenHeight = useMemo(() => {\n return tradingViewFullScreen\n ? 0\n : symbolInfoBarHeight +\n orderbookMaxHeight +\n dataListInitialHeight +\n space * 4;\n }, [tradingViewFullScreen]);\n\n const minScreenHeightSM =\n topBarHeight +\n bottomBarHeight +\n symbolInfoBarHeight +\n tradindviewMinHeight +\n orderbookMinHeight +\n dataListMinHeight +\n space * 4;\n\n const marketsWidget = (\n <SideMarketsWidget\n resizeable={resizeable}\n panelSize={panelSize}\n onPanelSizeChange={onPanelSizeChange as any}\n symbol={props.symbol}\n onSymbolChange={props.onSymbolChange}\n />\n );\n\n const marketsView = (\n <Box\n intensity={900}\n pt={3}\n r=\"2xl\"\n height=\"100%\"\n width={marketsWidth}\n style={{ minWidth: marketsWidth }}\n className=\"oui-transition-all oui-duration-150\"\n onTransitionEnd={() => setAnimating(false)}\n >\n {!animating && marketsWidget}\n </Box>\n );\n\n const trailing = useMemo(() => {\n return <SwitchLayout layout={layout} onLayout={onLayout} />;\n }, [layout, onLayout]);\n\n const symbolInfoBarView = (\n <Box\n intensity={900}\n r=\"2xl\"\n px={3}\n width=\"100%\"\n style={{\n minHeight: symbolInfoBarHeight,\n height: symbolInfoBarHeight,\n }}\n >\n <SymbolInfoBarFullWidget\n symbol={props.symbol}\n onSymbolChange={props.onSymbolChange}\n trailing={trailing}\n />\n </Box>\n );\n\n const { library_path, ...restTradingViewConfig } = props.tradingViewConfig;\n\n const tradingviewWidget = (\n <TradingviewWidget\n classNames={{\n root: cn(\n tradingViewFullScreen\n ? \"!oui-absolute oui-top-0 oui-left-0 oui-right-0 oui-bottom-0 oui-z-[40] oui-bg-base-10\"\n : \"oui-z-1\",\n ),\n content: cn(\n tradingViewFullScreen\n ? \"oui-top-3 oui-bottom-3 oui-left-3 oui-right-3 oui-bg-base-9 oui-rounded-[16px] oui-overflow-hidden\"\n : \"\",\n ),\n }}\n symbol={props.symbol}\n {...restTradingViewConfig}\n libraryPath={library_path}\n />\n );\n\n const tradingView = (\n <Box\n width=\"100%\"\n height=\"100%\"\n intensity={900}\n r=\"2xl\"\n style={{ flex: 1, minWidth: tradingViewMinWidth }}\n className=\"oui-overflow-hidden\"\n >\n {tradingviewWidget}\n </Box>\n );\n\n const orderbookWidget = <OrderBookAndTradesWidget symbol={props.symbol} />;\n\n const orderbookView = (\n <Box\n r=\"2xl\"\n height=\"100%\"\n style={{\n minWidth: orderbookMinWidth,\n maxWidth: horizontalDraggable ? orderbookMaxWidth : orderbookMinWidth,\n width: orderBookSplitSize,\n }}\n className=\"oui-overflow-hidden\"\n >\n {orderbookWidget}\n </Box>\n );\n\n const dataListWidget = (\n <DataListWidget\n current={undefined}\n symbol={props.symbol}\n sharePnLConfig={props.sharePnLConfig}\n />\n );\n\n const dataListView = (\n <Box\n intensity={900}\n r=\"2xl\"\n p={2}\n style={{\n height: dataListSplitSize,\n // height: `calc(100% - ${symbolInfoBarHeight}px - ${orderbookMaxHeight}px - ${space}px)`,\n minHeight: dataListInitialHeight,\n // minHeight: `max(${dataListMinHeight}px, calc(100vh - ${symbolInfoBarHeight}px - ${orderbookMaxHeight}px - ${space}px))`,\n }}\n className=\"oui-overflow-hidden\"\n >\n {dataListWidget}\n </Box>\n );\n\n const assetsOrderEntryMargin = [\n <RemovablePanel\n key=\"margin\"\n index={positions.findIndex((item) => item === 0)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <RiskRateWidget />\n </RemovablePanel>,\n <RemovablePanel\n key=\"assets\"\n className=\"oui-border oui-border-line-12\"\n index={positions.findIndex((item) => item === 1)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <>\n <AssetViewWidget isFirstTimeDeposit={props.isFirstTimeDeposit} />\n <DepositStatusWidget\n className=\"oui-mt-3 oui-gap-y-2\"\n onClick={props.navigateToPortfolio}\n />\n </>\n </RemovablePanel>,\n <RemovablePanel\n key=\"orderEntry\"\n index={positions.findIndex((item) => item === 2)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <OrderEntryWidget\n symbol={props.symbol}\n disableFeatures={\n props.disableFeatures as unknown as (\"slippageSetting\" | \"feesInfo\")[]\n }\n />\n </RemovablePanel>,\n ];\n\n const orderEntryWidget = positions.map(\n (index) => assetsOrderEntryMargin[index],\n );\n\n const orderEntryView = (\n <Flex\n gapY={2}\n direction=\"column\"\n height=\"100%\"\n style={{\n minWidth: orderEntryMinWidth,\n maxWidth: horizontalDraggable ? orderEntryMaxWidth : orderEntryMinWidth,\n width: mainSplitSize,\n }}\n >\n {orderEntryWidget}\n </Flex>\n );\n\n const renderTradingView = () => {\n if (max4XL && layout === \"right\") {\n return (\n <Flex\n gap={2}\n className=\"oui-flex-1 oui-overflow-hidden\"\n style={{ minWidth: marketsWidth + tradingViewMinWidth + space }}\n >\n {marketsView}\n {tradingView}\n </Flex>\n );\n }\n\n return tradingView;\n };\n\n const tradingViewAndOrderbookView = (\n <SplitLayout\n style={{\n // the style width is not set, and a child node style needs to be set to flex: 1 to adapt\n flex: 1,\n minHeight: orderbookMinHeight,\n // maxHeight: orderbookMaxHeight,\n }}\n onSizeChange={setOrderbookSplitSize}\n disable={!horizontalDraggable}\n >\n {renderTradingView()}\n {orderbookView}\n </SplitLayout>\n );\n\n const renderTradingViewAndOrderbookView = () => {\n if (max4XL && layout === \"left\") {\n return (\n <Flex\n gapX={2}\n style={{\n minHeight: orderbookMinHeight,\n // maxHeight: orderbookMaxHeight,\n // minWidth:\n // marketsWidth +\n // tradingViewMinWidth +\n // orderbookMinWidth +\n // space * 2,\n }}\n height=\"100%\"\n >\n {tradingViewAndOrderbookView}\n {marketsView}\n </Flex>\n );\n }\n return tradingViewAndOrderbookView;\n };\n\n const mainView = (\n <Flex\n direction=\"column\"\n className=\"oui-flex-1 oui-overflow-hidden\"\n gap={2}\n style={{\n minWidth: max4XL\n ? marketsWidth + tradingViewMinWidth + orderbookMinWidth + space * 2\n : tradingViewMinWidth + orderbookMinWidth + space,\n }}\n >\n {symbolInfoBarView}\n <SplitLayout\n style={{\n // height: orderbookMaxHeight + dataListInitialHeight + space,\n maxHeight: `calc(100% - ${symbolInfoBarHeight}px - ${space}px)`,\n }}\n className=\"oui-w-full\"\n mode=\"vertical\"\n onSizeChange={setDataListSplitSize}\n >\n {renderTradingViewAndOrderbookView()}\n {dataListView}\n </SplitLayout>\n </Flex>\n );\n\n const onSizeChange = (width: string) =>\n layout === \"left\"\n ? setMainSplitSize(getOffsetSizeNum(width))\n : setMainSplitSize(width);\n\n if (max2XL) {\n return (\n <SplitLayout\n ref={props.max2XLSplitRef}\n style={{\n minHeight: minScreenHeightSM,\n minWidth: 1024 - scrollBarWidth,\n // height: props.extraHeight ? props.extraHeight : undefined,\n }}\n className={cn(\n \"oui-flex oui-flex-1\",\n \"oui-size-full oui-min-w-[1018px]\",\n \"oui-px-3 oui-py-2\",\n props.className,\n )}\n onSizeChange={setDataListSplitHeightSM}\n onDragging={props.onDataListSplitHeightDragging}\n mode=\"vertical\"\n >\n <Flex\n gapX={2}\n itemAlign=\"stretch\"\n className={cn(\n \"oui-flex-1\",\n layout === \"left\" && \"oui-flex-row-reverse\",\n )}\n style={{\n minHeight: Math.max(\n symbolInfoBarHeight +\n tradindviewMinHeight +\n orderbookMinHeight +\n space * 2,\n props.orderEntryHeight,\n ),\n maxHeight:\n symbolInfoBarHeight +\n tradindviewMaxHeight +\n orderbookMaxHeight +\n space * 2,\n }}\n >\n <Flex\n height=\"100%\"\n className=\"oui-w-[calc(100%_-_280px_-_12px)] oui-flex-1\"\n direction=\"column\"\n gapY={2}\n >\n {symbolInfoBarView}\n <Flex\n width=\"100%\"\n height=\"100%\"\n gapX={2}\n itemAlign=\"stretch\"\n style={{\n minHeight: tradindviewMinHeight + orderbookMinHeight + space,\n maxHeight: tradindviewMaxHeight + orderbookMaxHeight + space,\n }}\n className={cn(\n \"oui-flex-1\",\n layout === \"left\" && \"oui-flex-row-reverse\",\n )}\n >\n <Box\n intensity={900}\n pt={3}\n r=\"2xl\"\n width={marketsWidth}\n style={{\n minHeight: tradindviewMinHeight + orderbookMinHeight + space,\n maxHeight: tradindviewMaxHeight + orderbookMaxHeight + space,\n }}\n >\n {marketsWidget}\n </Box>\n <SplitLayout\n ref={props.tradingviewAndOrderbookSplitRef}\n mode=\"vertical\"\n style={{ width: `calc(100% - ${marketsWidth}px)` }}\n className=\"oui-flex-1\"\n onSizeChange={setOrderbookSplitHeightSM}\n onDragging={props.onTradingviewAndOrderbookDragging}\n >\n <Box\n width=\"100%\"\n intensity={900}\n r=\"2xl\"\n style={{\n minHeight: tradindviewMinHeight,\n maxHeight: tradindviewMaxHeight,\n height: 1200,\n }}\n >\n {tradingviewWidget}\n </Box>\n\n <Box\n r=\"2xl\"\n height=\"100%\"\n width=\"100%\"\n style={{\n minHeight: orderbookMinHeight,\n maxHeight: orderbookMaxHeight,\n height: orderBookSplitHeightSM,\n }}\n className=\"oui-flex-1\"\n >\n {orderbookWidget}\n </Box>\n </SplitLayout>\n </Flex>\n </Flex>\n <Flex\n ref={props.orderEntryViewRef}\n id=\"orderEntryView\"\n gapY={3}\n direction=\"column\"\n className=\"oui-relative\"\n style={{\n width: orderEntryMinWidth,\n // force order entry render actual content height\n height: \"max-content\",\n // height:\n // props.extraHeight && props.extraHeight > 100\n // ? undefined\n // : \"max-content\",\n }}\n >\n {orderEntryWidget}\n <Box height={props.extraHeight} />\n </Flex>\n </Flex>\n\n <Box\n intensity={900}\n r=\"2xl\"\n p={2}\n style={{\n height: dataListSplitHeightSM,\n minHeight: Math.max(dataListMinHeight, props.dataListHeight),\n maxHeight: dataListMaxHeight,\n }}\n className=\"oui-overflow-hidden\"\n >\n {dataListWidget}\n </Box>\n </SplitLayout>\n );\n }\n\n return (\n <Flex\n style={{\n minHeight: minScreenHeight,\n minWidth: 1440 - scrollBarWidth,\n }}\n className={cn(\n props.className,\n layout === \"left\" && \"oui-flex-row-reverse\",\n tradingViewFullScreen &&\n \"oui-relative oui-w-screen oui-h-[calc(100vh-80px)] !oui-p-0 oui-overflow-hidden\",\n )}\n width=\"100%\"\n p={2}\n gap={2}\n >\n {!max4XL && marketsView}\n <SplitLayout\n className=\"oui-flex oui-flex-1 oui-overflow-hidden\"\n onSizeChange={onSizeChange}\n disable={!horizontalDraggable}\n >\n {layout === \"left\" && orderEntryView}\n {mainView}\n {layout === \"right\" && orderEntryView}\n </SplitLayout>\n </Flex>\n );\n};\n","import React, { FC, PropsWithChildren, SVGProps, useState } from \"react\";\nimport { Box, cn, Flex, Tooltip } from \"@orderly.network/ui\";\n\nexport type RemovablePanelProps = {\n className?: string;\n index: number;\n onLayout: (currentIdx: number, targetIdx: number) => void;\n showIndicator?: boolean;\n};\n\nexport const RemovablePanel: React.FC<\n PropsWithChildren<RemovablePanelProps>\n> = (props) => {\n const { showIndicator = true } = props;\n const [open, setOpen] = useState(false);\n return (\n <Box\n intensity={900}\n r=\"2xl\"\n p={3}\n width=\"100%\"\n className={cn(\"oui-relative\", props.className)}\n >\n {props.children}\n <Tooltip\n open={open}\n onOpenChange={setOpen}\n side=\"left\"\n align=\"start\"\n sideOffset={-4}\n alignOffset={-4}\n content={\n <Flex direction=\"column\" gapY={2}>\n {[TopIcon, MiddleIcon, BottomIcon].map((Icon, idx) => (\n <Icon\n key={idx}\n className={cn(\n \"oui-rounded oui-cursor-pointer hover:oui-bg-base-5\",\n props.index === idx && \"oui-bg-base-5\",\n )}\n onClick={() => {\n props.onLayout?.(props.index, idx);\n setOpen(false);\n }}\n />\n ))}\n </Flex>\n }\n delayDuration={0}\n className={cn(\n \"oui-bg-base-9 oui-rounded\",\n \"oui-border oui-border-line-12\",\n \"oui-p-1\",\n )}\n arrow={{ className: \"oui-fill-transparent\" }}\n >\n {showIndicator && (\n <div className=\"oui-absolute oui-right-[1px] oui-top-[18px]\">\n <IndicatorIcon\n className={cn(\n \"oui-text-base-contrast-20 hover:oui-text-base-contrast-80\",\n \"oui-cursor-pointer\",\n )}\n />\n </div>\n )}\n </Tooltip>\n </Box>\n );\n};\n\nexport const IndicatorIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"10\"\n height=\"16\"\n viewBox=\"0 0 10 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect x=\"2\" y=\"2\" width=\"6\" height=\"2\" rx=\"1\" />\n <rect x=\"2\" y=\"7\" width=\"6\" height=\"2\" rx=\"1\" />\n <rect x=\"2\" y=\"12\" width=\"6\" height=\"2\" rx=\"1\" />\n </svg>\n);\n\nexport const TopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect\n x=\"1.333\"\n y=\"2.667\"\n width=\"13.333\"\n height=\"4\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n <rect\n x=\"2.667\"\n y=\"12\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <rect\n x=\"2.667\"\n y=\"8.667\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n);\n\nexport const MiddleIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect\n x=\"1.333\"\n y=\"6\"\n width=\"13.333\"\n height=\"4\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n <rect\n x=\"2.667\"\n y=\"12\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <rect\n x=\"2.667\"\n y=\"2.667\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n);\n\nexport const BottomIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect\n x=\"1.333\"\n y=\"9.333\"\n width=\"13.333\"\n height=\"4\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n <rect\n x=\"2.667\"\n y=\"6\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <rect\n x=\"2.667\"\n y=\"2.667\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n);\n","import { FC, PropsWithChildren, SVGProps, useState } from \"react\";\nimport {\n Box,\n CloseIcon,\n cn,\n Divider,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport type LayoutPosition = \"left\" | \"right\";\n\nexport type SwitchLayoutProps = {\n layout?: LayoutPosition;\n onLayout?: (layout: LayoutPosition) => void;\n};\n\nexport const SwitchLayout: FC<SwitchLayoutProps> = (props) => {\n const { t } = useTranslation();\n return (\n <SwitchLayoutDropDown {...props}>\n <Flex\n px={3}\n className={cn(\n \"oui-rounded-md\",\n \"oui-h-[28px]\",\n \"oui-cursor-pointer oui-transition-all\",\n \"oui-bg-base-6 hover:oui-bg-base-4\",\n \"oui-text-base-contrast-54 hover:oui-text-base-contrast-80\"\n )}\n gapX={1}\n ml={3}\n justify=\"center\"\n itemAlign=\"center\"\n >\n <LayoutIcon />\n <Text size=\"2xs\" weight=\"semibold\">\n {t(\"trading.layout\")}\n </Text>\n </Flex>\n </SwitchLayoutDropDown>\n );\n};\n\nexport const SwitchLayoutDropDown: FC<PropsWithChildren<SwitchLayoutProps>> = (\n props\n) => {\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n const renderItem = (position: LayoutPosition) => {\n return (\n <Flex\n direction=\"column\"\n gapY={2}\n onClick={() => {\n props.onLayout?.(position);\n setOpen(false);\n }}\n className=\"oui-group\"\n >\n <Flex\n justify={position === \"right\" ? \"end\" : \"start\"}\n className={cn(\n \"oui-w-[148px] oui-h-[100px]\",\n \"oui-bg-base-10 oui-rounded-[10px]\",\n \"oui-border-[4px] oui-border-base-5 group-hover:oui-border-primary-light\",\n props.layout === position && \"!oui-border-primary-light\"\n )}\n >\n <Box p={1}>\n <OrderEntryIcon />\n </Box>\n </Flex>\n <Text\n size=\"2xs\"\n intensity={54}\n className={cn(\n \"oui-text-base-contrast-54 group-hover:oui-text-base-contrast-80\",\n props.layout === position && \"oui-text-base-contrast-80\"\n )}\n >\n {position === \"right\"\n ? t(\"trading.layout.right\")\n : t(\"trading.layout.left\")}\n </Text>\n </Flex>\n );\n };\n\n const content = (\n <>\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n mt={3}\n className=\"oui-mb-[10px]\"\n >\n <Text size=\"base\" intensity={98}>\n {t(\"trading.layout\")}\n </Text>\n <CloseIcon\n size={16}\n className=\"oui-text-base-contrast-80 oui-cursor-pointer\"\n opacity={0.98}\n onClick={() => {\n setOpen(false);\n }}\n />\n </Flex>\n <Divider />\n <Flex gapX={6} mt={5}>\n {renderItem(\"right\")}\n {renderItem(\"left\")}\n </Flex>\n </>\n );\n\n return (\n <DropdownMenuRoot open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>{props.children}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n align=\"end\"\n className={cn(\n \"oui-bg-base-8 oui-p-5 oui-pt-0 oui-w-[360px] oui-font-semibold\"\n )}\n >\n {content}\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n\nexport const LayoutIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M3.832 1.994c-.736 0-1.333.597-1.333 1.333v9.334c0 .737.597 1.333 1.333 1.333H6.5c.737 0 1.333-.596 1.333-1.333V3.327c0-.736-.596-1.333-1.333-1.333zm6.667 0c-.737 0-1.333.597-1.333 1.333v2.667c0 .737.596 1.333 1.333 1.333h2.667c.736 0 1.333-.596 1.333-1.333V3.327c0-.736-.597-1.333-1.333-1.333zm.437 6.679a2.7 2.7 0 0 0-1.033.607.284.284 0 0 0-.061.339c.222.411-.01.851-.512.876a.29.29 0 0 0-.26.217c-.05.207-.07.38-.07.608 0 .19.02.407.06.599a.28.28 0 0 0 .252.217c.506.044.756.429.53.92a.28.28 0 0 0 .06.321c.296.273.635.466 1.034.59a.285.285 0 0 0 .312-.104c.31-.427.757-.428 1.05 0a.28.28 0 0 0 .313.113 2.8 2.8 0 0 0 1.042-.599.28.28 0 0 0 .06-.33c-.23-.466.035-.894.513-.902a.28.28 0 0 0 .269-.209c.048-.199.06-.372.06-.616q0-.316-.069-.616a.276.276 0 0 0-.27-.217c-.469-.001-.732-.463-.502-.868a.27.27 0 0 0-.053-.339 2.8 2.8 0 0 0-1.059-.607.274.274 0 0 0-.312.112c-.268.417-.77.425-1.033.009a.284.284 0 0 0-.321-.121m.842 1.536a1.111 1.111 0 1 1 0 2.222 1.111 1.111 0 0 1 0-2.222\" />\n </svg>\n);\n\nexport const OrderEntryIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"36\"\n height=\"84\"\n viewBox=\"0 0 36 84\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect width=\"36\" height=\"17\" rx=\"2\" fill=\"#181C23\" />\n <rect y=\"19\" width=\"36\" height=\"54\" rx=\"2\" fill=\"#181C23\" />\n <rect y=\"75\" width=\"36\" height=\"9\" rx=\"2\" fill=\"#181C23\" />\n <rect\n x=\"3\"\n y=\"79\"\n width=\"30\"\n height=\"1\"\n rx=\"0.5\"\n fill=\"url(#paint0_linear_17647_26849)\"\n />\n <rect x=\"3\" y=\"22\" width=\"14\" height=\"6\" rx=\"2\" fill=\"#008676\" />\n <rect x=\"19\" y=\"22\" width=\"14\" height=\"6\" rx=\"2\" fill=\"#D92D6B\" />\n <rect x=\"3\" y=\"11\" width=\"14\" height=\"3\" rx=\"1.5\" fill=\"#333948\" />\n <rect x=\"19\" y=\"11\" width=\"14\" height=\"3\" rx=\"1.5\" fill=\"#335FFC\" />\n <rect x=\"3\" y=\"62\" width=\"30\" height=\"8\" rx=\"2\" fill=\"#008676\" />\n <defs>\n <linearGradient\n id=\"paint0_linear_17647_26849\"\n x1=\"33\"\n y1=\"79.5\"\n x2=\"3\"\n y2=\"79.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import { RefObject, useEffect, useMemo, useRef, useState } from \"react\";\nimport Split from \"@uiw/react-split\";\nimport {\n useAccount,\n useCollateral,\n useLocalStorage,\n useMediaQuery,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { modal } from \"@orderly.network/ui\";\nimport type { LayoutPosition } from \"../../components/desktop/layout/switchLayout\";\nimport { useSplitPersistent } from \"../../components/desktop/layout/useSplitPersistent\";\nimport { PortfolioSheetWidget } from \"../../components/mobile/portfolioSheet\";\nimport { useTradingLocalStorage } from \"../../hooks/\";\nimport { useTradingPageContext } from \"../../provider/tradingPageContext\";\nimport { TradingPageState } from \"../../types/types\";\nimport { useFirstTimeDeposit } from \"./hooks/useFirstTimeDeposit\";\n\nexport type TradingState = ReturnType<typeof useTradingScript>;\n\nexport const scrollBarWidth = 6;\nexport const topBarHeight = 48;\nexport const bottomBarHeight = 29;\nexport const space = 8;\nexport const symbolInfoBarHeight = 54;\n\nexport const orderEntryMinWidth = 280;\nexport const orderEntryMaxWidth = 360;\n\nexport const orderbookMinWidth = 280;\nexport const orderbookMaxWidth = 732;\n\nexport const orderbookMinHeight = 464;\nexport const orderbookMaxHeight = 728;\n\nexport const tradindviewMinHeight = 320;\n\nexport const tradingViewMinWidth = 540;\n\nexport const dataListMaxHeight = 800;\nexport const dataListInitialHeight = 350;\n\nconst ORDERLY_ORDER_ENTRY_SIDE_MARKETS_LAYOUT =\n \"orderly_order_entry_side_markets_layout\";\n\nconst ORDERLY_SIDE_MARKETS_MODE_KEY = \"orderly_side_markets_mode\";\n\nexport const useTradingScript = () => {\n const [openMarketsSheet, setOpenMarketsSheet] = useState(false);\n const props = useTradingPageContext();\n const { state } = useAccount();\n const { t } = useTranslation();\n const { wrongNetwork, disabledConnect, restrictedInfo, onRouteChange } =\n useAppContext();\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n\n const isFirstTimeDeposit = useFirstTimeDeposit();\n\n const { totalValue } = useCollateral();\n\n const total = useDataTap(totalValue);\n\n /** max-width: 1279px */\n const max2XL = useMediaQuery(\"(max-width: 1279px)\");\n\n /** min-width: 1440px */\n const min3XL = useMediaQuery(\"(min-width: 1440px)\");\n\n /** max-width: 1680px */\n const max4XL = useMediaQuery(\"(max-width: 1680px)\");\n\n // Order entry and side market list position, default Order entry in right\n const [layout, setLayout] = useLocalStorage<LayoutPosition>(\n ORDERLY_ORDER_ENTRY_SIDE_MARKETS_LAYOUT,\n \"right\",\n );\n\n const canTrade = useMemo<boolean>(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n const onShowPortfolioSheet = () => {\n if (canTrade) {\n modal.sheet({\n title: t(\"trading.asset&Margin\"),\n leading: props.bottomSheetLeading,\n content: <PortfolioSheetWidget />,\n });\n }\n };\n\n const horizontalDraggable = useMemo(() => min3XL, [min3XL]);\n\n const positionsState = useOrderEntryPositions({\n canTrade,\n isFirstTimeDeposit,\n });\n\n const marketsCollapseState = useMarketsCollapse({ resizeable: min3XL });\n\n const observerState = useObserverOrderEntry({ max2XL });\n\n const marketsWidth = useMemo(() => {\n switch (marketsCollapseState.panelSize) {\n case \"small\":\n return 0;\n case \"middle\":\n return 70;\n case \"large\":\n return 280;\n default:\n return 0;\n }\n }, [marketsCollapseState.panelSize]);\n\n const tradindviewMaxHeight = max2XL ? 1200 : 600;\n\n const dataListMinHeight = canTrade ? 379 : 277;\n\n const splitSizeState = useSplitSize({ dep: layout });\n\n const tradingViewHeightState = useExtraHeight({\n orderEntryViewRef: observerState.orderEntryViewRef,\n tradindviewMaxHeight,\n dataListMinHeight,\n });\n\n const navigateToPortfolio =\n typeof onRouteChange === \"function\"\n ? () => onRouteChange({ href: \"/portfolio\", name: t(\"common.portfolio\") })\n : undefined;\n\n const map = {\n layout,\n onLayout: setLayout,\n max2XL,\n min3XL,\n max4XL,\n canTrade,\n openMarketsSheet,\n onOpenMarketsSheetChange: setOpenMarketsSheet,\n horizontalDraggable,\n ...marketsCollapseState,\n ...positionsState,\n ...splitSizeState,\n ...observerState,\n restrictedInfo,\n ...tradingViewHeightState,\n marketsWidth,\n tradindviewMaxHeight,\n dataListMinHeight,\n total,\n hideAssets,\n setHideAssets,\n onShowPortfolioSheet,\n navigateToPortfolio,\n isFirstTimeDeposit,\n };\n\n return { ...props, ...map } as TradingPageState & typeof map;\n};\n\nconst useMarketsCollapse = (options: { resizeable: boolean }) => {\n const { resizeable } = options;\n const [animating, setAnimating] = useState(false);\n\n const [panelSize, setPanelSize] = useLocalStorage<\n \"small\" | \"middle\" | \"large\"\n >(ORDERLY_SIDE_MARKETS_MODE_KEY, \"large\");\n\n const onPanelSizeChange = (collapsed: \"small\" | \"middle\" | \"large\") => {\n setPanelSize(collapsed);\n setAnimating(true);\n };\n\n const memoizedPanelSize = useMemo<\"small\" | \"middle\" | \"large\">(() => {\n // under 1440px markets force collapsed\n return resizeable ? panelSize : \"middle\";\n }, [resizeable, panelSize]);\n\n return {\n resizeable: resizeable,\n panelSize: memoizedPanelSize,\n onPanelSizeChange: onPanelSizeChange,\n animating: animating,\n setAnimating: setAnimating,\n } as const;\n};\n\nconst useOrderEntryPositions = (options: {\n canTrade: boolean;\n isFirstTimeDeposit: boolean;\n}) => {\n const { canTrade, isFirstTimeDeposit } = options;\n\n const [positions, setPositions] = useLocalStorage(\n \"orderly_assets_orderEntry_margin_positions\",\n [0, 1, 2],\n );\n\n const updatePositions = (currentIdx: number, targetIdx: number) => {\n const pos = [...positions];\n // [0,1,2] => [1,2,0]\n if (currentIdx === 0 && targetIdx === pos.length - 1) {\n pos[targetIdx] = positions[currentIdx];\n for (let i = 0; i < pos.length - 1; i++) {\n pos[i] = positions[i + 1];\n }\n\n // [0,1,2] => [2,0,1]\n } else if (currentIdx === pos.length - 1 && targetIdx === 0) {\n pos[targetIdx] = positions[currentIdx];\n for (let i = 1; i < pos.length; i++) {\n pos[i] = positions[i - 1];\n }\n } else {\n // [0,1,2] => [1,0,2], [0,1,2] => [0,2,1]\n [pos[currentIdx], pos[targetIdx]] = [pos[targetIdx], pos[currentIdx]];\n }\n setPositions(pos);\n };\n\n const showPositionIcon = useMemo(\n () => canTrade && !isFirstTimeDeposit,\n [canTrade, isFirstTimeDeposit],\n );\n\n const pos = useMemo(() => {\n return showPositionIcon ? (positions as number[]) : [0, 1, 2];\n }, [showPositionIcon, positions]);\n\n return {\n positions: pos,\n showPositionIcon,\n updatePositions,\n };\n};\n\nconst useSplitSize = (options: { dep: any }) => {\n const { dep } = options;\n const [mainSplitSize, setMainSplitSize] = useSplitPersistent(\n \"orderly_main_split_size\",\n `${orderEntryMinWidth}px`,\n dep,\n );\n const [dataListSplitSize, setDataListSplitSize] = useSplitPersistent(\n \"orderly_datalist_split_size\",\n `${dataListInitialHeight}px`,\n // undefined,\n );\n const [orderBookSplitSize, setOrderbookSplitSize] = useSplitPersistent(\n \"orderly_orderbook_split_size\",\n \"280px\",\n dep,\n );\n\n const [dataListSplitHeightSM, setDataListSplitHeightSM] = useSplitPersistent(\n \"orderly_datalist_split_height_sm\",\n \"350px\",\n );\n\n const [orderBookSplitHeightSM, setOrderbookSplitHeightSM] =\n useSplitPersistent(\"orderly_orderbook_split_height_sm\", \"280px\");\n\n return {\n orderBookSplitSize,\n setOrderbookSplitSize,\n dataListSplitSize,\n setDataListSplitSize,\n mainSplitSize,\n setMainSplitSize,\n dataListSplitHeightSM,\n setDataListSplitHeightSM,\n orderBookSplitHeightSM,\n setOrderbookSplitHeightSM,\n };\n};\n\nconst useObserverOrderEntry = (options: { max2XL: boolean }) => {\n const { max2XL } = options;\n const [orderEntryHeight, setOrderEntryHeight] = useState(0);\n const orderEntryViewRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = orderEntryViewRef.current;\n\n if (!element || !max2XL) {\n return;\n }\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const height = entry.contentRect.height;\n if (height) {\n setOrderEntryHeight(height);\n }\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.unobserve(element);\n };\n }, [orderEntryViewRef, max2XL]);\n\n return {\n orderEntryViewRef,\n orderEntryHeight,\n };\n};\n\nexport function getOffsetSizeNum(size: string | null) {\n if (size) {\n return `${100 - Math.min(Number(size), 100)}`;\n }\n return \"\";\n}\n\nfunction useExtraHeight(options: {\n orderEntryViewRef: RefObject<HTMLDivElement>;\n tradindviewMaxHeight: number;\n dataListMinHeight: number;\n}) {\n const { tradindviewMaxHeight, dataListMinHeight } = options;\n const tradingviewAndOrderbookSplitRef = useRef<Split>(null);\n const max2XLSplitRef = useRef<Split>(null);\n\n const [extraHeight, setExtraHeight] = useLocalStorage(\n \"orderly_order_entry_extra_height\",\n 0,\n );\n\n const space = 10 + 12;\n\n const [dataListHeight, setDataListHeight] = useLocalStorage(\n \"orderly_trading_data_list_height\",\n dataListMinHeight,\n );\n\n const onTradingviewAndOrderbookDragging = (\n preSize: number,\n nextSize: number,\n ) => {\n const boxHeight = tradingviewAndOrderbookSplitRef?.current?.boxHeight;\n if (!boxHeight) {\n return;\n }\n\n const splitTradingviewHeight = (boxHeight * preSize) / 100;\n const splitOrderbookHeight = (boxHeight * nextSize) / 100;\n\n const tradingviewHeight = Math.min(\n Math.max(splitTradingviewHeight, tradindviewMinHeight),\n tradindviewMaxHeight,\n );\n\n const orderbookHeight = Math.min(\n Math.max(splitOrderbookHeight, orderbookMinHeight),\n orderbookMaxHeight,\n );\n\n const orderEntryHeight =\n options.orderEntryViewRef.current?.clientHeight || 0;\n\n // console.log(\"tradingviewHeight\", splitTradingviewHeight, tradingviewHeight);\n // console.log(\"orderbookHeight\", splitOrderbookHeight, orderbookHeight);\n\n if (splitOrderbookHeight >= orderbookHeight) {\n const offset = splitOrderbookHeight - orderbookHeight;\n // console.log(\"offset ---\", offset);\n setExtraHeight(Math.max(0, extraHeight - offset));\n } else if (\n tradingviewHeight + orderbookHeight <\n tradindviewMaxHeight + orderbookMaxHeight\n ) {\n const height =\n tradingviewHeight + orderbookHeight + space + symbolInfoBarHeight;\n\n const offset = Math.max(0, height - orderEntryHeight);\n // console.log(\"offset ++++\", height, offset);\n setExtraHeight(extraHeight + offset);\n }\n };\n\n const onDataListSplitHeightDragging = (preSize: number, nextSize: number) => {\n const boxHeight = max2XLSplitRef?.current?.boxHeight;\n if (!boxHeight) {\n return;\n }\n\n // const splitTradingAndOrderbookHeight = (boxHeight * preSize) / 100;\n const splitDataListHeight = (boxHeight * nextSize) / 100;\n\n if (\n splitDataListHeight >= dataListMinHeight &&\n splitDataListHeight <= dataListMaxHeight\n ) {\n setDataListHeight(splitDataListHeight);\n const offset = splitDataListHeight - dataListHeight;\n if (offset > 0) {\n setExtraHeight(Math.max(0, extraHeight - offset));\n }\n }\n };\n\n return {\n max2XLSplitRef,\n tradingviewAndOrderbookSplitRef,\n onTradingviewAndOrderbookDragging,\n onDataListSplitHeightDragging,\n extraHeight,\n dataListHeight,\n };\n}\n","import { useMemo } from \"react\";\n\nexport const useSplitPersistent = (\n key: string,\n defaulValue?: string,\n dep?: any\n): [string | undefined, (size: string) => void] => {\n const size = useMemo(() => {\n const size = localStorage.getItem(key);\n\n if (size) {\n return `${size}%`;\n }\n return defaulValue;\n }, [key, defaulValue, dep]);\n\n const setSize = (size: string) => {\n localStorage.setItem(key, size);\n };\n\n return [size, setSize];\n};\n","import { useMemo } from \"react\";\nimport {\n useAccount,\n useAssetsHistory,\n useCollateral,\n} from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport {\n AccountStatusEnum,\n AssetHistorySideEnum,\n AssetHistoryStatusEnum,\n} from \"@orderly.network/types\";\n\nexport const useFirstTimeDeposit = () => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { totalValue } = useCollateral({\n dp: 2,\n });\n\n const unavailable =\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n const { startTime, endTime } = useMemo(() => {\n const d = new Date();\n // must set last second of today, when wallet ws changed, it will get latest data from api\n const today = new Date(\n d.getFullYear(),\n d.getMonth(),\n d.getDate(),\n 23,\n 59,\n 59,\n );\n\n const endTime = today.getTime();\n // 90 days ago timestamp\n const startTime = endTime - 90 * 24 * 60 * 60 * 1000;\n\n return {\n startTime,\n endTime,\n };\n }, []);\n\n const [_, { meta }] = useAssetsHistory(\n {\n startTime,\n endTime,\n page: 1,\n pageSize: 5,\n side: AssetHistorySideEnum.DEPOSIT,\n status: AssetHistoryStatusEnum.COMPLETED,\n },\n {\n shouldUpdateOnWalletChanged: (data) =>\n data.side === AssetHistorySideEnum.DEPOSIT &&\n data.transStatus === AssetHistoryStatusEnum.COMPLETED,\n },\n );\n\n return !unavailable && totalValue === 0 && meta?.total === 0;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n MarketsSheetWidget,\n SymbolInfoBarWidget,\n} from \"@orderly.network/markets\";\nimport {\n Box,\n SimpleSheet,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { DataListWidget } from \"../../components/mobile/dataList\";\nimport { OrderBookAndEntryWidget } from \"../../components/mobile/orderBookAndEntry\";\nimport { TopTabWidget } from \"../../components/mobile/topTab\";\nimport { TradingState } from \"./trading.script\";\n\nconst MaybeEqual: React.FC = () => {\n return (\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.456 3.48a3.5 3.5 0 0 0 .431-.567 9 9 0 0 0 .361-.654l-.648-.66-.107.185q-.071.12-.142.244a3 3 0 0 1-.27.396 1.4 1.4 0 0 1-.318.29.67.67 0 0 1-.38.114q-.307 0-.666-.194t-.742-.42q-.383-.227-.777-.42a1.7 1.7 0 0 0-.771-.194q-.401.001-.72.154a2.1 2.1 0 0 0-.57.404 2.6 2.6 0 0 0-.43.574 5 5 0 0 0-.307.646l.649.66q.165-.437.464-.833.298-.395.742-.396.347 0 .7.194.354.193.721.42.37.227.763.42.396.195.826.195.374.001.665-.155.29-.151.526-.404m.352 2.941a3.5 3.5 0 0 0 .431-.566q.196-.315.361-.654l-.648-.66-.107.184-.142.244a3 3 0 0 1-.27.396 1.4 1.4 0 0 1-.318.29.67.67 0 0 1-.38.115q-.307 0-.666-.195-.36-.193-.742-.42-.383-.226-.778-.42a1.7 1.7 0 0 0-.77-.194q-.401.001-.72.154a2.1 2.1 0 0 0-.57.405 2.6 2.6 0 0 0-.43.574 5 5 0 0 0-.307.646l.649.66q.165-.437.464-.833.297-.395.742-.396.347 0 .7.194.354.193.721.42.369.226.763.42.396.194.826.194.374.001.665-.154.29-.152.526-.404\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n );\n};\n\nexport const MobileLayout: FC<TradingState> = (props) => {\n const { t } = useTranslation();\n const topBar = (\n <Box intensity={900} px={3} height={54}>\n <SymbolInfoBarWidget\n symbol={props.symbol}\n onSymbol={() => props.onOpenMarketsSheetChange(true)}\n trailing={\n <Flex\n direction={\"column\"}\n itemAlign={\"end\"}\n className=\"oui-cursor-pointer oui-text-[11px]\"\n onClick={props.onShowPortfolioSheet}\n >\n <Flex>\n <Text intensity={54}>{t(\"common.totalValue\")}</Text>\n <button\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n props.setHideAssets(!props.hideAssets);\n }}\n className=\"oui-px-1\"\n >\n {props.hideAssets ? (\n <EyeIcon\n color=\"primary\"\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n ) : (\n <EyeCloseIcon\n color=\"primary\"\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n )}\n </button>\n <MaybeEqual />\n </Flex>\n <Text.numeral\n suffix={<Text intensity={20}>&nbsp;USDC</Text>}\n dp={2}\n visible={!props.hideAssets}\n >\n {props.canTrade ? (props.total ?? \"--\") : \"--\"}\n </Text.numeral>\n </Flex>\n }\n />\n <SimpleSheet\n open={props.openMarketsSheet}\n onOpenChange={props.onOpenMarketsSheetChange}\n classNames={{\n body: \"oui-h-full oui-pb-0\",\n content: \"oui-w-[280px] !oui-p-0\",\n }}\n contentProps={{ side: \"left\", closeable: false }}\n >\n <MarketsSheetWidget\n symbol={props.symbol}\n onSymbolChange={(symbol) => {\n props.onOpenMarketsSheetChange(false);\n props.onSymbolChange?.(symbol);\n }}\n />\n </SimpleSheet>\n </Box>\n );\n\n return (\n <div className=\"oui-relative oui-grid oui-gap-1 oui-bg-base-10\">\n <main className=\"oui-hide-scrollbar oui-space-y-1 oui-overflow-y-auto\">\n {topBar}\n <TopTabWidget className=\"oui-mx-1 oui-rounded-xl oui-bg-base-9\" />\n <OrderBookAndEntryWidget />\n <DataListWidget\n symbol={props.symbol}\n className=\"oui-mx-1 oui-rounded-xl\"\n sharePnLConfig={props.sharePnLConfig}\n />\n </main>\n </div>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport {\n Button,\n Checkbox,\n Divider,\n Flex,\n TabPanel,\n Tabs,\n Text,\n} from \"@orderly.network/ui\";\nimport { MobileOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport {\n MobileLiquidationWidget,\n MobilePositionHistoryWidget,\n MobilePositionsWidget,\n} from \"@orderly.network/ui-positions\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\nimport {\n DataListState,\n DataListTabSubType,\n DataListTabType,\n} from \"./dataList.script\";\n\nexport const DataList: FC<\n DataListState & {\n className?: string;\n }\n> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Tabs\n value={props.tab}\n onValueChange={(e: any) => props.setTab(e)}\n size=\"lg\"\n className={props.className}\n classNames={{\n tabsList:\n \"oui-bg-base-9 oui-rounded-t-xl oui-p-2 oui-overflow-x-scroll oui-hide-scrollbar\",\n }}\n >\n <TabPanel\n title={`${t(\"common.positions\")} ${\n (props.positionCount ?? 0) > 0 ? `(${props.positionCount})` : \"\"\n }`}\n value={DataListTabType.position}\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n title={`${t(\"orders.status.pending\")} ${\n (props.pendingOrderCount ?? 0) > 0\n ? `(${props.pendingOrderCount})`\n : \"\"\n }`}\n value={DataListTabType.pending}\n >\n <OrdersView\n type={TabType.pending}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...props}\n />\n </TabPanel>\n <TabPanel\n title={`${t(\"common.tpsl\")} ${\n (props.tpSlOrderCount ?? 0) > 0 ? `(${props.tpSlOrderCount})` : \"\"\n }`}\n value={DataListTabType.tp_sl}\n >\n <OrdersView\n type={TabType.tp_sl}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...props}\n />\n </TabPanel>\n <TabPanel title={t(\"trading.history\")} value={DataListTabType.history}>\n <HistoryTab {...props} />\n </TabPanel>\n <TabPanel\n title={t(\"positions.liquidation\")}\n value={DataListTabType.liquidation}\n >\n <MobileLiquidationWidget\n enableLoadMore={true}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n classNames={{ cell: \"oui-p-2 oui-bg-base-9 oui-rounded-xl\" }}\n />\n </TabPanel>\n </Tabs>\n );\n};\n\nconst PositionsView: FC<DataListState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={2}>\n <PositionHeaderWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n unPnlPriceBasis={props.unPnlPriceBasis}\n />\n <MobilePositionsWidget\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n sharePnLConfig={props.sharePnLConfig}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n />\n </Flex>\n );\n};\n\nconst OrdersView: FC<\n DataListState & {\n type: TabType;\n ordersStatus?: OrderStatus;\n }\n> = (props) => {\n return (\n <Flex direction={\"column\"} pb={2} width={\"100%\"}>\n <Divider className=\"oui-w-full\" />\n {props.type !== TabType.orderHistory && (\n <SymbolControlHeader {...props} />\n )}\n <MobileOrderListWidget\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n type={props.type}\n ordersStatus={props.ordersStatus}\n classNames={{\n root: \"oui-w-full oui-hide-scrollbar oui-overflow-y-hidden\",\n content: \"!oui-space-y-1\",\n cell: \"oui-py-2 oui-bg-base-9 oui-p-2 oui-rounded-xl\",\n }}\n sharePnLConfig={props.sharePnLConfig}\n showFilter={props.type === TabType.orderHistory}\n filterConfig={{\n range: {\n from: undefined,\n to: undefined,\n },\n }}\n />\n </Flex>\n );\n};\n\nconst SymbolControlHeader: FC<\n DataListState & {\n type: TabType;\n ordersStatus?: OrderStatus;\n }\n> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n px={2}\n py={2}\n width={\"100%\"}\n justify={\"between\"}\n gap={2}\n className=\"oui-rounded-b-xl oui-bg-base-9\"\n >\n <Flex className=\"oui-cursor-pointer oui-gap-[2px]\">\n <Checkbox\n color=\"white\"\n checked={!props.showAllSymbol}\n onCheckedChange={(checked: boolean) => {\n props.setShowAllSymbol(!checked);\n }}\n />\n <Text\n size=\"2xs\"\n intensity={54}\n onClick={() => {\n props.setShowAllSymbol(!props.showAllSymbol);\n }}\n >\n {t(\"trading.hideOtherSymbols\")}\n </Text>\n </Flex>\n <Button\n variant=\"outlined\"\n size=\"xs\"\n color=\"secondary\"\n onClick={(e) => {\n props.onCloseAll(props.type);\n }}\n >\n {t(\"trading.orders.closeAll\")}\n </Button>\n </Flex>\n );\n};\n\nconst HistoryTab: FC<DataListState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <div className=\"oui-min-h-[300px]\">\n <Tabs\n value={props.subTab}\n onValueChange={(e: any) => props.setSubTab(e)}\n size=\"md\"\n classNames={{\n tabsList: \"oui-bg-base-9 oui-rounded-t-xl oui-p-2\",\n }}\n >\n <TabPanel\n title={t(\"positions.positionHistory\")}\n value={DataListTabSubType.positionHistory}\n >\n <MobilePositionHistoryWidget\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n classNames={{ cell: \"oui-p-2 oui-bg-base-9 oui-rounded-xl\" }}\n sharePnLConfig={props.sharePnLConfig}\n />\n </TabPanel>\n <TabPanel\n title={t(\"orders.orderHistory\")}\n value={DataListTabSubType.orderHistory}\n >\n <OrdersView type={TabType.orderHistory} {...props} />\n </TabPanel>\n </Tabs>\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { useOrderStream } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { modal, Text } from \"@orderly.network/ui\";\nimport { TabType } from \"@orderly.network/ui-orders\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\nimport {\n usePendingOrderCount,\n usePositionsCount,\n useTradingLocalStorage,\n} from \"../../../hooks\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport enum DataListTabType {\n position = \"Position\",\n pending = \"Pending\",\n tp_sl = \"TP/SL\",\n history = \"History\",\n liquidation = \"Liquidation\",\n}\n\nexport enum DataListTabSubType {\n positionHistory = \"Position history\",\n orderHistory = \"Order history\",\n}\n\nexport const useDataListScript = (props: {\n symbol: string;\n className?: string;\n sharePnLConfig?: SharePnLConfig;\n}) => {\n const { symbol, sharePnLConfig } = props;\n const [tab, setTab] = useState<DataListTabType>(DataListTabType.position);\n const [subTab, setSubTab] = useState<DataListTabSubType>(\n DataListTabSubType.positionHistory,\n );\n const { t } = useTranslation();\n\n const { onSymbolChange } = useTradingPageContext();\n const localStorage = useTradingLocalStorage();\n\n const [_, { cancelAllOrders, cancelAllTPSLOrders }] = useOrderStream({});\n const { positionCount } = usePositionsCount(symbol);\n const { pendingOrderCount, tpSlOrderCount } = usePendingOrderCount(symbol);\n\n const onCloseAll = (type: TabType) => {\n const title =\n type === TabType.pending\n ? t(\"orders.pending.cancelAll\")\n : type === TabType.tp_sl\n ? t(\"orders.tpsl.cancelAll\")\n : \"\";\n const content =\n type === TabType.pending\n ? t(\"orders.pending.cancelAll.description\")\n : type === TabType.tp_sl\n ? t(\"orders.tpsl.cancelAll.description\")\n : \"\";\n modal.confirm({\n title: title,\n content: <Text size=\"2xs\">{content}</Text>,\n\n onOk: async () => {\n try {\n // await cancelAll(null, { source_type: \"ALL\" });\n if (tab === DataListTabType.tp_sl) {\n await cancelAllTPSLOrders();\n } else {\n await cancelAllOrders();\n }\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 };\n\n return {\n tab,\n setTab,\n subTab,\n setSubTab,\n sharePnLConfig,\n symbol,\n positionCount,\n pendingOrderCount,\n tpSlOrderCount,\n ...localStorage,\n onCloseAll,\n onSymbolChange,\n };\n};\n\nexport type DataListState = ReturnType<typeof useDataListScript>;\n","import { useDataListScript } from \"./dataList.script\";\nimport { DataList } from \"./dataList.ui\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\n\nexport const DataListWidget = (props: {\n symbol: string;\n className?: string;\n sharePnLConfig?: SharePnLConfig;\n}) => {\n const state = useDataListScript(props);\n return <DataList {...state} className={props.className} />;\n};\n","import { FC, LegacyRef, useEffect, useRef, useState } from \"react\";\nimport { cn, Flex, Grid, Text } from \"@orderly.network/ui\";\nimport { OrderBookAndEntryState } from \"./orderBookAndEntry.script\";\nimport { OrderBookWidget } from \"../../base/orderBook\";\nimport { OrderEntryWidget } from \"@orderly.network/ui-order-entry\";\n\nexport const OrderBookAndEntry: FC<\n OrderBookAndEntryState & {\n className?: string;\n }\n> = (props) => {\n const [height, setHeight] = useState(0); \n const divRef = useRef(null); \n\n useEffect(() => {\n const div = divRef.current;\n\n if (!div) return;\n\n \n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n setHeight(entry.contentRect.height);\n }\n });\n \n resizeObserver.observe(div);\n\n \n return () => {\n resizeObserver.unobserve(div);\n };\n }, []);\n return (\n <div\n \n className={cn(\n \"oui-grid oui-grid-cols-[4fr,6fr] oui-gap-1 oui-mx-1 \",\n props.className\n )}\n >\n <div className=\"oui-bg-base-9 oui-rounded-xl\" style={{\n height: `${height + 16}px`\n }}>\n <OrderBookWidget\n symbol={props.symbol}\n height={height ? height - 44 : undefined}\n />\n </div>\n <div className=\"oui-bg-base-9 oui-rounded-xl oui-p-2\" >\n <OrderEntryWidget symbol={props.symbol} containerRef={divRef}/>\n </div>\n </div>\n );\n};\n","import { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport const useOrderBookAndEntryScript = () => {\n const { symbol } = useTradingPageContext();\n return {\n symbol,\n };\n};\n\nexport type OrderBookAndEntryState = ReturnType<\n typeof useOrderBookAndEntryScript\n>;\n","import { useOrderBookAndEntryScript } from \"./orderBookAndEntry.script\";\nimport { OrderBookAndEntry } from \"./orderBookAndEntry.ui\";\n\nexport const OrderBookAndEntryWidget = (props: {\n className?: string;\n}) => {\n const state = useOrderBookAndEntryScript();\n return (<OrderBookAndEntry className={props.className} {...state} />);\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, cn, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\nimport { MWebLastTrades } from \"../lastTrades/lastTrades.widget\";\nimport { TradeDataWidget } from \"../tradeData\";\nimport { TradingviewWidget } from \"../tradingview/tradingview.widget\";\nimport { TopTabState, TopTabType } from \"./topTab.script\";\n\nexport const TopTab: FC<\n TopTabState & {\n className?: string;\n }\n> = (props) => {\n const { t } = useTranslation();\n const { tradingViewConfig } = useTradingPageContext();\n\n return (\n <Tabs\n variant=\"contained\"\n value={props.tab}\n contentVisible={props.visible}\n onValueChange={(e) => {\n props.setTab(e as any);\n props.setVisible(true);\n }}\n className={props.className}\n classNames={{\n tabsList: \"oui-p-2\",\n tabsContent: \"oui-min-h-[176px] oui-max-h-[396px]\",\n }}\n style={{\n marginBottom: props.tab === TopTabType.chart ? \"8px\" : 0,\n }}\n trailing={\n <button className=\"oui-px-5\" onClick={props.toggleContentVisible}>\n <ChevronIcon\n className={props.visible ? \"oui-rotate-0\" : \"oui-rotate-180\"}\n />\n </button>\n }\n >\n <TabPanel title={t(\"trading.tabs.chart\")} value={TopTabType.chart}>\n <TradingviewWidget\n symbol={props.symbol}\n tradingViewConfig={tradingViewConfig}\n />\n </TabPanel>\n <TabPanel title={t(\"trading.tabs.trades\")} value={TopTabType.trades}>\n <MWebLastTrades symbol={props.symbol} />\n </TabPanel>\n <TabPanel title={t(\"trading.tabs.data\")} value={TopTabType.data}>\n <Box px={3}>\n <TradeDataWidget symbol={props.symbol} />\n </Box>\n </TabPanel>\n </Tabs>\n );\n};\n\nconst ChevronIcon = (props: { className?: string }) => {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\n \"oui-fill-base-contrast-54 hover:oui-fill-base-contrast-80\",\n props.className,\n )}\n >\n <path\n d=\"M5.721 4.585 2.726 6.578a.51.51 0 0 0-.14.7.51.51 0 0 0 .702.14l2.714-1.806 2.715 1.806c.23.153.549.089.702-.14a.51.51 0 0 0-.14-.7L6.283 4.585a.51.51 0 0 0-.562 0\"\n // fill=\"url(#a)\"\n />\n <defs>\n {/* <linearGradient\n id=\"a\"\n x1=\"9.502\"\n y1=\"6.001\"\n x2=\"2.502\"\n y2=\"6.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient> */}\n </defs>\n </svg>\n );\n};\n","import { LastTradesWidget } from \"../../base/lastTrades\";\n\nexport const MWebLastTrades = (props: { symbol: string }) => {\n return (\n <LastTradesWidget\n symbol={props.symbol}\n classNames={{\n root: \"oui-px-3 \",\n list: \"oui-min-h-[141px] oui-max-h-[202px] oui-w-full\",\n listHeader: \"oui-text-xs oui-text-base-contrast-36\",\n listItem: {\n left: \"oui-text-xs\",\n mid: \"oui-text-xs\",\n right: \"oui-text-xs\",\n },\n }}\n />\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { TradeDataState } from \"./tradeData.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const TradeData: FC<TradeDataState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} gap={2}>\n <Row\n title={t(\"common.markPrice\")}\n value={props.ticker?.mark_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title={t(\"common.indexPrice\")}\n value={props.ticker?.index_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title={t(\"markets.column.24hVolume\")}\n value={props.vol_24h}\n dp={props.symbolInfo.quote_dp}\n rule=\"human\"\n showUSDC\n />\n <Row\n title={t(\"trading.column.24High\")}\n value={props.ticker?.[\"24h_high\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title={t(\"trading.column.24Low\")}\n value={props.ticker?.[\"24h_low\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title={t(\"markets.openInterest\")}\n value={props.openInterest}\n dp={props.symbolInfo.quote_dp}\n rule=\"human\"\n showUSDC\n />\n </Flex>\n );\n};\n\nconst Row = (props: {\n title: string;\n value: any;\n dp?: number;\n rule?: \"percentages\" | \"price\" | \"human\";\n showUSDC?: boolean;\n}) => {\n const { title, value, showUSDC, dp, rule = \"price\" } = props;\n return (\n <Flex justify={\"between\"} width={\"100%\"} className=\"oui-text-xs\">\n <Text intensity={36}>{title}</Text>\n <Flex gap={1}>\n <Text.numeral rule={rule} dp={dp} intensity={80}>\n {value}\n </Text.numeral>\n {showUSDC && <Text intensity={36}>USDC</Text>}\n </Flex>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { useTickerStream } from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport const useTradeDataScript = (props: { symbol: string }) => {\n const { symbol } = props;\n const ticker = useTickerStream(symbol);\n const { symbolInfo } = useTradingPageContext();\n const vol_24h = useMemo(() => {\n const close = ticker?.[\"24h_close\"];\n const volume = ticker?.[\"24h_volume\"];\n if (close && volume && !isNaN(close) && !isNaN(volume)) {\n return new Decimal(close)\n .mul(volume)\n .toFixed(symbolInfo.quote_dp, Decimal.ROUND_DOWN);\n }\n return undefined;\n }, [ticker]);\n\n const openInterest = useMemo(() => {\n const markPrice = ticker?.[\"mark_price\"];\n const openInterest = ticker?.[\"open_interest\"];\n if (markPrice && openInterest && !isNaN(markPrice)) {\n return new Decimal(markPrice)\n .mul(Number(openInterest))\n .toFixed(symbolInfo.quote_dp, Decimal.ROUND_DOWN);\n }\n return undefined;\n }, [ticker]);\n return {\n ticker,\n symbolInfo,\n vol_24h,\n openInterest,\n };\n};\n\nexport type TradeDataState = ReturnType<typeof useTradeDataScript>;\n","import { useTradeDataScript } from \"./tradeData.script\";\nimport { TradeData } from \"./tradeData.ui\";\n\nexport const TradeDataWidget = (props: {\n symbol: string;\n}) => {\n const state = useTradeDataScript(props);\n return (<TradeData {...state} />);\n};\n","import { TradingviewWidget } from \"@orderly.network/ui-tradingview\";\nimport { KlineDragIcon } from \"../../base/icons\";\nimport { TradingviewState } from \"./tradingview.script\";\nimport { cn } from \"@orderly.network/ui\";\n\nexport function TradingviewUi(props: TradingviewState) {\n return (\n <div\n className=\"oui-pb-1 oui-flex oui-flex-col oui-gap-1\"\n style={{ height: props.height }}\n ref={props.boxRef}\n >\n <div className=\"oui-w-full oui-h-full\">\n <TradingviewWidget\n symbol={props.symbol}\n libraryPath={props.tradingViewConfig?.library_path}\n mode={3}\n scriptSRC={props.tradingViewConfig?.scriptSRC}\n customCssUrl={props.tradingViewConfig?.customCssUrl}\n {...props.tradingViewConfig}\n\n\n />\n </div>\n <div className=\"oui-relative oui-w-full\">\n <div\n ref={props.dragRef}\n className={cn(\n \"oui-h-[1px] oui-absolute oui-left-0 oui-right-0 oui-bottom-0 oui-top-0 oui-z-10 oui-mt-[7px] oui-bg-base-contrast-12\",\n props.dragging && \"oui-bg-primary \"\n )}\n >\n <KlineDragIcon\n className={cn(\n \"oui-w-3 oui-h-3 oui-absolute oui-left-1/2 -oui-top-[5px] -oui-translate-y-[0.5px] oui-text-base-contrast-12\",\n props.dragging && \" oui-text-primary\"\n )}\n />\n </div>\n </div>\n </div>\n );\n}\n","import React, { FC, SVGProps } from \"react\";\n\nexport const KlineDragIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g id=\"Arrows-expand\">\n <path id=\"Vector\"\n d=\"M5.9989 1.00708C5.8709 1.00708 5.7369 1.05008 5.6394 1.14758L3.7959 3.00708L4.4989 3.71008L5.4989 2.72607V4.50708C5.4989 4.78308 5.7229 5.00708 5.9989 5.00708C6.2749 5.00708 6.4989 4.78308 6.4989 4.50708V2.72607L7.4989 3.71008L8.2019 3.00708L6.3584 1.14758C6.2604 1.05008 6.1269 1.00708 5.9989 1.00708ZM5.9989 7.00707C5.7229 7.00707 5.4989 7.23107 5.4989 7.50707V9.28808L4.4989 8.30407L3.7959 9.00707L5.6394 10.8666C5.8349 11.0616 6.1629 11.0616 6.3584 10.8666L8.2019 9.00707L7.4989 8.30407L6.4989 9.28808V7.50707C6.4989 7.23107 6.2749 7.00707 5.9989 7.00707Z\"\n />\n </g>\n </svg>\n);\n","import { TradingviewWidgetProps } from \"./tradingview.widget\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\n\n\nconst MaxHeight = 354;\nconst MinHeight = 234;\nconst Key = 'TRADINGVIEW_MOBILE_HEIGHT';\n\nexport function useTradingviewScript(props: TradingviewWidgetProps) {\n const [height, setHeight] =useLocalStorage(Key, MinHeight);\n const [dragging, setDragging] = useState(false);\n const dragRef = useRef<HTMLDivElement>(null);\n const boxRef = useRef<HTMLDivElement>(null);\n const [offsetY, setOffsetY] = useState(0);\n const topRef = useRef<number>(0);\n\n const handleTouchStart = useCallback(\n (e: TouchEvent) => {\n if (!boxRef.current) {\n return;\n }\n setDragging(true)\n const event = e.touches[0];\n const rect =boxRef.current.getBoundingClientRect();\n e.stopPropagation();\n e.preventDefault();\n\n const offsetY = event.clientY - rect.bottom\n topRef.current =rect.top;\n setOffsetY(offsetY);\n },\n []\n );\n\n const handleTouchMove = useCallback(\n (e: TouchEvent) => {\n if (!boxRef.current) {\n return;\n }\n if (dragging) {\n e.stopPropagation();\n e.preventDefault();\n\n const event = e.touches[0];\n\n const newHeight = event.clientY - topRef.current - offsetY;\n setHeight(Math.min(Math.max(Math.round(newHeight), MinHeight),MaxHeight));\n return false;\n }\n },[dragging, offsetY]);\n\n const handleTouchEnd = useCallback(() => {\n setDragging(false)\n }, []);\n\n useEffect(() => {\n const drag = dragRef.current;\n if (!drag) {\n return;\n }\n\n\n drag.addEventListener(\"touchstart\", handleTouchStart);\n\n return () => {\n\n drag.removeEventListener(\"touchstart\", handleTouchStart);\n };\n }, [handleTouchStart]);\n\n useEffect(() => {\n\n document.addEventListener(\"touchmove\", handleTouchMove, {passive: false});\n document.addEventListener(\"touchend\", handleTouchEnd);\n\n return () => {\n\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", handleTouchEnd);\n };\n }, [\n dragging,\n handleTouchMove,\n handleTouchEnd,\n ]);\n return {\n ...props,\n\n height,\n dragging,\n dragRef,\n boxRef,\n };\n}\n\nexport type TradingviewState = ReturnType<typeof useTradingviewScript>;\n","import { TradingviewUi } from \"./tradingview.ui\";\nimport { useTradingviewScript } from \"./tradingview.script\";\nimport { TradingViewConfigInterface } from \"../../../types/types\";\n\nexport interface TradingviewWidgetProps {\n symbol: string;\n tradingViewConfig:TradingViewConfigInterface;\n}\n\nexport function TradingviewWidget(props: TradingviewWidgetProps) {\n const state = useTradingviewScript(props);\n return (\n <TradingviewUi {...state}/>\n )\n}","import { useState } from \"react\";\nimport { useTradingPageContext } from \"../../../provider/tradingPageContext\";\n\nexport enum TopTabType {\n chart = \"chart\",\n trades = \"trades\",\n data = \"data\",\n}\n\nexport const useTopTabScript = () => {\n const [tab, setTab] = useState<TopTabType>(TopTabType.chart);\n const { symbol } = useTradingPageContext();\n const [visible, setVisible] = useState(true);\n\n const toggleContentVisible = () => {\n setVisible((e) => !e);\n };\n\n return {\n tab,\n setTab,\n symbol,\n toggleContentVisible,\n setVisible,\n visible,\n };\n};\n\nexport type TopTabState = ReturnType<typeof useTopTabScript>;\n","import { useTopTabScript } from \"./topTab.script\";\nimport { TopTab } from \"./topTab.ui\";\n\nexport const TopTabWidget = (props: {\n className?: string\n}) => {\n const state = useTopTabScript();\n return (<TopTab className={props.className} {...state} />);\n};\n","import React from \"react\";\nimport { useTradingScript } from \"./trading.script\";\nimport { Trading } from \"./trading.ui\";\n\nexport const TradingWidget: React.FC = () => {\n const state = useTradingScript();\n return <Trading {...state} />;\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { TradingPageState, TradingPageProps } from \"../types/types\";\nimport { getBasicSymbolInfo } from \"../utils/utils\";\nimport { TradingPageContext } from \"./tradingPageContext\";\n\nexport const TradingPageProvider: FC<PropsWithChildren<TradingPageProps>> = (\n props,\n) => {\n const { symbol, children } = props;\n const symbolInfo = useSymbolsInfo()[symbol];\n const memoizedValue = useMemo<TradingPageState>(() => {\n const basicSymbol = getBasicSymbolInfo(symbolInfo);\n return {\n ...props,\n symbolInfo: {\n ...basicSymbol,\n symbol: symbol,\n },\n };\n }, [props, symbol, symbolInfo]);\n return (\n <TradingPageContext.Provider value={memoizedValue}>\n {children}\n </TradingPageContext.Provider>\n );\n};\n","import { TradingPageProvider } from \"../../provider/tradingPageProvider\";\nimport { TradingPageProps } from \"../../types/types\";\nimport { TradingWidget } from \"./trading.widget\";\n\nexport const TradingPage = (props: TradingPageProps) => {\n return (\n <TradingPageProvider\n symbol={props.symbol}\n tradingViewConfig={props.tradingViewConfig}\n onSymbolChange={props.onSymbolChange}\n disableFeatures={props.disableFeatures}\n overrideFeatures={props.overrideFeatures}\n referral={props.referral}\n tradingRewards={props.tradingRewards}\n bottomSheetLeading={props.bottomSheetLeading}\n sharePnLConfig={props.sharePnLConfig}\n >\n <TradingWidget />\n </TradingPageProvider>\n );\n};\n"]}