@orderly.network/trading 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +16 -6
- package/dist/index.d.ts +16 -6
- package/dist/index.js +35 -35
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +20 -20
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/desktop/dataList/dataList.ui.tsx","../src/provider/useTradingLocalStorage.ts","../src/provider/usePositionsCount.ts","../src/provider/usePendingOrderCount.ts","../src/provider/context.tsx","../src/utils/utils.ts","../src/components/desktop/dataList/dataList.script.tsx","../src/components/base/positionHeader/positionHeader.ui.tsx","../src/components/base/positionHeader/positionHeader.script.tsx","../src/components/base/positionHeader/positionHeader.widget.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/desktop/orderBook/listBox.desktop.tsx","../src/components/desktop/orderBook/cell.desktop.tsx","../src/components/base/orderBook/orderContext.tsx","../src/components/base/orderBook/cellBar.tsx","../src/components/desktop/orderBook/bids.desktop.tsx","../src/components/desktop/orderBook/asks.desktop.tsx","../src/components/desktop/orderBook/markPrice.desktop.tsx","../src/components/base/orderBook/midPriceView.tsx","../src/components/base/orderBook/markPrice.tsx","../src/components/desktop/orderBook/header.desktop.tsx","../src/components/desktop/orderBook/depthSelect.desktop.tsx","../src/components/mobile/orderBook/header.tsx","../src/components/mobile/orderBook/cell.tsx","../src/components/mobile/orderBook/listBox.tsx","../src/components/mobile/orderBook/bids.tsx","../src/components/mobile/orderBook/asks.tsx","../src/components/mobile/orderBook/markPrice.tsx","../src/components/mobile/orderBook/depthSelect.tsx","../src/components/mobile/orderBook/index.tsx","../src/components/mobile/fundingRate/fundingRate.ui.tsx","../src/components/mobile/fundingRate/fundingRate.script.tsx","../src/components/mobile/fundingRate/fundingRate.widget.tsx","../src/components/base/orderBook/orderBook.script.tsx","../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/chain/chain.ui.tsx","../src/components/mobile/bottomNavBar/chain/chain.script.tsx","../src/components/mobile/bottomNavBar/chain/chain.widget.tsx","../src/components/mobile/bottomNavBar/balance/balance.ui.tsx","../src/components/mobile/bottomNavBar/balance/balance.script.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/components/mobile/bottomNavBar/balance/balance.widget.tsx","../src/components/mobile/bottomNavBar/scanQRCode/scanQRCode.script.ts","../src/components/mobile/bottomNavBar/scanQRCode/scanQRCode.ui.tsx","../src/components/mobile/bottomNavBar/scanQRCode/scanner.tsx","../src/components/mobile/bottomNavBar/scanQRCode/widget.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/bottomNavBar.script.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.widget.tsx","../src/components/mobile/topTab/topTab.ui.tsx","../src/components/mobile/topTab/topTab.script.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.widget.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.ui.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.script.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.widget.tsx","../src/pages/trading/trading.ui.mobile.tsx","../src/components/base/secondaryLogo/index.tsx","../src/components/mobile/dataList/dataList.ui.tsx","../src/components/mobile/dataList/dataList.script.tsx","../src/components/mobile/dataList/dataList.widget.tsx","../src/pages/trading/trading.ui.desktop.tsx","../src/pages/trading/trading.script.tsx","../src/components/desktop/layout/useSplitPersistent.ts","../src/components/desktop/layout/switchLayout.tsx","../src/components/desktop/layout/removablePanel.tsx","../src/pages/trading/trading.ui.tsx","../src/pages/trading/trading.widget.tsx","../src/pages/trading/trading.page.tsx"],"names":["Box","Divider","Flex","TabPanel","Tabs","useLocalStorage","useTradingLocalStorage","props","unPnlPriceBasis","setUnPnlPriceBasic","pnlNotionalDecimalPrecision","setPnlNotionalDecimalPrecision","showAllSymbol","setShowAllSymbol","hideAssets","setHideAssets","usePositionStream","useMemo","useDataTap","usePositionsCount","symbol","data","count","useOrderStream","AlgoOrderRootType","OrderStatus","TabType","usePendingOrderCount","pendingOrdersPageSizeKey","tpslOrdersPageSizeKey","pendingOrders","pendingCount","tpslOrders","tpslCount","pendingOrderCount","tpSlOrderCount","createContext","useContext","useSymbolsInfo","getBasicSymbolInfo","symbolInfo","jsx","TradingPageContext","useTradingPageContext","TradingPageProvider","useDataListScript","current","sharePnLConfig","includedPendingOrder","localStorage","onSymbolChange","positionCount","LiquidationWidget","PositionHistoryWidget","PositionsWidget","DesktopOrderListWidget","Checkbox","Statistic","Text","useScreen","Decimal","useTranslation","jsxs","PositionHeader","isMobile","MobileLayout","DesktopLayout","UnrealPnL","Notional","checked","unrealPnLClsName","unrealPnLROIClsName","usePositionHeaderScript","calcMode","aggregated","unrealPnL","unrealPnlROI","notional","PositionHeaderWidget","state","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","key","left","mid","right","classNames","item","index","useMarketTradeStream","useLastTradesScript","isLoading","config","base","quote","baseDp","quoteDp","LastTradesWidget","useCallback","ArrowDownShortIcon","EyeIcon","EyeCloseIcon","ChevronDownIcon","Tooltip","gradientTextVariants","AuthGuard","AccountStatusEnum","useAccount","useAppContext","FaucetUi","useConfig","useMutation","useWalletConnector","ChainNamespace","isTestnet","modal","toast","useFaucetScript","connectedChain","namespace","account","operatorUrl","getTestUSDC","isMutating","loading","setLoading","showFaucet","message","res","resolve","error","FaucetWidget","Fragment","useCurrentStatusText","wrongNetwork","disabledConnect","statusText","TooltipContent","description","formula","TotalValue","totalValue","visible","onToggleVisibility","AssetDetail","unit","rule","isConnected","showPercentage","placeholder","AssetValueList","freeCollateral","marginRatioVal","renderMMR","optionsOpen","setOptionsOpen","toggleOpen","prevOpen","AssetView","networkId","isFirstTimeDeposit","onDeposit","onWithdraw","toggleVisible","title","titleColor","titleClsName","useAccountInstance","useEventEmitter","useMediaQuery","useSettleSubscription","useWalletSubscription","usePrivateQuery","useCollateral","useMarginRatio","MEDIA_TABLET","capitalizeString","DepositAndWithdrawWithSheetId","DepositAndWithdrawWithDialogId","useFirstTimeDeposit","unavailable","getKeyMemo","now","ninetyDaysAgo","startTime","endTime","searchParams","depositHistoryData","useAssetViewScript","matches","marginRatio","mmr","totalUnrealizedROI","positionsInfo","openDepositAndWithdraw","viewName","result","ee","onSettle","setVisible","side","transStatus","msg","status","_freeCollateral","_marginRatioVal","_mmr","_totalValue","AssetViewWidget","useEffect","useRef","getPrecisionByNumber","parseNumber","OrderBookContext","useOrderBookContext","OrderBookProvider","mode","setMode","totalMode","setTotalMode","CellBar","direction","transform","x","DesktopOrderBookCell","cellHeight","showTotal","onItemClick","depth","currentHover","base_dp","quote_dp","width","dp","totalAmount","isPendingOrder","priceStr","TooltipTrigger","TooltipRoot","TooltipArrow","DesktopListBox","type","findMaxItem","priceDp","maxQty","a","b","hoverIndex","setHoverIndex","Tip","isHover","calcHintInfo","totalInfo","hintInfo","content","contentDp","DesktopBids","countQty","max","DesktopAsks","len","ArrowUpShortIcon","MiddlePriceView","markPrice","lastPrice","className","iconSize","prevLastPrice","middlePrice","down","up","SimpleDialog","MarkPriceView","FlagIcon","DesktopMarkPrice","asks","bids","Spread","spread","bid1","ask1","dValue","DesktopHeader","Title","children","justifyEnd","Select","DesktopDepthSelect","options","d","Spinner","DesktopOrderBook","onDepthChange","divRef","setShowTotal","rangeInfo","resizeObserver","entries","entry","targetDiv","onModeChange","currency","qtyLabel","OrderBookCell","qty","ListBox","Bids","Asks","MarkPrice","Picker","DepthSelect","FundingRate","predFundingRate","countDown","useFundingRate","useFundingRateScript","FundingRateWidget","OrderBook","useOrderbookStream","removeTrailingZeros","DEFAULT_CELL_HEIGHT","SPACE","useOrderBookScript","height","setCellHeight","level","setLevel","allDepths","usePendingOrderStream","cellsHeight","restSpace","selDepth","depths","price","OrderBookWidget","EditIcon","LeverageWidgetId","RiskRate","riskRate","riskRateColor","currentLeverage","maxLeverage","isHigh","isMedium","isLow","isDefault","textColor","useLeverage","getRiskRateColor","useRiskRateScript","riskRateNumber","_curLeverage","_maxLeverage","RiskRateWidget","OrderBookAndTrades","TwoColLayout","TabLayout","tab","useOrderBookAndTradesScript","containerSize","setContainerSize","setTab","containerRef","OrderBookAndTradesWidget","Split","SplitLineBar","onMouseDown","rest","disable","filterCls","cls","SplitLayout","onSizeChange","barProps","_","num","ChainIcon","ChainSelectorSheetId","Chain","r","useChainScript","currentChainId","setCurrentChainId","ChainWidget","Balance","MaybeEqual","RefreshIcon","usePortfolioSheetScript","assets","useAssets","useMarginRatioAndLeverage","showSliderTip","setShowSliderTip","onSettlePnL","toggleHideAssets","totalCollateral","availableBalance","curLeverage","update","leverageLevers","marks","leverage","setLeverage","step","onLeverageChange","onSave","err","onValueCommit","getMarginRatioColor","imr","high","low","RiskIndicator","size","LeverageSlider","Trans","PortfolioSheet","Asset","MarginRatio","Leverage","Buttons","onUnsettleClick","clsName","PortfolioSheetWidget","useBalanceScript","bottomSheetLeading","canTrade","onShowPortfolioSheet","total","BalanceWidget","useScanQRCodeScript","showScanTooltip","setShowScanTooltip","showDialog","hideDialog","onScanSuccess","url","isValidURL","str","MainLogo","jsQR","WIDTH","HEIGHT","RATIO","QRCodeScanner","videoRef","canvasRef","tick","video","canvas","ctx","videoWidth","videoHeight","canvasAspectRatio","videoAspectRatio","sx","sy","sWidth","sHeight","imageData","stream","track","ScanQRCode","ScanIcon","ScanQRCodeContent","LinkDeviceIcon","viewBox","ScanQRCodeWidget","ExtensionPositionEnum","ExtensionSlot","installExtension","ArrowRightShortIcon","HeadIcon","CopyIcon","USDCIcon","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","formatAddress","Account","MobileAccountMenuExtension","BottomNavBar","renderContent","LinkDevice","showScanQRCode","DesktopIcon","Dot","LinkIcon","MobileIcon","DotIcon","useBottomNavBarScript","BottomNavBarWidget","useTopTabScript","MWebLastTrades","TradeData","showUSDC","useTickerStream","useTradeDataScript","ticker","vol_24h","close","volume","openInterest","TradeDataWidget","TradingviewWidget","KlineDragIcon","TradingviewUi","MaxHeight","MinHeight","Key","useTradingviewScript","setHeight","dragging","setDragging","dragRef","boxRef","offsetY","setOffsetY","topRef","handleTouchStart","event","rect","handleTouchMove","newHeight","handleTouchEnd","drag","TopTab","tradingViewConfig","ChevronIcon","TopTabWidget","OrderEntryWidget","OrderBookAndEntry","div","useOrderBookAndEntryScript","OrderBookAndEntryWidget","MarketsSheetWidget","SymbolInfoBarWidget","SimpleSheet","useAppConfig","SecondaryLogo","appIcons","secondary","subTab","setSubTab","cancelAllOrders","cancelAllTPSLOrders","MobileOrderListWidget","MobileLiquidationWidget","MobilePositionHistoryWidget","MobilePositionsWidget","OrdersView","HistoryTab","SymbolControlHeader","LanguageSwitcherWidget","onSymbol","topBar","useSplitPersistent","defaulValue","dep","useTradingScript","openMarketsSheet","setOpenMarketsSheet","restrictedInfo","max2XL","min3XL","max4XL","layout","setLayout","horizontalDraggable","positionsState","useOrderEntryPositions","marketsCollapseState","useMarketsCollapse","splitSizeState","useSplitSize","observerState","useObserverOrderEntry","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","SideMarketsWidget","SymbolInfoBarFullWidget","CloseIcon","DropdownMenuPortal","SwitchLayout","SwitchLayoutDropDown","LayoutIcon","renderItem","position","OrderEntryIcon","RemovablePanel","showIndicator","TopIcon","MiddleIcon","BottomIcon","Icon","idx","IndicatorIcon","onLayout","scrollBarWidth","topBarHeight","bottomBarHeight","space","tokenInfoBarHeight","marketsWidth","orderEntryMinWidth","orderEntryMaxWidth","orderbookMinWidth","orderbookMaxWidth","orderbookMinHeight","orderbookMaxHeight","tradindviewMinHeight","tradindviewMaxHeight","tradingViewMinWidth","dataListMinHeight","minScreenHeight","minScreenHeightSM","marketsWidget","marketsView","trailing","symbolInfoBarView","library_path","restTradingViewConfig","tradingviewWidget","tradingView","orderbookWidget","orderbookView","dataListWidget","dataListView","assetsOrderEntryMargin","orderEntryWidget","orderEntryView","tradingViewAndOrderbookView","renderTradingViewAndOrderbookView","mainView","Trading","TradingWidget","TradingPage"],"mappings":"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","sourcesContent":["import { FC } from \"react\";\nimport { Box, Divider, Flex, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { DataListState, DataListTabType } from \"./dataList.script\";\nimport {\n LiquidationWidget,\n PositionHistoryWidget,\n PositionsWidget,\n} from \"@orderly.network/ui-positions\";\nimport { DesktopOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\nimport { SettingWidget } from \"./setting\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { 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(\"pnlNotionalDecimalPrecision\", props?.pnlNotionalDecimalPrecision ?? 2);\n const [showAllSymbol, setShowAllSymbol] = useLocalStorage(\n \"showAllSymbol\",\n true\n );\n \n const [hideAssets, setHideAssets] = useLocalStorage(\n \"hideAssets\",\n false\n );\n\n return {\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n showAllSymbol,\n setShowAllSymbol,\n hideAssets,\n setHideAssets,\n };\n};\n","import { usePositionStream } from \"@orderly.network/hooks\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\nimport { useMemo } from \"react\";\nimport { useDataTap } from \"@orderly.network/react-app\";\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\n return {\n positionCount\n }\n};\n","import { useLocalStorage, useOrderStream } from \"@orderly.network/hooks\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\nimport { AlgoOrderRootType, OrderStatus } from \"@orderly.network/types\";\nimport { useEffect, useMemo } from \"react\";\nimport { TabType } from \"@orderly.network/ui-orders\";\nimport { useDataTap } from \"@orderly.network/react-app\";\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 },\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 },\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 { createContext, PropsWithChildren, useContext } from \"react\";\nimport { useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { TradingPageState, TradingPageProps } from \"../types/types\";\nimport { getBasicSymbolInfo } from \"../utils/utils\";\n\nexport const TradingPageContext = createContext({} as TradingPageState);\nexport const useTradingPageContext = () => {\n return useContext(TradingPageContext);\n};\n\nexport const TradingPageProvider = (\n props: PropsWithChildren<TradingPageProps>\n) => {\n const symbolInfo = useSymbolsInfo()[props.symbol];\n\n return (\n <TradingPageContext.Provider\n value={{\n ...props,\n symbolInfo: {\n ...getBasicSymbolInfo(symbolInfo),\n symbol: props.symbol,\n },\n }}\n >\n {props.children}\n </TradingPageContext.Provider>\n );\n};\n","import { utils } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { BasicSymbolInfo } from \"../types/types\";\n\nexport const getBasicSymbolInfo = (\n symbolInfo: (\n key?: keyof API.SymbolExt | undefined,\n defaultValue?: utils.ValueOf<API.SymbolExt> | undefined\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 { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { usePositionsCount } from \"../../../provider/usePositionsCount\";\nimport { usePendingOrderCount } from \"../../../provider/usePendingOrderCount\";\nimport { useTradingPageContext } from \"../../../provider/context\";\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 } 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 { useMemo } from \"react\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\n\nexport const usePositionHeaderScript = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n}) => {\n const {\n pnlNotionalDecimalPrecision,\n unPnlPriceBasis,\n symbol,\n } = 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 { 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 { 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 { key, 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 key={key}\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 React, { FC, useMemo, useState, useCallback, ReactNode } from \"react\";\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 { AssetViewState } from \"./assetView.script\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAccount, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { FaucetWidget } from \"./faucet/faucet.widget\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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}\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 notSignedIn: {\n title: t(\"connector.signIn\"),\n description: t(\"connector.trade.signIn.tooltip\"),\n titleColor: \"primary\",\n },\n disabledTrading: {\n title: t(\"connector.enableTrading\"),\n description: t(\"connector.trade.enableTrading.tooltip\"),\n titleColor: \"primary\",\n },\n default: {\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 switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return statusText.connectWallet;\n case AccountStatusEnum.NotSignedIn:\n return statusText.notSignedIn;\n case AccountStatusEnum.DisabledTrading:\n return statusText.disabledTrading;\n default:\n return statusText.default;\n }\n }, [state.status, wrongNetwork, t]);\n};\n\nexport const TooltipContent: FC<TooltipContentProps> = ({\n description,\n formula,\n}) => (\n <div className=\"oui-leading-[1.5] oui-text-2xs oui-text-base-contrast-80 oui-min-w-[204px] oui-max-w-[240px]\">\n <span>{description}</span>\n <Divider className=\"oui-border-white/10\" my={2} />\n <span>{formula}</span>\n </div>\n);\n\nconst TotalValue: FC<TotalValueProps> = ({\n totalValue,\n visible = true,\n onToggleVisibility,\n}) => {\n const { t } = useTranslation();\n\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> = ({\n label,\n description,\n formula,\n visible,\n value,\n unit,\n rule,\n isConnected,\n showPercentage = false,\n placeholder,\n}) => (\n <Flex justify=\"between\">\n <Tooltip\n content={\n (<TooltipContent description={description} formula={formula} />) as any\n }\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\nconst AssetValueList: FC<AssetValueListProps> = ({\n visible = true,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\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 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\n <Box\n style={{\n transform: \"translateZ(0)\",\n }}\n className={cn(\n \"oui-space-y-1.5 oui-select-none oui-overflow-hidden\",\n \"oui-transition-[max-height] oui-duration-150\",\n \"group-hover:oui-will-change-[max-height]\",\n open ? \"oui-max-h-[69px]\" : \"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 </Box>\n </Box>\n );\n};\n\nexport const AssetView: FC<AssetViewState> = ({\n networkId,\n isFirstTimeDeposit,\n totalValue,\n onDeposit,\n onWithdraw,\n toggleVisible,\n visible,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n}) => {\n const { title, description, titleColor, titleClsName } =\n useCurrentStatusText();\n\n const { t } = useTranslation();\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 ? (\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 />\n <Flex gap={3} itemAlign=\"center\">\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={onWithdraw}\n data-testid=\"oui-testid-assetView-withdraw-button\"\n >\n <ArrowDownShortIcon\n color=\"white\"\n opacity={1}\n className=\"oui-rotate-180\"\n />\n <Text>{t(\"common.withdraw\")}</Text>\n </Button>\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 </Flex>\n <FaucetWidget />\n </Box>\n )}\n </AuthGuard>\n <div\n className=\"oui-pointer-events-none oui-rotate-180 oui-rounded-2xl oui-blur-[200px] oui-top-0 oui-bottom-0 oui-left-0 oui-right-0 oui-absolute\"\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 { Button } from \"@orderly.network/ui\";\nimport { FaucetState } from \"./faucet.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 useMediaQuery,\n useSettleSubscription,\n useWalletSubscription,\n useAccount,\n useConfig,\n usePrivateQuery,\n useCollateral,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport {\n MEDIA_TABLET,\n AccountStatusEnum,\n NetworkId,\n API,\n} from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { capitalizeString } from \"@orderly.network/utils\";\nimport {\n DepositAndWithdrawWithSheetId,\n DepositAndWithdrawWithDialogId,\n} from \"@orderly.network/ui-transfer\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 getKeyMemo = useMemo(() => {\n const now = new Date();\n const ninetyDaysAgo = new Date();\n ninetyDaysAgo.setDate(now.getDate() - 90);\n\n const startTime = ninetyDaysAgo.getTime();\n const endTime = now.getTime();\n\n const searchParams = new URLSearchParams();\n\n searchParams.set(\"page\", \"1\");\n searchParams.set(\"size\", \"5\");\n searchParams.set(\"side\", \"DEPOSIT\");\n searchParams.set(\"status\", \"COMPLETED\");\n searchParams.set(\"startTime\", startTime.toString());\n searchParams.set(\"endTime\", endTime.toString());\n\n return `/v1/asset/history?${searchParams.toString()}`;\n }, []);\n\n const { data: depositHistoryData } = usePrivateQuery<API.AssetHistory>(\n getKeyMemo,\n {\n formatter: (data) => data,\n }\n );\n\n return {\n isFirstTimeDeposit:\n !unavailable && totalValue === 0 && depositHistoryData?.meta?.total === 0,\n totalValue,\n };\n};\n\nexport const useAssetViewScript = () => {\n const { t } = useTranslation();\n const account = useAccountInstance();\n const matches = useMediaQuery(MEDIA_TABLET);\n const { isFirstTimeDeposit, totalValue } = useFirstTimeDeposit();\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n const { state } = useAccount();\n const { freeCollateral } = useCollateral({\n dp: 2,\n });\n const { marginRatio, mmr } = useMarginRatio();\n const isConnected = state.status >= AccountStatusEnum.Connected;\n const [{ aggregated, totalUnrealizedROI }, positionsInfo] =\n usePositionStream();\n const marginRatioVal = useMemo(() => {\n return Math.min(\n 10,\n aggregated.notional === 0\n ? // @ts-ignore\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 async (viewName: \"deposit\" | \"withdraw\") => {\n let result;\n if (matches) {\n result = await modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: viewName,\n });\n } else {\n result = await modal.show(DepositAndWithdrawWithDialogId, {\n activeTab: viewName,\n });\n }\n\n return result;\n },\n [matches]\n );\n\n const onDeposit = useCallback(async () => {\n return openDepositAndWithdraw(\"deposit\");\n }, [matches]);\n\n const ee = useEventEmitter();\n\n const onWithdraw = useCallback(async () => {\n return openDepositAndWithdraw(\"withdraw\");\n }, [matches]);\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 useWalletSubscription({\n onMessage: (data: any) => {\n const { side, transStatus } = data;\n\n if (transStatus === \"COMPLETED\") {\n const message = {\n DEPOSIT: t(\"transfer.deposit.completed\"),\n WITHDRAW: t(\"transfer.withdraw.completed\"),\n };\n let msg = `${capitalizeString(side)} completed`;\n toast.success(message[side as keyof typeof message] || msg);\n } else if (transStatus === \"FAILED\") {\n const message = {\n DEPOSIT: t(\"transfer.deposit.failed\"),\n WITHDRAW: t(\"transfer.withdraw.failed\"),\n };\n let msg = `${capitalizeString(side)} failed`;\n toast.error(message[side as keyof typeof message] || msg);\n }\n\n ee.emit(\"wallet:changed\", data);\n },\n });\n\n useSettleSubscription({\n onMessage: (data: any) => {\n const { status } = data;\n\n switch (status) {\n case \"COMPLETED\":\n toast.success(t(\"settle.settlement.completed\"));\n break;\n case \"FAILED\":\n toast.error(t(\"settle.settlement.failed\"));\n break;\n default:\n break;\n }\n },\n });\n\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 onSettle,\n visible,\n toggleVisible,\n networkId,\n isFirstTimeDeposit,\n totalValue: _totalValue,\n status: state.status,\n freeCollateral: _freeCollateral,\n marginRatioVal: _marginRatioVal,\n renderMMR: _mmr,\n isConnected,\n };\n};\n\nexport type AssetViewState = ReturnType<typeof useAssetViewScript>;\n","import { useAssetViewScript } from \"./assetView.script\";\nimport { AssetView } from \"./assetView.ui\";\nimport { FaucetState } from \"./faucet/faucet.script\";\n\nexport const AssetViewWidget = () => {\n const state = useAssetViewScript();\n return (<AssetView {...state} />);\n};\n","import { FC } from \"react\";\nimport { Box, Flex, Text } from \"@orderly.network/ui\";\nimport { OrderBookState } from \"./orderBook.script\";\nimport { DesktopOrderBook } from \"../../desktop/orderBook/index.desktop\";\nimport { OrderBook as MWebOrderBook } from \"../../mobile/orderBook\";\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 { DesktopBids } from \"./bids.desktop\";\nimport { DesktopAsks } from \"./asks.desktop\";\nimport { DesktopMarkPrice } from \"./markPrice.desktop\";\nimport { DesktopHeader } from \"./header.desktop\";\nimport { DesktopDepthSelect } from \"./depthSelect.desktop\";\nimport { cn, Grid, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookProvider } from \"../../base/orderBook/orderContext\";\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 // const onModeChange = useCallback((mode: QtyMode) => {}, []);\n\n //\n const divRef = useRef(null);\n const [showTotal, setShowTotal] = useState(false);\n\n const rangeInfo = [\n { left: 370, right: 600 },\n { left: 740, right: 800 },\n ];\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n const { inlineSize: width } = entry.borderBoxSize[0];\n const count = rangeInfo.reduce(\n (a, b) => a + (width >= b.left && width < b.right ? 1 : 0),\n 0\n );\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 ///\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 || []}\n symbolInfo={props.symbolInfo}\n >\n <Grid\n cols={1}\n rows={5}\n id=\"oui-orderbook-desktop\"\n ref={divRef}\n className=\"oui-grid-rows-[auto,auto,1fr,auto,1fr] oui-relative oui-h-full oui-w-full\"\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-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-bg-8/70\">\n <Spinner />\n </div>\n )}\n </Grid>\n {/* <div\n id=\"oui-orderbook-desktop\"\n className={cn(\"oui-h-full oui-w-full oui-relative oui-bg-red-300\", props.className)}\n ref={divRef}\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-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-bg-8/70\">\n <Spinner />\n </div>\n )}\n </div> */}\n </OrderBookProvider>\n );\n};\n","import { FC, useCallback, useMemo, useState } from \"react\";\nimport { DesktopOrderBookCell } from \"./cell.desktop\";\nimport {\n TooltipContent,\n TooltipTrigger,\n Text,\n TooltipRoot,\n TooltipArrow,\n cn,\n} from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface DesktopListBoxProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const DesktopListBox: FC<DesktopListBoxProps> = (props) => {\n const { data, type } = 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 const [hoverIndex, setHoverIndex] = useState<number>(-1);\n\n return (\n <div className=\"oui-order-book-list oui-flex oui-flex-col oui-gap-[1px]\">\n {data.map((item, index) => {\n return (\n <Tip\n key={index}\n index={index}\n item={item}\n countQty={props.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\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 let hintInfo = calcHintInfo(item);\n if (hintInfo.avgPrice === 0) {\n hintInfo = calcHintInfo(props.findMaxItem());\n }\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={props.countQty}\n type={props.type}\n accumulatedAmount={item[3]}\n maxQty={maxQty}\n isHover={isHover}\n currentHover={hoverIndex === index}\n symbolInfo={symbolInfo}\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-max-w-[400px] oui-w-full oui-text-2xs oui-shadow-md oui-rounded-base oui-p-3 oui-bg-base-6 oui-flex oui-flex-col oui-gap-2\"\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\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 { getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { cn, Divider, parseNumber, Text } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { CellBar, CellBarDirection } from \"../../base/orderBook/cellBar\";\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\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 { symbolInfo, currentHover } = props;\n const { base_dp, quote_dp } = symbolInfo;\n\n const width = Number.isNaN(props.price)\n ? 0\n : (props.accumulated / props.count) * 100;\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n const totalAmount = Number.isNaN(props.accumulated)\n ? \"-\"\n : props.accumulatedAmount?.toString();\n\n const isPendingOrder = useMemo(() => {\n const priceStr = parseNumber(props.price, { dp: dp, padding: true });\n\n const index = pendingOrders.findIndex(\n (item) => priceStr === parseNumber(item, { dp: dp, padding: true })\n );\n\n return index !== -1;\n }, [pendingOrders, props.price, depth]);\n\n return (\n <div\n 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\"\n style={{ height: `${cellHeight}px` }}\n onClick={() => {\n if (Number.isNaN(props.price) || Number.isNaN(props.quantity)) return;\n onItemClick?.([props.price, props.quantity]);\n }}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n <div\n className={cn(\n \"oui-basis-7/12 oui-flex oui-flex-row oui-items-center oui-mr-2\",\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}>{props.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}>{props.quantity}</Text.numeral>\n </div>\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 )}\n >\n <div\n className={cn(\n \"oui-flex-1 oui-pr-3 oui-text-right\",\n showTotal && \"oui-pr-3\"\n )}\n >\n <Text.numeral dp={base_dp} className=\"oui-z-10\">\n {props.accumulated}\n </Text.numeral>\n </div>\n {showTotal && (\n <div className=\"oui-flex-1 oui-text-right oui-pr-3\">\n <Text.numeral dp={2} className=\"oui-z-10\">\n {totalAmount}\n </Text.numeral>\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-absolute oui-rounded-full oui-left-[4px] oui-h-[4px] oui-w-[4px] oui-pointer-events-none\",\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-bg-white oui-left-0 oui-right-0 oui-top-0 oui-bottom-0 oui-opacity-[.12]\"></div>\n )}\n {currentHover && (\n <div\n className={cn(\n \"oui-absolute oui-left-0 oui-right-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 {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useState,\n} from \"react\";\nimport { QtyMode, TotalMode } from \"./types\";\nimport { BasicSymbolInfo } from \"../../../types/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: 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\ninterface OrderBookProviderProps {\n cellHeight: number;\n depth?: string;\n showTotal: boolean;\n pendingOrders: 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 return (\n <OrderBookContext.Provider\n value={{\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 {props.children}\n </OrderBookContext.Provider>\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 { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { DesktopListBox } from \"./listBox.desktop\";\nimport { FC, useMemo } from \"react\";\n\nexport interface Props {\n data: any[];\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 type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { DesktopListBox } from \"./listBox.desktop\";\nimport { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nexport interface Props {\n data: number[][];\n}\nexport const DesktopAsks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n let 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 type={OrderBookCellType.ASK} data={data} countQty={countQty} />\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, ReactNode } from \"react\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const DesktopHeader: FC<Props> = (props) => {\n const { showTotal } = useOrderBookContext();\n const { t } = useTranslation();\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 id=\"oui-order-book-header-price\">\n {`${t(\"common.price\")}(${props.quote})`}\n </Title>\n </Box>\n <Box width={\"100%\"}>\n <Title id=\"oui-order-book-header-qty\" justifyEnd>\n {`${t(\"common.qty\")}(${props.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 <Box width={\"100%\"}>\n <Title id=\"oui-order-book-header-total-base\" justifyEnd>\n {`${t(\"common.total\")}(${props.base})`}\n </Title>\n </Box>\n {showTotal && (\n <Box width={\"100%\"}>\n <Title id=\"oui-order-book-header-total-quote\" justifyEnd>\n {`${t(\"common.total\")}(${props.quote})`}\n </Title>\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<{\n justifyEnd?: boolean;\n id?: string;\n children: ReactNode;\n}> = (props) => {\n const { children, justifyEnd = false } = props;\n return (\n <Flex\n id={props.id}\n className={cn(\n \"oui-text-base-contrast-36 oui-text-xs oui-items-end\",\n justifyEnd && \"oui-justify-end\"\n )}\n >\n {children}\n </Flex>\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 { FC, useMemo } from \"react\";\n\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const Header: FC<Props> = (props) => {\n const { t } = useTranslation();\n\n const { mode, onModeChange } = useOrderBookContext();\n const currency = useMemo(() => {\n if (mode === \"amount\") {\n return props.quote;\n }\n return props.base;\n }, [mode, props.quote, props.base]);\n\n const qtyLabel = useMemo(() => {\n return mode === \"amount\"\n ? t(\"trading.orderBook.column.value\")\n : t(\"common.qty\");\n }, [mode, t]);\n\n return (\n <Flex\n justify={\"between\"}\n width={\"100%\"}\n className=\"oui-text-base-contrast-36 oui-text-2xs oui-py-[5px]\"\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>{`(${props.quote})`}</Text>\n </Flex>\n <Flex\n direction={\"column\"}\n itemAlign={\"end\"}\n className=\"oui-cursor-pointer\"\n onClick={() =>\n onModeChange?.(mode === \"amount\" ? \"quantity\" : \"amount\")\n }\n >\n <Text>{qtyLabel}</Text>\n <Text>{`(${currency})`}</Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useContext, useMemo } from \"react\";\nimport { CellBar } from \"../../base/orderBook/cellBar\";\nimport { Decimal, getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { OrderBookCellType, QtyMode } from \"../../base/orderBook/types\";\nimport { OrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { Box, cn, Flex, Text } from \"@orderly.network/ui\";\n\nexport interface OrderBookCellProps {\n background: string;\n price: number;\n quantity: 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 width = (props.accumulated / props.count) * 100;\n const { cellHeight, onItemClick, depth, showTotal, symbolInfo } =\n useContext(OrderBookContext);\n const { base_dp, quote_dp } = symbolInfo;\n\n let qty = Number.isNaN(props.quantity)\n ? \"-\"\n : props.mode === \"amount\"\n ? new Decimal(props.quantity).mul(props.price).toString()\n : props.quantity;\n\n if (showTotal) {\n qty = props.quantity;\n }\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n return (\n <Box\n className={cn(\n \"oui-overflow-hidden oui-relative oui-cursor-pointer oui-tabular-nums oui-text-2xs oui-w-full\",\n showTotal && \"oui-flex-1\"\n )}\n style={{ height: `${cellHeight}px` }}\n onClick={(e) => {\n if (Number.isNaN(props.price) || Number.isNaN(props.quantity)) return;\n\n onItemClick?.([props.price, props.quantity]);\n }}\n >\n <Flex justify={\"between\"}>\n <Text.numeral\n color={props.type === OrderBookCellType.BID ? \"buy\" : \"sell\"}\n dp={dp}\n >\n {props.price}\n </Text.numeral>\n <Text.numeral\n dp={props.mode === \"amount\" ? 2 : base_dp}\n className=\"oui-text-base-contrast-80\"\n >\n {qty}\n </Text.numeral>\n </Flex>\n {Number.isNaN(width) || showTotal ? null : (\n <CellBar\n width={width}\n className={\n props.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 } from \"react\";\nimport { OrderBookCell } from \"./cell\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { Box } from \"@orderly.network/ui\";\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\n return (\n <Box\n className=\"oui-order-book-list oui-flex oui-flex-col oui-gap-[1px] oui-w-full\"\n >\n {data.map((item, index) => {\n return (\n <OrderBookCell\n key={index}\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n count={props.countQty}\n type={props.type}\n mode={mode}\n />\n );\n })}\n </Box>\n );\n};\n","import { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { ListBox } from \"./listBox\";\nimport { FC, useMemo } from \"react\";\n\nexport interface Props {\n data: any[];\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 return (\n <ListBox type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { FC, useMemo } from \"react\";\nimport { ListBox } from \"./listBox\";\nexport interface Props {\n data: number[][];\n}\nexport const Asks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n let 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 return (\n <ListBox type={OrderBookCellType.ASK} data={data} countQty={countQty} />\n );\n};\n","import { FC } from \"react\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { MarkPriceView } from \"../../base/orderBook/markPrice\";\nimport { MiddlePriceView } from \"../../base/orderBook/midPriceView\";\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 { Box, Picker } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\ninterface DepthSelectProps {\n depth: 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-pt-2 oui-w-full\" >\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 { FC} from \"react\";\nimport { Header } from \"./header\";\nimport { Bids } from \"./bids\";\nimport { Asks } from \"./asks\";\nimport { MarkPrice } from \"./markPrice\";\nimport { OrderBookProvider } from \"../../base/orderBook/orderContext\";\nimport { DepthSelect } from \"./depthSelect\";\nimport { cn, Flex, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { FundingRateWidget } from \"../fundingRate\";\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 // const onModeChange = useCallback((mode: QtyMode) => {}, []);\n const symbol = `PERP_${props.symbolInfo.base}_${props.symbolInfo.quote}`;\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n pendingOrders={[]}\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-h-full oui-wfull oui-relative\", 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\n <DepthSelect\n depth={props.depths || []}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n {isLoading && (\n <div className=\"oui-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-base-800/70 oui-h-full oui-min-h-[420px]\">\n <Spinner />\n </div>\n )}\n </Flex>\n </OrderBookProvider>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { FundingRateState } from \"./fundingRate.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const FundingRate: FC<FundingRateState> = (props) => {\n const predFundingRate = props.data.est_funding_rate;\n const countDown = props.data.countDown;\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} pb={2}>\n <Text intensity={36} size=\"2xs\">\n {t(\"trading.fundingRate.predFundingRate\")}\n </Text>\n\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 { useFundingRate } from \"@orderly.network/hooks\";\n\nexport const useFundingRateScript = (symbol: string) => {\n const data = useFundingRate(symbol);\n return { data };\n};\n\nexport type FundingRateState = ReturnType<typeof useFundingRateScript>;\n","import { useFundingRateScript } from \"./fundingRate.script\";\nimport { FundingRate } from \"./fundingRate.ui\";\n\nexport const FundingRateWidget = (props: { symbol: string }) => {\n const state = useFundingRateScript(props.symbol);\n return <FundingRate {...state} />;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n useOrderbookStream,\n useOrderStream,\n useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport { removeTrailingZeros } from \"@orderly.network/utils\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { getBasicSymbolInfo } from \"../../../utils/utils\";\nimport { useScreen } from \"@orderly.network/ui\";\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\n const [data, { onDepthChange, isLoading, onItemClick, depth, allDepths }] =\n useOrderbookStream(symbol, undefined, {\n level,\n });\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\n let formattedNumber = removeTrailingZeros(depth);\n return formattedNumber;\n }, [depth, quote_dp]);\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 { 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 {\n Flex,\n Text,\n Box,\n Tooltip,\n modal,\n gradientTextVariants,\n cn,\n EditIcon,\n} from \"@orderly.network/ui\";\nimport { RiskRateState } from \"./riskRate.script\";\nimport { LeverageWidgetId } from \"@orderly.network/ui-leverage\";\nimport { TooltipContent } from \"../assetView/assetView.ui\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nexport const RiskRate: FC<RiskRateState> = (props) => {\n const { riskRate, riskRateColor, isConnected, currentLeverage, maxLeverage } =\n props;\n const { isHigh, isMedium, isLow, isDefault } = 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\">\n <Flex direction=\"column\" itemAlign=\"start\" className=\"oui-flex-1\">\n <Tooltip\n content={\n (\n <TooltipContent\n description={t(\"trading.riskRate.tooltip\")}\n formula={t(\"trading.riskRate.formula\")}\n />\n ) as any\n }\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-b-white/10\"\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\" itemAlign=\"end\" className=\"oui-flex-1\">\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer\"\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(LeverageWidgetId, { 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 {\n useAccount,\n useCollateral,\n useLeverage,\n useMarginRatio,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\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 const [maxLeverage] = 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(maxLeverage);\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,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 } 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: React.FC<SplitLayoutProps> = (props) => {\n const { onSizeChange, ...rest } = props;\n\n return (\n /* @ts-ignore */\n <Split\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 { cn } from \"@orderly.network/ui\";\nimport { SplitProps } from \"@uiw/react-split\";\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-1\"\n : \"!oui-h-[2px] !oui-min-h-[2px] !oui-my-1\",\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 { Flex, SimpleDialog, Text } from \"@orderly.network/ui\";\nimport { BottomNavBarState } from \"./bottomNavBar.script\";\nimport { ChainWidget } from \"./chain\";\nimport { AccountWidget } from \"./account\";\nimport { BalanceWidget } from \"./balance\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { ScanQRCodeWidget } from \"./scanQRCode\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { MobileAccountMenuExtension } from \"./account/account.widget\";\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={\"between\"}\n itemAlign={\"center\"}\n className=\" oui-px-[14px] oui-pt-[7px]\"\n // style={{\n // height: \"calc(64px + env(safe-area-inset-bottom))\"\n // }}\n >\n <BalanceWidget />\n\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 { 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 { FC } from \"react\";\nimport {\n Button,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { BalanceState } from \"./balance.script\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Balance: FC<BalanceState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex gap={3}>\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-text-[11px] oui-cursor-pointer\"\n onClick={(e) => {\n props.onShowPortfolioSheet();\n }}\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}> USDC</Text>}\n dp={2}\n visible={!props.hideAssets}\n >\n {props.canTrade ? props.total ?? \"--\" : \"--\"}\n </Text.numeral>\n </Flex>\n {props.canTrade && (\n <Divider direction=\"vertical\" className=\"oui-h-[26px]\" />\n )}\n {props.canTrade && (\n <Button\n variant={\"outlined\"}\n onClick={(e) => {\n props.onShowPortfolioSheet();\n }}\n className=\"oui-h-[28px] oui-text-2xs oui-text-primary-light oui-border-primary-light\"\n >\n {commifyOptional(props.currentLeverage!, { fix: 2 }) + \"x\"}\n </Button>\n )}\n </Flex>\n );\n};\n\nconst MaybeEqual = () => {\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","import { modal } from \"@orderly.network/ui\";\nimport { useTradingLocalStorage } from \"../../../../provider/useTradingLocalStorage\";\nimport { PortfolioSheetWidget } from \"../../portfolioSheet\";\nimport { useTradingPageContext } from \"../../../../provider/context\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport {\n useAccount,\n useCollateral,\n useMarginRatio,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const useBalanceScript = () => {\n const { t } = useTranslation();\n const { bottomSheetLeading } = useTradingPageContext();\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n\n const { currentLeverage } = useMarginRatio();\n const { totalValue } = useCollateral();\n\n const canTrade =\n !wrongNetwork &&\n !disabledConnect &&\n (state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\n\n const onShowPortfolioSheet = () => {\n if (canTrade) {\n modal.sheet({\n title: t(\"trading.asset&Margin\"),\n leading: bottomSheetLeading,\n content: <PortfolioSheetWidget />,\n });\n }\n };\n\n const total = useDataTap(totalValue);\n\n return {\n currentLeverage,\n total,\n hideAssets,\n setHideAssets,\n onShowPortfolioSheet,\n wrongNetwork,\n canTrade,\n };\n};\n\nexport type BalanceState = ReturnType<typeof useBalanceScript>;\n","import { FC, useCallback } from \"react\";\nimport {\n ArrowDownShortIcon,\n ArrowUpShortIcon,\n Button,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Grid,\n modal,\n RefreshIcon,\n Statistic,\n Text,\n} from \"@orderly.network/ui\";\nimport {\n getMarginRatioColor,\n PortfolioSheetState,\n} from \"./portfolioSheet.script\";\nimport { USDCIcon } from \"../accountSheet/icons\";\nimport { RiskIndicator } from \"./riskIndicator\";\nimport { LeverageSlider } from \"@orderly.network/ui-leverage\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\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\") return Promise.resolve();\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={(e) => {\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};\nconst Leverage: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} gap={2} width={\"100%\"}>\n <Flex width={\"100%\"} justify={\"between\"}>\n <Text size=\"2xs\" intensity={54}>\n {t(\"leverage.maxAccountLeverage\")}\n </Text>\n\n <Flex gap={1}>\n <Text size=\"2xs\" intensity={54}>\n {`${t(\"common.current\")}:`}\n </Text>\n <Text.numeral size=\"2xs\" unit=\"x\" intensity={98}>\n {props.currentLeverage ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Flex>\n <LeverageSlider\n value={props.value}\n maxLeverage={props.maxLeverage}\n onLeverageChange={props.onLeverageChange}\n setShowSliderTip={props.setShowSliderTip}\n showSliderTip={props.showSliderTip}\n onValueCommit={props.onValueCommit}\n />\n </Flex>\n );\n};\n\n// const AvailableBalance: FC<PortfolioSheetState> = (props) => {\n// return (\n// <Flex\n// width={\"100%\"}\n// justify={\"between\"}\n// r=\"lg\"\n// px={3}\n// py={4}\n// className=\"oui-bg-base-6\"\n// >\n// <Text size=\"2xs\" intensity={80}>\n// Available Balance\n// </Text>\n// <Flex className=\"oui-gap-[6px]\">\n// <USDCIcon size={24} />\n// <Text.numeral dp={2} size=\"base\" visible={!props.hideAssets}>\n// {props.availableBalance}\n// </Text.numeral>\n// </Flex>\n// </Flex>\n// );\n// };\n\nconst Buttons: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Grid\n cols={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={<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 <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 </Grid>\n );\n};\n","import {\n useAccount,\n useCollateral,\n useEventEmitter,\n useLeverage,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { modal, SliderMarks, toast } from \"@orderly.network/ui\";\nimport { DepositAndWithdrawWithSheetId } from \"@orderly.network/ui-transfer\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const usePortfolioSheetScript = () => {\n const { account } = useAccount();\n const assets = useAssets();\n const marginRatio = useMarginRatioAndLeverage();\n const ee = useEventEmitter();\n const { t } = useTranslation();\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 return {\n ...assets,\n ...marginRatio,\n onSettlePnL,\n onDeposit,\n onWithdraw,\n showSliderTip,\n setShowSliderTip,\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 ? // @ts-ignore\n positionsInfo[\"margin_ratio\"](10)\n : marginRatio\n );\n }, [marginRatio, aggregated]);\n\n const [curLeverage, { update, config: leverageLevers, isMutating }] =\n useLeverage();\n\n const marks = useMemo((): SliderMarks => {\n return (\n leverageLevers?.map((e: number) => ({\n label: `${e}x`,\n value: e,\n })) || []\n );\n }, [leverageLevers]);\n\n const [leverage, setLeverage] = useState(curLeverage ?? 0);\n\n const maxLeverage = leverageLevers?.reduce((a: number, item: any) =>\n Math.max(a, Number(item), 0)\n );\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 (res: any) => {\n toast.success(t(\"leverage.updated\"));\n },\n (err: Error) => {\n toast.error(err.message);\n }\n );\n } catch (e) {}\n };\n\n const onValueCommit = useCallback((value: number[]) => {\n onSave(value[0]);\n }, []);\n\n return {\n aggregated,\n totalUnrealizedROI,\n positionsInfo,\n marginRatio,\n marginRatioVal,\n mmr,\n\n currentLeverage,\n step,\n marks,\n onLeverageChange,\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 { useBalanceScript } from \"./balance.script\";\nimport { Balance } from \"./balance.ui\";\n\nexport const BalanceWidget = () => {\n const state = useBalanceScript();\n return (<Balance {...state} />);\n};\n","import { useEffect, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\n\nexport type UseScanQRCodeScriptReturn = ReturnType<typeof useScanQRCodeScript>;\n\nexport function useScanQRCodeScript() {\n const [open, setOpen] = useState(false);\n const [showScanTooltip, setShowScanTooltip] = useLocalStorage(\n \"orderly_qr_code_scan_tooltip_open\",\n true\n );\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n const onScanSuccess = (url: string) => {\n if (isValidURL(url)) {\n window.location.href = url;\n }\n };\n\n useEffect(() => {\n if (showScanTooltip) {\n setTimeout(() => {\n setShowScanTooltip(false);\n }, 8000);\n }\n }, [showScanTooltip]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n onScanSuccess,\n showScanTooltip,\n };\n}\n\nfunction isValidURL(str: string) {\n try {\n const url = new URL(str);\n return [\"http:\", \"https:\"].includes(url.protocol);\n } catch (e) {\n return false;\n }\n}\n","import { FC, SVGProps } from \"react\";\nimport { Flex, SimpleDialog, Text, Tooltip } from \"@orderly.network/ui\";\nimport { MainLogo } from \"@orderly.network/ui-scaffold\";\nimport { UseScanQRCodeScriptReturn } from \"./scanQRCode.script\";\nimport { QRCodeScanner } from \"./scanner\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\n\ntype ScanQRCodeProps = UseScanQRCodeScriptReturn;\n\nexport const ScanQRCode: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <>\n <Tooltip\n open={props.showScanTooltip}\n content={t(\"linkDevice.scanQRCode.tooltip\")}\n className=\"oui-bg-base-6 oui-text-warning-darken oui-text-2xs oui-font-semibold\"\n arrow={{ className: \"!oui-fill-base-6\" }}\n >\n <Flex\n className=\"oui-rounded-md oui-bg-base-5 oui-px-[6px] oui-h-7 oui-cursor-pointer\"\n onClick={props.showDialog}\n >\n <ScanIcon className=\"oui-text-base-contrast-80\" />\n </Flex>\n </Tooltip>\n <SimpleDialog\n title={<Text weight=\"semibold\">{t(\"common.confirm\")}</Text>}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n >\n <ScanQRCodeContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nconst ScanQRCodeContent: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex justify=\"center\" direction=\"column\" gapY={5}>\n <MainLogo />\n <QRCodeScanner onSuccess={props.onScanSuccess} />\n {/* </Box> */}\n <Text size=\"sm\" intensity={98} weight=\"semibold\">\n {t(\"linkDevice.scanQRCode\")}\n </Text>\n <span className=\"oui-px-3 oui-text-center\">\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-break-words\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"linkDevice.scanQRCode.description\"\n components={[\n <LinkDeviceIcon className=\"oui-inline-block oui-text-base-contrast-80 oui-mx-1\" />,\n ]}\n />\n </Text>\n </span>\n </Flex>\n );\n};\n\nconst ScanIcon: 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=\"M5.249 2.243a3 3 0 0 0-3 3v.75a.75.75 0 0 0 1.5 0v-.75a1.5 1.5 0 0 1 1.5-1.5h2.25a.75.75 0 0 0 0-1.5zm5.25 0a.75.75 0 0 0 0 1.5h2.25a1.5 1.5 0 0 1 1.5 1.5v.75a.75.75 0 0 0 1.5 0v-.75a3 3 0 0 0-3-3zm-7.5 9a.75.75 0 0 0-.75.75v.75a3 3 0 0 0 3 3h2.25a.75.75 0 0 0 0-1.5h-2.25a1.5 1.5 0 0 1-1.5-1.5v-.75a.75.75 0 0 0-.75-.75m12 0a.75.75 0 0 0-.75.75v.75a1.5 1.5 0 0 1-1.5 1.5h-2.25a.75.75 0 0 0 0 1.5h2.25a3 3 0 0 0 3-3v-.75a.75.75 0 0 0-.75-.75M5.25 8.999a.75.75 0 0 1 .75-.75h6a.75.75 0 0 1 0 1.5H6a.75.75 0 0 1-.75-.75\" />\n </svg>\n);\n\nexport interface LinkDeviceIconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon: FC<LinkDeviceIconProps> = (props) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n};\n","import { FC, useEffect, useRef } from \"react\";\nimport jsQR from \"jsqr\";\n\ntype ScannerProps = {\n onSuccess?: (data: string) => void;\n};\n\nconst WIDTH = 320;\nconst HEIGHT = 320;\nconst RATIO = 2;\n\n/**\n * QR Code Scanner\n * reference https://github.com/cozmo/jsQR/blob/master/docs/index.html\n */\nexport const QRCodeScanner: FC<ScannerProps> = (props) => {\n const videoRef = useRef<HTMLVideoElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n const tick = () => {\n const video = videoRef.current;\n const canvas = canvasRef.current;\n if (!video || !canvas) return;\n\n const ctx = canvas.getContext(\"2d\")!;\n\n if (video.readyState === video.HAVE_ENOUGH_DATA) {\n const videoWidth = video.videoWidth;\n const videoHeight = video.videoHeight;\n\n const canvasAspectRatio = canvas.width / canvas.height;\n const videoAspectRatio = videoWidth / videoHeight;\n\n let sx, sy, sWidth, sHeight;\n\n if (videoAspectRatio > canvasAspectRatio) {\n // The video is wide. Crop the left and right sides\n sHeight = videoHeight;\n sWidth = videoHeight * canvasAspectRatio;\n sx = (videoWidth - sWidth) / 2;\n sy = 0;\n } else {\n // The video is high. Crop the top and bottom sides\n sWidth = videoWidth;\n sHeight = videoWidth / canvasAspectRatio;\n sx = 0;\n sy = (videoHeight - sHeight) / 2;\n }\n\n ctx.drawImage(\n video,\n sx,\n sy,\n sWidth,\n sHeight,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n\n // ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const res = jsQR(imageData.data, imageData.width, imageData.height, {\n inversionAttempts: \"dontInvert\",\n });\n\n if (res?.data) {\n console.log(\"scan result\", res.data);\n props.onSuccess?.(res.data);\n }\n }\n requestAnimationFrame(tick);\n };\n\n useEffect(() => {\n const video = videoRef.current;\n if (!open || !video) return;\n\n // Use facingMode: environment to attemt to get the front camera on phones\n navigator?.mediaDevices\n .getUserMedia({\n video: {\n facingMode: \"environment\",\n width: { ideal: WIDTH * RATIO },\n height: { ideal: HEIGHT * RATIO },\n },\n })\n .then((stream) => {\n video.srcObject = stream;\n // required to tell iOS safari we don't want fullscreen\n video.setAttribute(\"playsinline\", \"true\");\n video.play();\n\n video.onloadeddata = () => {\n console.log(\"Video data loaded.\");\n // const videoTrack = stream.getVideoTracks()[0];\n // const settings = videoTrack.getSettings();\n // console.log(\"video size\", `${settings.width}x${settings.height}`);\n\n requestAnimationFrame(tick);\n };\n })\n .catch((err) => {\n console.error(\"Error accessing camera:\", err);\n });\n\n return () => {\n // Cleanup: stop video stream when component unmounts\n const stream = video.srcObject as MediaStream;\n if (stream) {\n const tracks = stream.getTracks();\n tracks.forEach((track: any) => track.stop());\n }\n video.srcObject = null;\n };\n }, [videoRef, canvasRef]);\n\n return (\n <>\n <video\n ref={videoRef}\n width={WIDTH}\n height={HEIGHT}\n className=\"oui-bg-base-10 oui-rounded-2xl oui-hidden\"\n />\n <canvas\n ref={canvasRef}\n width={WIDTH * RATIO}\n height={HEIGHT * RATIO}\n style={{ width: WIDTH, height: HEIGHT }}\n className=\"oui-bg-base-10 oui-rounded-2xl\"\n />\n </>\n );\n};\n","import { useScanQRCodeScript } from \"./scanQRCode.script\";\nimport { ScanQRCode } from \"./scanQRCode.ui\";\n\nexport const ScanQRCodeWidget = () => {\n const state = useScanQRCodeScript();\n return <ScanQRCode {...state} />;\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 { modal } from \"@orderly.network/ui\";\nimport { AccountSheetWidget } from \"../../accountSheet\";\nimport { useTradingPageContext } from \"../../../../provider/context\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountState as AccountStateType } from \"@orderly.network/core\";\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 { ArrowRightShortIcon, Button, Flex, Text } from \"@orderly.network/ui\";\nimport { AccountSheetState } from \"./accountSheet.script\";\nimport { CopyIcon, HeadIcon, OrderlyIcon, USDCIcon } from \"./icons\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { 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 } from \"react\";\nimport { Box, cn, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { TopTabState, TopTabType } from \"./topTab.script\";\nimport { MWebLastTrades } from \"../lastTrades/lastTrades.widget\";\nimport { TradeDataWidget } from \"../tradeData\";\nimport { TradingviewWidget } from \"../tradingview/tradingview.widget\";\nimport { useTradingPageContext } from \"../../../provider/context\";\nimport { KlineDragIcon } from \"../../base/icons\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { useState } from \"react\";\nimport { useTradingPageContext } from \"../../../provider/context\";\n\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 { 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 { useTickerStream } from \"@orderly.network/hooks\";\nimport { useTradingPageContext } from \"../../../provider/context\";\nimport { useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const useTradeDataScript = (props: {\n symbol: string;\n}) => {\n\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).mul(volume).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).mul(Number(openInterest)).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 />\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 { 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, 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/context\";\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 { TradingState } from \"./trading.script\";\nimport { TopTabWidget } from \"../../components/mobile/topTab\";\nimport { OrderBookAndEntryWidget } from \"../../components/mobile/orderBookAndEntry\";\nimport {\n MarketsSheetWidget,\n SymbolInfoBarWidget,\n} from \"@orderly.network/markets\";\nimport { Flex, Box, SimpleSheet } from \"@orderly.network/ui\";\nimport { SecondaryLogo } from \"../../components/base/secondaryLogo\";\nimport { DataListWidget } from \"../../components/mobile/dataList\";\nimport { BottomNavBarWidget } from \"../../components/mobile/bottomNavBar\";\nimport { LanguageSwitcherWidget } from \"@orderly.network/ui-scaffold\";\n\nexport const MobileLayout: FC<TradingState> = (props) => {\n const onSymbol = () => {\n props.onOpenMarketsSheetChange(true);\n };\n const topBar = (\n <Box intensity={900} px={3} height={54}>\n <SymbolInfoBarWidget\n symbol={props.symbol}\n trailing={\n <Flex gapX={3}>\n <LanguageSwitcherWidget />\n <SecondaryLogo />\n </Flex>\n }\n onSymbol={onSymbol}\n />\n <SimpleSheet\n open={props.openMarketsSheet}\n onOpenChange={props.onOpenMarketsSheetChange}\n classNames={{\n body: \"oui-h-full oui-pb-[env(safe-area-inset-bottom)]\",\n content: \"oui-w-[280px] !oui-p-0 oui-rounded-bl-[40px] oui-h-full \",\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\n style={{\n paddingBottom: \"calc(64px + env(safe-area-inset-bottom))\",\n }}\n className=\"oui-grid oui-grid-rows-[auto,1fr,auto] oui-h-screen oui-gap-1 oui-relative oui-bg-base-10\"\n >\n <header>{topBar}</header>\n\n <main className=\"oui-overflow-y-auto oui-hide-scrollbar oui-space-y-1\">\n <TopTabWidget className=\"oui-bg-base-9 oui-mx-1 oui-rounded-xl\" />\n <OrderBookAndEntryWidget />\n <DataListWidget\n symbol={props.symbol}\n className=\"oui-mx-1 oui-rounded-xl\"\n sharePnLConfig={props.sharePnLConfig}\n />\n </main>\n\n <div className=\"oui-fixed oui-left-0 oui-right-0 oui-bottom-0\">\n <BottomNavBarWidget />\n </div>\n </div>\n );\n};\n","import { FC } from \"react\";\nimport { useAppConfig } from \"@orderly.network/react-app\";\n\nexport const SecondaryLogo: FC = () => {\n const { appIcons } = useAppConfig();\n\n const { secondary } = appIcons || {};\n\n if (secondary?.img) {\n return <img src={secondary?.img} className=\"oui-w-5 oui-h-5\" />;\n }\n\n if (secondary?.component) {\n return secondary.component;\n }\n\n return null;\n};\n","import { FC } from \"react\";\nimport {\n Button,\n Checkbox,\n Divider,\n Flex,\n TabPanel,\n Tabs,\n Text,\n} from \"@orderly.network/ui\";\nimport {\n DataListState,\n DataListTabSubType,\n DataListTabType,\n} from \"./dataList.script\";\nimport { MobileOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport {\n MobileLiquidationWidget,\n MobilePositionHistoryWidget,\n MobilePositionsWidget,\n} from \"@orderly.network/ui-positions\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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-gap-[2px] oui-cursor-pointer\">\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 { useTradingPageContext } from \"../../../provider/context\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { useOrderStream } from \"@orderly.network/hooks\";\nimport { usePositionsCount } from \"../../../provider/usePositionsCount\";\nimport { usePendingOrderCount } from \"../../../provider/usePendingOrderCount\";\nimport { modal, Text } from \"@orderly.network/ui\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\nimport { TabType } from \"@orderly.network/ui-orders\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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, useMemo } from \"react\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { getOffsetSizeNum, TradingState } from \"./trading.script\";\nimport { DataListWidget } from \"../../components/desktop/dataList\";\nimport {\n TradingviewWidget,\n TradingviewLocaleCode,\n} from \"@orderly.network/ui-tradingview\";\nimport { AssetViewWidget } from \"../../components/desktop/assetView\";\nimport { RiskRateWidget } from \"../../components/desktop/riskRate\";\nimport { OrderBookAndTradesWidget } from \"../../components/desktop/orderBookAndTrades\";\nimport {\n SideMarketsWidget,\n SymbolInfoBarFullWidget,\n} from \"@orderly.network/markets\";\nimport { SwitchLayout } from \"../../components/desktop/layout/switchLayout\";\nimport { SplitLayout } from \"../../components/desktop/layout/splitLayout\";\nimport { RemovablePanel } from \"../../components/desktop/layout/removablePanel\";\nimport { OrderEntryWidget } from \"@orderly.network/ui-order-entry\";\nimport { i18n } from \"@orderly.network/i18n\";\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 canTrade,\n showPositionIcon,\n horizontalDraggable,\n } = props;\n\n const scrollBarWidth = 6;\n\n const topBarHeight = 48;\n const bottomBarHeight = 29;\n const space = 12;\n\n const tokenInfoBarHeight = 54;\n\n const marketsWidth = collapsed ? 70 : 280;\n const orderEntryMinWidth = 280;\n const orderEntryMaxWidth = 360;\n\n const orderbookMinWidth = 280;\n const orderbookMaxWidth = 732;\n\n const orderbookMinHeight = 464;\n const orderbookMaxHeight = 728;\n\n const tradindviewMinHeight = 320;\n const tradindviewMaxHeight = 600;\n\n const tradingViewMinWidth = 540;\n const dataListMinHeight = canTrade ? 379 : 277;\n\n const minScreenHeight =\n topBarHeight +\n bottomBarHeight +\n tokenInfoBarHeight +\n orderbookMinHeight +\n dataListMinHeight +\n space * 4;\n\n const minScreenHeightSM =\n topBarHeight +\n bottomBarHeight +\n tokenInfoBarHeight +\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: tokenInfoBarHeight,\n height: tokenInfoBarHeight,\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 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={3}\n style={{ height: dataListSplitSize, minHeight: dataListMinHeight }}\n className=\"oui-overflow-hidden\"\n >\n {dataListWidget}\n </Box>\n );\n\n const assetsOrderEntryMargin = [\n <RemovablePanel\n key=\"assets\"\n className=\"oui-border oui-border-line-12\"\n index={positions.findIndex((item) => item === 0)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <AssetViewWidget />\n </RemovablePanel>,\n <RemovablePanel\n key=\"orderEntry\"\n index={positions.findIndex((item) => item === 1)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <OrderEntryWidget symbol={props.symbol} />\n </RemovablePanel>,\n <RemovablePanel\n key=\"margin\"\n index={positions.findIndex((item) => item === 2)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <RiskRateWidget />\n </RemovablePanel>,\n ];\n\n const orderEntryWidget = positions.map(\n (index) => assetsOrderEntryMargin[index]\n );\n\n const orderEntryView = (\n <Flex\n gapY={3}\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={3}\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={3}\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={3}\n style={{\n minWidth: max4XL\n ? marketsWidth + tradingViewMinWidth + orderbookMinWidth + space * 2\n : tradingViewMinWidth + orderbookMinWidth + space,\n }}\n >\n {symbolInfoBarView}\n <SplitLayout\n className=\"oui-w-full !oui-h-[calc(100%_-_54px_-_12px)]\"\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 style={{\n minHeight: minScreenHeightSM,\n minWidth: 1024 - scrollBarWidth,\n }}\n className={cn(\n \"oui-flex oui-flex-1 oui-overflow-hidden\",\n \"oui-min-w-[1018px] oui-h-full oui-w-full\",\n \"oui-p-3\",\n props.className\n )}\n onSizeChange={setDataListSplitHeightSM}\n mode=\"vertical\"\n >\n <Flex\n gapX={3}\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 tokenInfoBarHeight +\n tradindviewMinHeight +\n orderbookMinHeight +\n space * 2,\n props.orderEntryHeight\n ),\n maxHeight:\n tokenInfoBarHeight +\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={3}\n >\n {symbolInfoBarView}\n <Flex\n width=\"100%\"\n height=\"100%\"\n gapX={3}\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 mode=\"vertical\"\n style={{\n width: `calc(100% - ${marketsWidth}px)`,\n }}\n className=\"oui-flex-1\"\n onSizeChange={setOrderbookSplitHeightSM}\n >\n <Box\n width=\"100%\"\n intensity={900}\n r=\"2xl\"\n style={{\n minHeight: tradindviewMinHeight,\n maxHeight: tradindviewMaxHeight,\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 gapY={3}\n direction=\"column\"\n style={{\n width: orderEntryMinWidth,\n // force order entry render actual content height\n height: \"max-content\",\n }}\n >\n {orderEntryWidget}\n </Flex>\n </Flex>\n\n <Box\n intensity={900}\n r=\"2xl\"\n p={3}\n style={{\n height: dataListSplitHeightSM,\n minHeight: dataListMinHeight,\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 )}\n width=\"100%\"\n p={3}\n gap={3}\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 { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useAccount,\n useLocalStorage,\n useMediaQuery,\n} from \"@orderly.network/hooks\";\nimport { useTradingPageContext } from \"../../provider/context\";\nimport { TradingPageState } from \"../../types/types\";\nimport { useSplitPersistent } from \"../../components/desktop/layout/useSplitPersistent\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useFirstTimeDeposit } from \"../../components/desktop/assetView/assetView.script\";\n\nexport type TradingState = ReturnType<typeof useTradingScript>;\n\nexport const useTradingScript = () => {\n const [openMarketsSheet, setOpenMarketsSheet] = useState(false);\n const props = useTradingPageContext();\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect, restrictedInfo } = useAppContext();\n\n const { isFirstTimeDeposit } = useFirstTimeDeposit();\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(() => {\n if (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n ) {\n return true;\n }\n return false;\n }, [state.status, wrongNetwork, disabledConnect]);\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 splitSizeState = useSplitSize(layout);\n\n const observerState = useObserverOrderEntry({ max2XL });\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 };\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 undefined\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(dep: any) {\n const [mainSplitSize, setMainSplitSize] = useSplitPersistent(\n \"orderly_main_split_size\",\n undefined,\n dep\n );\n const [dataListSplitSize, setDataListSplitSize] = useSplitPersistent(\n \"orderly_datalist_split_size\",\n \"350px\"\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 (let 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","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 { 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 className={cn(\n \"oui-rounded-md\",\n \"oui-w-[69px] 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 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 } 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 { TradingPageProvider } from \"../../provider\";\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/provider/useTradingLocalStorage.ts","../src/provider/usePositionsCount.ts","../src/provider/usePendingOrderCount.ts","../src/provider/context.tsx","../src/utils/utils.ts","../src/components/desktop/dataList/dataList.script.tsx","../src/components/base/positionHeader/positionHeader.ui.tsx","../src/components/base/positionHeader/positionHeader.script.tsx","../src/components/base/positionHeader/positionHeader.widget.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/desktop/orderBook/listBox.desktop.tsx","../src/components/desktop/orderBook/cell.desktop.tsx","../src/components/base/orderBook/orderContext.tsx","../src/components/base/orderBook/cellBar.tsx","../src/components/desktop/orderBook/bids.desktop.tsx","../src/components/desktop/orderBook/asks.desktop.tsx","../src/components/desktop/orderBook/markPrice.desktop.tsx","../src/components/base/orderBook/midPriceView.tsx","../src/components/base/orderBook/markPrice.tsx","../src/components/desktop/orderBook/header.desktop.tsx","../src/components/desktop/orderBook/depthSelect.desktop.tsx","../src/components/mobile/orderBook/header.tsx","../src/components/mobile/orderBook/cell.tsx","../src/components/mobile/orderBook/listBox.tsx","../src/components/mobile/orderBook/bids.tsx","../src/components/mobile/orderBook/asks.tsx","../src/components/mobile/orderBook/markPrice.tsx","../src/components/mobile/orderBook/depthSelect.tsx","../src/components/mobile/orderBook/index.tsx","../src/components/mobile/fundingRate/fundingRate.ui.tsx","../src/components/mobile/fundingRate/fundingRate.script.tsx","../src/components/mobile/fundingRate/fundingRate.widget.tsx","../src/components/base/orderBook/orderBook.script.tsx","../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/chain/chain.ui.tsx","../src/components/mobile/bottomNavBar/chain/chain.script.tsx","../src/components/mobile/bottomNavBar/chain/chain.widget.tsx","../src/components/mobile/bottomNavBar/balance/balance.ui.tsx","../src/components/mobile/bottomNavBar/balance/balance.script.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/components/mobile/bottomNavBar/balance/balance.widget.tsx","../src/components/mobile/bottomNavBar/scanQRCode/scanQRCode.script.ts","../src/components/mobile/bottomNavBar/scanQRCode/scanQRCode.ui.tsx","../src/components/mobile/bottomNavBar/scanQRCode/scanner.tsx","../src/components/mobile/bottomNavBar/scanQRCode/widget.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/bottomNavBar.script.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.widget.tsx","../src/components/mobile/topTab/topTab.ui.tsx","../src/components/mobile/topTab/topTab.script.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.widget.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.ui.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.script.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.widget.tsx","../src/pages/trading/trading.ui.mobile.tsx","../src/components/base/secondaryLogo/index.tsx","../src/components/mobile/dataList/dataList.ui.tsx","../src/components/mobile/dataList/dataList.script.tsx","../src/components/mobile/dataList/dataList.widget.tsx","../src/pages/trading/trading.ui.desktop.tsx","../src/pages/trading/trading.script.tsx","../src/components/desktop/layout/useSplitPersistent.ts","../src/components/desktop/layout/switchLayout.tsx","../src/components/desktop/layout/removablePanel.tsx","../src/pages/trading/trading.ui.tsx","../src/pages/trading/trading.widget.tsx","../src/pages/trading/trading.page.tsx"],"names":["Box","Divider","Flex","TabPanel","Tabs","useLocalStorage","useTradingLocalStorage","props","unPnlPriceBasis","setUnPnlPriceBasic","pnlNotionalDecimalPrecision","setPnlNotionalDecimalPrecision","showAllSymbol","setShowAllSymbol","hideAssets","setHideAssets","usePositionStream","useMemo","useDataTap","usePositionsCount","symbol","data","count","useOrderStream","AlgoOrderRootType","OrderStatus","TabType","usePendingOrderCount","pendingOrdersPageSizeKey","tpslOrdersPageSizeKey","pendingOrders","pendingCount","tpslOrders","tpslCount","pendingOrderCount","tpSlOrderCount","createContext","useContext","useSymbolsInfo","getBasicSymbolInfo","symbolInfo","jsx","TradingPageContext","useTradingPageContext","TradingPageProvider","useDataListScript","current","sharePnLConfig","includedPendingOrder","localStorage","onSymbolChange","positionCount","LiquidationWidget","PositionHistoryWidget","PositionsWidget","DesktopOrderListWidget","Checkbox","Statistic","Text","useScreen","Decimal","useTranslation","jsxs","PositionHeader","isMobile","MobileLayout","DesktopLayout","UnrealPnL","Notional","checked","unrealPnLClsName","unrealPnLROIClsName","usePositionHeaderScript","calcMode","aggregated","unrealPnL","unrealPnlROI","notional","PositionHeaderWidget","state","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","useLastTradesScript","isLoading","config","base","quote","baseDp","quoteDp","LastTradesWidget","useCallback","ArrowDownShortIcon","EyeIcon","EyeCloseIcon","ChevronDownIcon","Tooltip","gradientTextVariants","AuthGuard","AccountStatusEnum","useAccount","useAppContext","FaucetUi","useConfig","useMutation","useWalletConnector","ChainNamespace","isTestnet","modal","toast","useFaucetScript","connectedChain","namespace","account","operatorUrl","getTestUSDC","isMutating","loading","setLoading","showFaucet","message","res","resolve","error","FaucetWidget","Fragment","useCurrentStatusText","wrongNetwork","disabledConnect","statusText","TooltipContent","description","formula","TotalValue","totalValue","visible","onToggleVisibility","AssetDetail","unit","rule","isConnected","showPercentage","placeholder","AssetValueList","freeCollateral","marginRatioVal","renderMMR","optionsOpen","setOptionsOpen","toggleOpen","prevOpen","AssetView","networkId","isFirstTimeDeposit","onDeposit","onWithdraw","toggleVisible","title","titleColor","titleClsName","useAccountInstance","useEventEmitter","useMediaQuery","useSettleSubscription","useWalletSubscription","usePrivateQuery","useCollateral","useMarginRatio","MEDIA_TABLET","capitalizeString","DepositAndWithdrawWithSheetId","DepositAndWithdrawWithDialogId","useFirstTimeDeposit","unavailable","getKeyMemo","now","ninetyDaysAgo","startTime","endTime","searchParams","depositHistoryData","useAssetViewScript","matches","marginRatio","mmr","totalUnrealizedROI","positionsInfo","openDepositAndWithdraw","viewName","result","ee","onSettle","setVisible","side","transStatus","msg","status","_freeCollateral","_marginRatioVal","_mmr","_totalValue","AssetViewWidget","useEffect","useRef","getPrecisionByNumber","parseNumber","OrderBookContext","useOrderBookContext","OrderBookProvider","mode","setMode","totalMode","setTotalMode","CellBar","direction","transform","x","DesktopOrderBookCell","cellHeight","showTotal","onItemClick","depth","currentHover","base_dp","quote_dp","width","dp","totalAmount","isPendingOrder","priceStr","TooltipTrigger","TooltipRoot","TooltipArrow","DesktopListBox","type","findMaxItem","priceDp","maxQty","a","b","hoverIndex","setHoverIndex","Tip","isHover","calcHintInfo","totalInfo","hintInfo","content","contentDp","DesktopBids","countQty","max","DesktopAsks","len","ArrowUpShortIcon","MiddlePriceView","markPrice","lastPrice","className","iconSize","prevLastPrice","middlePrice","down","up","SimpleDialog","MarkPriceView","FlagIcon","DesktopMarkPrice","asks","bids","Spread","spread","bid1","ask1","dValue","DesktopHeader","Title","children","justifyEnd","Select","DesktopDepthSelect","options","d","Spinner","DesktopOrderBook","onDepthChange","divRef","setShowTotal","rangeInfo","resizeObserver","entries","entry","targetDiv","onModeChange","currency","qtyLabel","OrderBookCell","qty","ListBox","Bids","Asks","MarkPrice","Picker","DepthSelect","FundingRate","predFundingRate","countDown","useFundingRate","useFundingRateScript","FundingRateWidget","OrderBook","useOrderbookStream","removeTrailingZeros","DEFAULT_CELL_HEIGHT","SPACE","useOrderBookScript","height","setCellHeight","level","setLevel","allDepths","usePendingOrderStream","cellsHeight","restSpace","selDepth","depths","price","OrderBookWidget","EditIcon","LeverageWidgetId","RiskRate","riskRate","riskRateColor","currentLeverage","maxLeverage","isHigh","isMedium","isLow","isDefault","textColor","useLeverage","getRiskRateColor","useRiskRateScript","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","ChainIcon","ChainSelectorSheetId","Chain","r","useChainScript","currentChainId","setCurrentChainId","ChainWidget","Balance","MaybeEqual","RefreshIcon","usePortfolioSheetScript","assets","useAssets","useMarginRatioAndLeverage","showSliderTip","setShowSliderTip","onSettlePnL","toggleHideAssets","totalCollateral","availableBalance","curLeverage","update","leverageLevers","marks","leverage","setLeverage","step","onLeverageChange","onSave","err","onValueCommit","getMarginRatioColor","imr","high","low","RiskIndicator","size","LeverageSlider","Trans","PortfolioSheet","Asset","MarginRatio","Leverage","Buttons","onUnsettleClick","clsName","PortfolioSheetWidget","useBalanceScript","bottomSheetLeading","canTrade","onShowPortfolioSheet","total","BalanceWidget","useScanQRCodeScript","showScanTooltip","setShowScanTooltip","showDialog","hideDialog","onScanSuccess","url","isValidURL","str","MainLogo","jsQR","QRCODE_WIDTH","QRCODE_HEIGHT","RATIO","QRCodeScanner","videoRef","canvasRef","tick","video","canvas","ctx","videoWidth","videoHeight","canvasAspectRatio","videoAspectRatio","sx","sy","sWidth","sHeight","imageData","stream","track","ScanQRCode","ScanIcon","ScanQRCodeContent","LineGradient","RadiusGradient","LinkDeviceIcon","ScanQRCodeWidget","ExtensionPositionEnum","ExtensionSlot","installExtension","ArrowRightShortIcon","HeadIcon","CopyIcon","USDCIcon","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","formatAddress","Account","MobileAccountMenuExtension","BottomNavBar","renderContent","LinkDevice","showScanQRCode","DesktopIcon","Dot","LinkIcon","MobileIcon","DotIcon","useBottomNavBarScript","BottomNavBarWidget","useTopTabScript","MWebLastTrades","TradeData","showUSDC","useTickerStream","useTradeDataScript","ticker","vol_24h","close","volume","openInterest","TradeDataWidget","TradingviewWidget","KlineDragIcon","TradingviewUi","MaxHeight","MinHeight","Key","useTradingviewScript","setHeight","dragging","setDragging","dragRef","boxRef","offsetY","setOffsetY","topRef","handleTouchStart","event","rect","handleTouchMove","newHeight","handleTouchEnd","drag","TopTab","tradingViewConfig","ChevronIcon","TopTabWidget","OrderEntryWidget","OrderBookAndEntry","div","useOrderBookAndEntryScript","OrderBookAndEntryWidget","MarketsSheetWidget","SymbolInfoBarWidget","SimpleSheet","useAppConfig","SecondaryLogo","appIcons","secondary","subTab","setSubTab","cancelAllOrders","cancelAllTPSLOrders","MobileOrderListWidget","MobileLiquidationWidget","MobilePositionHistoryWidget","MobilePositionsWidget","OrdersView","HistoryTab","SymbolControlHeader","LanguageSwitcherWidget","onSymbol","topBar","useSplitPersistent","key","defaulValue","dep","scrollBarWidth","topBarHeight","bottomBarHeight","space","symbolInfoBarHeight","orderEntryMinWidth","orderEntryMaxWidth","orderbookMinWidth","orderbookMaxWidth","orderbookMinHeight","orderbookMaxHeight","tradindviewMinHeight","tradingViewMinWidth","dataListMaxHeight","useTradingScript","openMarketsSheet","setOpenMarketsSheet","restrictedInfo","max2XL","min3XL","max4XL","layout","setLayout","horizontalDraggable","positionsState","useOrderEntryPositions","marketsCollapseState","useMarketsCollapse","splitSizeState","useSplitSize","observerState","useObserverOrderEntry","marketsWidth","tradindviewMaxHeight","dataListMinHeight","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","SideMarketsWidget","SymbolInfoBarFullWidget","CloseIcon","DropdownMenuPortal","SwitchLayout","SwitchLayoutDropDown","LayoutIcon","renderItem","position","OrderEntryIcon","RemovablePanel","showIndicator","TopIcon","MiddleIcon","BottomIcon","Icon","idx","IndicatorIcon","onLayout","minScreenHeight","minScreenHeightSM","marketsWidget","marketsView","trailing","symbolInfoBarView","library_path","restTradingViewConfig","tradingviewWidget","tradingView","orderbookWidget","orderbookView","dataListWidget","dataListView","assetsOrderEntryMargin","orderEntryWidget","orderEntryView","tradingViewAndOrderbookView","renderTradingViewAndOrderbookView","mainView","Trading","TradingWidget","TradingPage"],"mappings":"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","sourcesContent":["import { FC } from \"react\";\nimport { Box, Divider, Flex, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { DataListState, DataListTabType } from \"./dataList.script\";\nimport {\n LiquidationWidget,\n PositionHistoryWidget,\n PositionsWidget,\n} from \"@orderly.network/ui-positions\";\nimport { DesktopOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\nimport { SettingWidget } from \"./setting\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { 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(\"pnlNotionalDecimalPrecision\", props?.pnlNotionalDecimalPrecision ?? 2);\n const [showAllSymbol, setShowAllSymbol] = useLocalStorage(\n \"showAllSymbol\",\n true\n );\n \n const [hideAssets, setHideAssets] = useLocalStorage(\n \"hideAssets\",\n false\n );\n\n return {\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n showAllSymbol,\n setShowAllSymbol,\n hideAssets,\n setHideAssets,\n };\n};\n","import { usePositionStream } from \"@orderly.network/hooks\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\nimport { useMemo } from \"react\";\nimport { useDataTap } from \"@orderly.network/react-app\";\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\n return {\n positionCount\n }\n};\n","import { useLocalStorage, useOrderStream } from \"@orderly.network/hooks\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\nimport { AlgoOrderRootType, OrderStatus } from \"@orderly.network/types\";\nimport { useEffect, useMemo } from \"react\";\nimport { TabType } from \"@orderly.network/ui-orders\";\nimport { useDataTap } from \"@orderly.network/react-app\";\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 },\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 },\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 { createContext, PropsWithChildren, useContext } from \"react\";\nimport { useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { TradingPageState, TradingPageProps } from \"../types/types\";\nimport { getBasicSymbolInfo } from \"../utils/utils\";\n\nexport const TradingPageContext = createContext({} as TradingPageState);\nexport const useTradingPageContext = () => {\n return useContext(TradingPageContext);\n};\n\nexport const TradingPageProvider = (\n props: PropsWithChildren<TradingPageProps>\n) => {\n const symbolInfo = useSymbolsInfo()[props.symbol];\n\n return (\n <TradingPageContext.Provider\n value={{\n ...props,\n symbolInfo: {\n ...getBasicSymbolInfo(symbolInfo),\n symbol: props.symbol,\n },\n }}\n >\n {props.children}\n </TradingPageContext.Provider>\n );\n};\n","import { utils } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { BasicSymbolInfo } from \"../types/types\";\n\nexport const getBasicSymbolInfo = (\n symbolInfo: (\n key?: keyof API.SymbolExt | undefined,\n defaultValue?: utils.ValueOf<API.SymbolExt> | undefined\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 { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { usePositionsCount } from \"../../../provider/usePositionsCount\";\nimport { usePendingOrderCount } from \"../../../provider/usePendingOrderCount\";\nimport { useTradingPageContext } from \"../../../provider/context\";\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 } 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 { useMemo } from \"react\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\n\nexport const usePositionHeaderScript = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n}) => {\n const {\n pnlNotionalDecimalPrecision,\n unPnlPriceBasis,\n symbol,\n } = 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 { 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 { 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 React, { FC, useMemo, useState, useCallback, ReactNode } from \"react\";\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 { AssetViewState } from \"./assetView.script\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAccount, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { FaucetWidget } from \"./faucet/faucet.widget\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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}\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 notSignedIn: {\n title: t(\"connector.signIn\"),\n description: t(\"connector.trade.signIn.tooltip\"),\n titleColor: \"primary\",\n },\n disabledTrading: {\n title: t(\"connector.enableTrading\"),\n description: t(\"connector.trade.enableTrading.tooltip\"),\n titleColor: \"primary\",\n },\n default: {\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 switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return statusText.connectWallet;\n case AccountStatusEnum.NotSignedIn:\n return statusText.notSignedIn;\n case AccountStatusEnum.DisabledTrading:\n return statusText.disabledTrading;\n default:\n return statusText.default;\n }\n }, [state.status, wrongNetwork, t]);\n};\n\nexport const TooltipContent: FC<TooltipContentProps> = ({\n description,\n formula,\n}) => (\n <div className=\"oui-leading-[1.5] oui-text-2xs oui-text-base-contrast-80 oui-min-w-[204px] oui-max-w-[240px]\">\n <span>{description}</span>\n <Divider className=\"oui-border-white/10\" my={2} />\n <span>{formula}</span>\n </div>\n);\n\nconst TotalValue: FC<TotalValueProps> = ({\n totalValue,\n visible = true,\n onToggleVisibility,\n}) => {\n const { t } = useTranslation();\n\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> = ({\n label,\n description,\n formula,\n visible,\n value,\n unit,\n rule,\n isConnected,\n showPercentage = false,\n placeholder,\n}) => (\n <Flex justify=\"between\">\n <Tooltip\n content={\n (<TooltipContent description={description} formula={formula} />) as any\n }\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\nconst AssetValueList: FC<AssetValueListProps> = ({\n visible = true,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\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 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\n <Box\n style={{\n transform: \"translateZ(0)\",\n }}\n className={cn(\n \"oui-space-y-1.5 oui-select-none oui-overflow-hidden\",\n \"oui-transition-[max-height] oui-duration-150\",\n \"group-hover:oui-will-change-[max-height]\",\n open ? \"oui-max-h-[69px]\" : \"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 </Box>\n </Box>\n );\n};\n\nexport const AssetView: FC<AssetViewState> = ({\n networkId,\n isFirstTimeDeposit,\n totalValue,\n onDeposit,\n onWithdraw,\n toggleVisible,\n visible,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n}) => {\n const { title, description, titleColor, titleClsName } =\n useCurrentStatusText();\n\n const { t } = useTranslation();\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 ? (\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 />\n <Flex gap={3} itemAlign=\"center\">\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={onWithdraw}\n data-testid=\"oui-testid-assetView-withdraw-button\"\n >\n <ArrowDownShortIcon\n color=\"white\"\n opacity={1}\n className=\"oui-rotate-180\"\n />\n <Text>{t(\"common.withdraw\")}</Text>\n </Button>\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 </Flex>\n <FaucetWidget />\n </Box>\n )}\n </AuthGuard>\n <div\n className=\"oui-pointer-events-none oui-rotate-180 oui-rounded-2xl oui-blur-[200px] oui-top-0 oui-bottom-0 oui-left-0 oui-right-0 oui-absolute\"\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 { Button } from \"@orderly.network/ui\";\nimport { FaucetState } from \"./faucet.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 useMediaQuery,\n useSettleSubscription,\n useWalletSubscription,\n useAccount,\n useConfig,\n usePrivateQuery,\n useCollateral,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport {\n MEDIA_TABLET,\n AccountStatusEnum,\n NetworkId,\n API,\n} from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { capitalizeString } from \"@orderly.network/utils\";\nimport {\n DepositAndWithdrawWithSheetId,\n DepositAndWithdrawWithDialogId,\n} from \"@orderly.network/ui-transfer\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 getKeyMemo = useMemo(() => {\n const now = new Date();\n const ninetyDaysAgo = new Date();\n ninetyDaysAgo.setDate(now.getDate() - 90);\n\n const startTime = ninetyDaysAgo.getTime();\n const endTime = now.getTime();\n\n const searchParams = new URLSearchParams();\n\n searchParams.set(\"page\", \"1\");\n searchParams.set(\"size\", \"5\");\n searchParams.set(\"side\", \"DEPOSIT\");\n searchParams.set(\"status\", \"COMPLETED\");\n searchParams.set(\"startTime\", startTime.toString());\n searchParams.set(\"endTime\", endTime.toString());\n\n return `/v1/asset/history?${searchParams.toString()}`;\n }, []);\n\n const { data: depositHistoryData } = usePrivateQuery<API.AssetHistory>(\n getKeyMemo,\n {\n formatter: (data) => data,\n }\n );\n\n return {\n isFirstTimeDeposit:\n !unavailable && totalValue === 0 && depositHistoryData?.meta?.total === 0,\n totalValue,\n };\n};\n\nexport const useAssetViewScript = () => {\n const { t } = useTranslation();\n const account = useAccountInstance();\n const matches = useMediaQuery(MEDIA_TABLET);\n const { isFirstTimeDeposit, totalValue } = useFirstTimeDeposit();\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n const { state } = useAccount();\n const { freeCollateral } = useCollateral({\n dp: 2,\n });\n const { marginRatio, mmr } = useMarginRatio();\n const isConnected = state.status >= AccountStatusEnum.Connected;\n const [{ aggregated, totalUnrealizedROI }, positionsInfo] =\n usePositionStream();\n const marginRatioVal = useMemo(() => {\n return Math.min(\n 10,\n aggregated.notional === 0\n ? // @ts-ignore\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 async (viewName: \"deposit\" | \"withdraw\") => {\n let result;\n if (matches) {\n result = await modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: viewName,\n });\n } else {\n result = await modal.show(DepositAndWithdrawWithDialogId, {\n activeTab: viewName,\n });\n }\n\n return result;\n },\n [matches]\n );\n\n const onDeposit = useCallback(async () => {\n return openDepositAndWithdraw(\"deposit\");\n }, [matches]);\n\n const ee = useEventEmitter();\n\n const onWithdraw = useCallback(async () => {\n return openDepositAndWithdraw(\"withdraw\");\n }, [matches]);\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 useWalletSubscription({\n onMessage: (data: any) => {\n const { side, transStatus } = data;\n\n if (transStatus === \"COMPLETED\") {\n const message = {\n DEPOSIT: t(\"transfer.deposit.completed\"),\n WITHDRAW: t(\"transfer.withdraw.completed\"),\n };\n let msg = `${capitalizeString(side)} completed`;\n toast.success(message[side as keyof typeof message] || msg);\n } else if (transStatus === \"FAILED\") {\n const message = {\n DEPOSIT: t(\"transfer.deposit.failed\"),\n WITHDRAW: t(\"transfer.withdraw.failed\"),\n };\n let msg = `${capitalizeString(side)} failed`;\n toast.error(message[side as keyof typeof message] || msg);\n }\n\n ee.emit(\"wallet:changed\", data);\n },\n });\n\n useSettleSubscription({\n onMessage: (data: any) => {\n const { status } = data;\n\n switch (status) {\n case \"COMPLETED\":\n toast.success(t(\"settle.settlement.completed\"));\n break;\n case \"FAILED\":\n toast.error(t(\"settle.settlement.failed\"));\n break;\n default:\n break;\n }\n },\n });\n\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 onSettle,\n visible,\n toggleVisible,\n networkId,\n isFirstTimeDeposit,\n totalValue: _totalValue,\n status: state.status,\n freeCollateral: _freeCollateral,\n marginRatioVal: _marginRatioVal,\n renderMMR: _mmr,\n isConnected,\n };\n};\n\nexport type AssetViewState = ReturnType<typeof useAssetViewScript>;\n","import { useAssetViewScript } from \"./assetView.script\";\nimport { AssetView } from \"./assetView.ui\";\nimport { FaucetState } from \"./faucet/faucet.script\";\n\nexport const AssetViewWidget = () => {\n const state = useAssetViewScript();\n return (<AssetView {...state} />);\n};\n","import { FC } from \"react\";\nimport { Box, Flex, Text } from \"@orderly.network/ui\";\nimport { OrderBookState } from \"./orderBook.script\";\nimport { DesktopOrderBook } from \"../../desktop/orderBook/index.desktop\";\nimport { OrderBook as MWebOrderBook } from \"../../mobile/orderBook\";\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 { DesktopBids } from \"./bids.desktop\";\nimport { DesktopAsks } from \"./asks.desktop\";\nimport { DesktopMarkPrice } from \"./markPrice.desktop\";\nimport { DesktopHeader } from \"./header.desktop\";\nimport { DesktopDepthSelect } from \"./depthSelect.desktop\";\nimport { cn, Grid, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookProvider } from \"../../base/orderBook/orderContext\";\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 // const onModeChange = useCallback((mode: QtyMode) => {}, []);\n\n //\n const divRef = useRef(null);\n const [showTotal, setShowTotal] = useState(false);\n\n const rangeInfo = [\n { left: 370, right: 600 },\n { left: 740, right: 800 },\n ];\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n const { inlineSize: width } = entry.borderBoxSize[0];\n const count = rangeInfo.reduce(\n (a, b) => a + (width >= b.left && width < b.right ? 1 : 0),\n 0\n );\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 ///\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 || []}\n symbolInfo={props.symbolInfo}\n >\n <Grid\n cols={1}\n rows={5}\n id=\"oui-orderbook-desktop\"\n ref={divRef}\n className=\"oui-grid-rows-[auto,auto,1fr,auto,1fr] oui-relative oui-h-full oui-w-full\"\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-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-bg-8/70\">\n <Spinner />\n </div>\n )}\n </Grid>\n {/* <div\n id=\"oui-orderbook-desktop\"\n className={cn(\"oui-h-full oui-w-full oui-relative oui-bg-red-300\", props.className)}\n ref={divRef}\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-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-bg-8/70\">\n <Spinner />\n </div>\n )}\n </div> */}\n </OrderBookProvider>\n );\n};\n","import { FC, useCallback, useMemo, useState } from \"react\";\nimport { DesktopOrderBookCell } from \"./cell.desktop\";\nimport {\n TooltipContent,\n TooltipTrigger,\n Text,\n TooltipRoot,\n TooltipArrow,\n cn,\n} from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface DesktopListBoxProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const DesktopListBox: FC<DesktopListBoxProps> = (props) => {\n const { data, type } = 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 const [hoverIndex, setHoverIndex] = useState<number>(-1);\n\n return (\n <div className=\"oui-order-book-list oui-flex oui-flex-col oui-gap-[1px]\">\n {data.map((item, index) => {\n return (\n <Tip\n key={index}\n index={index}\n item={item}\n countQty={props.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\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 let hintInfo = calcHintInfo(item);\n if (hintInfo.avgPrice === 0) {\n hintInfo = calcHintInfo(props.findMaxItem());\n }\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={props.countQty}\n type={props.type}\n accumulatedAmount={item[3]}\n maxQty={maxQty}\n isHover={isHover}\n currentHover={hoverIndex === index}\n symbolInfo={symbolInfo}\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-max-w-[400px] oui-w-full oui-text-2xs oui-shadow-md oui-rounded-base oui-p-3 oui-bg-base-6 oui-flex oui-flex-col oui-gap-2\"\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\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 { getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { cn, Divider, parseNumber, Text } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { CellBar, CellBarDirection } from \"../../base/orderBook/cellBar\";\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\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 { symbolInfo, currentHover } = props;\n const { base_dp, quote_dp } = symbolInfo;\n\n const width = Number.isNaN(props.price)\n ? 0\n : (props.accumulated / props.count) * 100;\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n const totalAmount = Number.isNaN(props.accumulated)\n ? \"-\"\n : props.accumulatedAmount?.toString();\n\n const isPendingOrder = useMemo(() => {\n const priceStr = parseNumber(props.price, { dp: dp, padding: true });\n\n const index = pendingOrders.findIndex(\n (item) => priceStr === parseNumber(item, { dp: dp, padding: true })\n );\n\n return index !== -1;\n }, [pendingOrders, props.price, depth]);\n\n return (\n <div\n 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\"\n style={{ height: `${cellHeight}px` }}\n onClick={() => {\n if (Number.isNaN(props.price) || Number.isNaN(props.quantity)) return;\n onItemClick?.([props.price, props.quantity]);\n }}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n <div\n className={cn(\n \"oui-basis-7/12 oui-flex oui-flex-row oui-items-center oui-mr-2\",\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}>{props.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}>{props.quantity}</Text.numeral>\n </div>\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 )}\n >\n <div\n className={cn(\n \"oui-flex-1 oui-pr-3 oui-text-right\",\n showTotal && \"oui-pr-3\"\n )}\n >\n <Text.numeral dp={base_dp} className=\"oui-z-10\">\n {props.accumulated}\n </Text.numeral>\n </div>\n {showTotal && (\n <div className=\"oui-flex-1 oui-text-right oui-pr-3\">\n <Text.numeral dp={2} className=\"oui-z-10\">\n {totalAmount}\n </Text.numeral>\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-absolute oui-rounded-full oui-left-[4px] oui-h-[4px] oui-w-[4px] oui-pointer-events-none\",\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-bg-white oui-left-0 oui-right-0 oui-top-0 oui-bottom-0 oui-opacity-[.12]\"></div>\n )}\n {currentHover && (\n <div\n className={cn(\n \"oui-absolute oui-left-0 oui-right-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 {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useState,\n} from \"react\";\nimport { QtyMode, TotalMode } from \"./types\";\nimport { BasicSymbolInfo } from \"../../../types/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: 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\ninterface OrderBookProviderProps {\n cellHeight: number;\n depth?: string;\n showTotal: boolean;\n pendingOrders: 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 return (\n <OrderBookContext.Provider\n value={{\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 {props.children}\n </OrderBookContext.Provider>\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 { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { DesktopListBox } from \"./listBox.desktop\";\nimport { FC, useMemo } from \"react\";\n\nexport interface Props {\n data: any[];\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 type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { DesktopListBox } from \"./listBox.desktop\";\nimport { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nexport interface Props {\n data: number[][];\n}\nexport const DesktopAsks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n let 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 type={OrderBookCellType.ASK} data={data} countQty={countQty} />\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, ReactNode } from \"react\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const DesktopHeader: FC<Props> = (props) => {\n const { showTotal } = useOrderBookContext();\n const { t } = useTranslation();\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 id=\"oui-order-book-header-price\">\n {`${t(\"common.price\")}(${props.quote})`}\n </Title>\n </Box>\n <Box width={\"100%\"}>\n <Title id=\"oui-order-book-header-qty\" justifyEnd>\n {`${t(\"common.qty\")}(${props.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 <Box width={\"100%\"}>\n <Title id=\"oui-order-book-header-total-base\" justifyEnd>\n {`${t(\"common.total\")}(${props.base})`}\n </Title>\n </Box>\n {showTotal && (\n <Box width={\"100%\"}>\n <Title id=\"oui-order-book-header-total-quote\" justifyEnd>\n {`${t(\"common.total\")}(${props.quote})`}\n </Title>\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<{\n justifyEnd?: boolean;\n id?: string;\n children: ReactNode;\n}> = (props) => {\n const { children, justifyEnd = false } = props;\n return (\n <Flex\n id={props.id}\n className={cn(\n \"oui-text-base-contrast-36 oui-text-xs oui-items-end\",\n justifyEnd && \"oui-justify-end\"\n )}\n >\n {children}\n </Flex>\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 { FC, useMemo } from \"react\";\n\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const Header: FC<Props> = (props) => {\n const { t } = useTranslation();\n\n const { mode, onModeChange } = useOrderBookContext();\n const currency = useMemo(() => {\n if (mode === \"amount\") {\n return props.quote;\n }\n return props.base;\n }, [mode, props.quote, props.base]);\n\n const qtyLabel = useMemo(() => {\n return mode === \"amount\"\n ? t(\"trading.orderBook.column.value\")\n : t(\"common.qty\");\n }, [mode, t]);\n\n return (\n <Flex\n justify={\"between\"}\n width={\"100%\"}\n className=\"oui-text-base-contrast-36 oui-text-2xs oui-py-[5px]\"\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>{`(${props.quote})`}</Text>\n </Flex>\n <Flex\n direction={\"column\"}\n itemAlign={\"end\"}\n className=\"oui-cursor-pointer\"\n onClick={() =>\n onModeChange?.(mode === \"amount\" ? \"quantity\" : \"amount\")\n }\n >\n <Text>{qtyLabel}</Text>\n <Text>{`(${currency})`}</Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useContext, useMemo } from \"react\";\nimport { CellBar } from \"../../base/orderBook/cellBar\";\nimport { Decimal, getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { OrderBookCellType, QtyMode } from \"../../base/orderBook/types\";\nimport { OrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { Box, cn, Flex, Text } from \"@orderly.network/ui\";\n\nexport interface OrderBookCellProps {\n background: string;\n price: number;\n quantity: 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 width = (props.accumulated / props.count) * 100;\n const { cellHeight, onItemClick, depth, showTotal, symbolInfo } =\n useContext(OrderBookContext);\n const { base_dp, quote_dp } = symbolInfo;\n\n let qty = Number.isNaN(props.quantity)\n ? \"-\"\n : props.mode === \"amount\"\n ? new Decimal(props.quantity).mul(props.price).toString()\n : props.quantity;\n\n if (showTotal) {\n qty = props.quantity;\n }\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n return (\n <Box\n className={cn(\n \"oui-overflow-hidden oui-relative oui-cursor-pointer oui-tabular-nums oui-text-2xs oui-w-full\",\n showTotal && \"oui-flex-1\"\n )}\n style={{ height: `${cellHeight}px` }}\n onClick={(e) => {\n if (Number.isNaN(props.price) || Number.isNaN(props.quantity)) return;\n\n onItemClick?.([props.price, props.quantity]);\n }}\n >\n <Flex justify={\"between\"}>\n <Text.numeral\n color={props.type === OrderBookCellType.BID ? \"buy\" : \"sell\"}\n dp={dp}\n >\n {props.price}\n </Text.numeral>\n <Text.numeral\n dp={props.mode === \"amount\" ? 2 : base_dp}\n className=\"oui-text-base-contrast-80\"\n >\n {qty}\n </Text.numeral>\n </Flex>\n {Number.isNaN(width) || showTotal ? null : (\n <CellBar\n width={width}\n className={\n props.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 } from \"react\";\nimport { OrderBookCell } from \"./cell\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { Box } from \"@orderly.network/ui\";\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\n return (\n <Box\n className=\"oui-order-book-list oui-flex oui-flex-col oui-gap-[1px] oui-w-full\"\n >\n {data.map((item, index) => {\n return (\n <OrderBookCell\n key={index}\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n count={props.countQty}\n type={props.type}\n mode={mode}\n />\n );\n })}\n </Box>\n );\n};\n","import { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { ListBox } from \"./listBox\";\nimport { FC, useMemo } from \"react\";\n\nexport interface Props {\n data: any[];\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 return (\n <ListBox type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { FC, useMemo } from \"react\";\nimport { ListBox } from \"./listBox\";\nexport interface Props {\n data: number[][];\n}\nexport const Asks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n let 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 return (\n <ListBox type={OrderBookCellType.ASK} data={data} countQty={countQty} />\n );\n};\n","import { FC } from \"react\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { MarkPriceView } from \"../../base/orderBook/markPrice\";\nimport { MiddlePriceView } from \"../../base/orderBook/midPriceView\";\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 { Box, Picker } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\ninterface DepthSelectProps {\n depth: 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-pt-2 oui-w-full\" >\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 { FC} from \"react\";\nimport { Header } from \"./header\";\nimport { Bids } from \"./bids\";\nimport { Asks } from \"./asks\";\nimport { MarkPrice } from \"./markPrice\";\nimport { OrderBookProvider } from \"../../base/orderBook/orderContext\";\nimport { DepthSelect } from \"./depthSelect\";\nimport { cn, Flex, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { FundingRateWidget } from \"../fundingRate\";\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 // const onModeChange = useCallback((mode: QtyMode) => {}, []);\n const symbol = `PERP_${props.symbolInfo.base}_${props.symbolInfo.quote}`;\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n pendingOrders={[]}\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-h-full oui-wfull oui-relative\", 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\n <DepthSelect\n depth={props.depths || []}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n {isLoading && (\n <div className=\"oui-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-base-800/70 oui-h-full oui-min-h-[420px]\">\n <Spinner />\n </div>\n )}\n </Flex>\n </OrderBookProvider>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { FundingRateState } from \"./fundingRate.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const FundingRate: FC<FundingRateState> = (props) => {\n const predFundingRate = props.data.est_funding_rate;\n const countDown = props.data.countDown;\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} pb={2}>\n <Text intensity={36} size=\"2xs\">\n {t(\"trading.fundingRate.predFundingRate\")}\n </Text>\n\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 { useFundingRate } from \"@orderly.network/hooks\";\n\nexport const useFundingRateScript = (symbol: string) => {\n const data = useFundingRate(symbol);\n return { data };\n};\n\nexport type FundingRateState = ReturnType<typeof useFundingRateScript>;\n","import { useFundingRateScript } from \"./fundingRate.script\";\nimport { FundingRate } from \"./fundingRate.ui\";\n\nexport const FundingRateWidget = (props: { symbol: string }) => {\n const state = useFundingRateScript(props.symbol);\n return <FundingRate {...state} />;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n useOrderbookStream,\n useOrderStream,\n useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport { removeTrailingZeros } from \"@orderly.network/utils\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { getBasicSymbolInfo } from \"../../../utils/utils\";\nimport { useScreen } from \"@orderly.network/ui\";\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\n const [data, { onDepthChange, isLoading, onItemClick, depth, allDepths }] =\n useOrderbookStream(symbol, undefined, {\n level,\n });\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\n let formattedNumber = removeTrailingZeros(depth);\n return formattedNumber;\n }, [depth, quote_dp]);\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 { 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 {\n Flex,\n Text,\n Box,\n Tooltip,\n modal,\n gradientTextVariants,\n cn,\n EditIcon,\n} from \"@orderly.network/ui\";\nimport { RiskRateState } from \"./riskRate.script\";\nimport { LeverageWidgetId } from \"@orderly.network/ui-leverage\";\nimport { TooltipContent } from \"../assetView/assetView.ui\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nexport const RiskRate: FC<RiskRateState> = (props) => {\n const { riskRate, riskRateColor, isConnected, currentLeverage, maxLeverage } =\n props;\n const { isHigh, isMedium, isLow, isDefault } = 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 (\n <TooltipContent\n description={t(\"trading.riskRate.tooltip\")}\n formula={t(\"trading.riskRate.formula\")}\n />\n ) as any\n }\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-b-white/10\"\n >\n {t(\"trading.riskRate\")}\n </Text>\n </Tooltip>\n <Text\n size=\"xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className={cn(textColor, \"oui-leading-6\")}\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=\"oui-cursor-pointer\"\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(LeverageWidgetId, { 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 {\n useAccount,\n useCollateral,\n useLeverage,\n useMarginRatio,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\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 const [maxLeverage] = 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(maxLeverage);\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,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 { cn } from \"@orderly.network/ui\";\nimport { SplitProps } from \"@uiw/react-split\";\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-1\"\n : \"!oui-h-[2px] !oui-min-h-[2px] !oui-my-1\",\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 { Flex, SimpleDialog, Text } from \"@orderly.network/ui\";\nimport { BottomNavBarState } from \"./bottomNavBar.script\";\nimport { ChainWidget } from \"./chain\";\nimport { AccountWidget } from \"./account\";\nimport { BalanceWidget } from \"./balance\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { ScanQRCodeWidget } from \"./scanQRCode\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { MobileAccountMenuExtension } from \"./account/account.widget\";\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={\"between\"}\n itemAlign={\"center\"}\n className=\" oui-px-[14px] oui-pt-[7px]\"\n // style={{\n // height: \"calc(64px + env(safe-area-inset-bottom))\"\n // }}\n >\n <BalanceWidget />\n\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 { 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 { FC } from \"react\";\nimport {\n Button,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { BalanceState } from \"./balance.script\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Balance: FC<BalanceState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex gap={3}>\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-text-[11px] oui-cursor-pointer\"\n onClick={(e) => {\n props.onShowPortfolioSheet();\n }}\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}> USDC</Text>}\n dp={2}\n visible={!props.hideAssets}\n >\n {props.canTrade ? props.total ?? \"--\" : \"--\"}\n </Text.numeral>\n </Flex>\n {props.canTrade && (\n <Divider direction=\"vertical\" className=\"oui-h-[26px]\" />\n )}\n {props.canTrade && (\n <Button\n variant={\"outlined\"}\n onClick={(e) => {\n props.onShowPortfolioSheet();\n }}\n className=\"oui-h-[28px] oui-text-2xs oui-text-primary-light oui-border-primary-light\"\n >\n {commifyOptional(props.currentLeverage!, { fix: 2 }) + \"x\"}\n </Button>\n )}\n </Flex>\n );\n};\n\nconst MaybeEqual = () => {\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","import { modal } from \"@orderly.network/ui\";\nimport { useTradingLocalStorage } from \"../../../../provider/useTradingLocalStorage\";\nimport { PortfolioSheetWidget } from \"../../portfolioSheet\";\nimport { useTradingPageContext } from \"../../../../provider/context\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport {\n useAccount,\n useCollateral,\n useMarginRatio,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const useBalanceScript = () => {\n const { t } = useTranslation();\n const { bottomSheetLeading } = useTradingPageContext();\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n\n const { currentLeverage } = useMarginRatio();\n const { totalValue } = useCollateral();\n\n const canTrade =\n !wrongNetwork &&\n !disabledConnect &&\n (state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\n\n const onShowPortfolioSheet = () => {\n if (canTrade) {\n modal.sheet({\n title: t(\"trading.asset&Margin\"),\n leading: bottomSheetLeading,\n content: <PortfolioSheetWidget />,\n });\n }\n };\n\n const total = useDataTap(totalValue);\n\n return {\n currentLeverage,\n total,\n hideAssets,\n setHideAssets,\n onShowPortfolioSheet,\n wrongNetwork,\n canTrade,\n };\n};\n\nexport type BalanceState = ReturnType<typeof useBalanceScript>;\n","import { FC, useCallback } from \"react\";\nimport {\n ArrowDownShortIcon,\n ArrowUpShortIcon,\n Button,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Grid,\n modal,\n RefreshIcon,\n Statistic,\n Text,\n} from \"@orderly.network/ui\";\nimport {\n getMarginRatioColor,\n PortfolioSheetState,\n} from \"./portfolioSheet.script\";\nimport { USDCIcon } from \"../accountSheet/icons\";\nimport { RiskIndicator } from \"./riskIndicator\";\nimport { LeverageSlider } from \"@orderly.network/ui-leverage\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\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\") return Promise.resolve();\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={(e) => {\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};\nconst Leverage: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} gap={2} width={\"100%\"}>\n <Flex width={\"100%\"} justify={\"between\"}>\n <Text size=\"2xs\" intensity={54}>\n {t(\"leverage.maxAccountLeverage\")}\n </Text>\n\n <Flex gap={1}>\n <Text size=\"2xs\" intensity={54}>\n {`${t(\"common.current\")}:`}\n </Text>\n <Text.numeral size=\"2xs\" unit=\"x\" intensity={98}>\n {props.currentLeverage ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Flex>\n <LeverageSlider\n value={props.value}\n maxLeverage={props.maxLeverage}\n onLeverageChange={props.onLeverageChange}\n setShowSliderTip={props.setShowSliderTip}\n showSliderTip={props.showSliderTip}\n onValueCommit={props.onValueCommit}\n />\n </Flex>\n );\n};\n\n// const AvailableBalance: FC<PortfolioSheetState> = (props) => {\n// return (\n// <Flex\n// width={\"100%\"}\n// justify={\"between\"}\n// r=\"lg\"\n// px={3}\n// py={4}\n// className=\"oui-bg-base-6\"\n// >\n// <Text size=\"2xs\" intensity={80}>\n// Available Balance\n// </Text>\n// <Flex className=\"oui-gap-[6px]\">\n// <USDCIcon size={24} />\n// <Text.numeral dp={2} size=\"base\" visible={!props.hideAssets}>\n// {props.availableBalance}\n// </Text.numeral>\n// </Flex>\n// </Flex>\n// );\n// };\n\nconst Buttons: FC<PortfolioSheetState> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Grid\n cols={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={<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 <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 </Grid>\n );\n};\n","import {\n useAccount,\n useCollateral,\n useEventEmitter,\n useLeverage,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { modal, SliderMarks, toast } from \"@orderly.network/ui\";\nimport { DepositAndWithdrawWithSheetId } from \"@orderly.network/ui-transfer\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const usePortfolioSheetScript = () => {\n const { account } = useAccount();\n const assets = useAssets();\n const marginRatio = useMarginRatioAndLeverage();\n const ee = useEventEmitter();\n const { t } = useTranslation();\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 return {\n ...assets,\n ...marginRatio,\n onSettlePnL,\n onDeposit,\n onWithdraw,\n showSliderTip,\n setShowSliderTip,\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 ? // @ts-ignore\n positionsInfo[\"margin_ratio\"](10)\n : marginRatio\n );\n }, [marginRatio, aggregated]);\n\n const [curLeverage, { update, config: leverageLevers, isMutating }] =\n useLeverage();\n\n const marks = useMemo((): SliderMarks => {\n return (\n leverageLevers?.map((e: number) => ({\n label: `${e}x`,\n value: e,\n })) || []\n );\n }, [leverageLevers]);\n\n const [leverage, setLeverage] = useState(curLeverage ?? 0);\n\n const maxLeverage = leverageLevers?.reduce(\n (a: number, item: any) => Math.max(a, Number(item), 0),\n 0\n );\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 (res: any) => {\n toast.success(t(\"leverage.updated\"));\n },\n (err: Error) => {\n toast.error(err.message);\n }\n );\n } catch (e) {}\n };\n\n const onValueCommit = useCallback((value: number[]) => {\n onSave(value[0]);\n }, []);\n\n return {\n aggregated,\n totalUnrealizedROI,\n positionsInfo,\n marginRatio,\n marginRatioVal,\n mmr,\n\n currentLeverage,\n step,\n marks,\n onLeverageChange,\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 { useBalanceScript } from \"./balance.script\";\nimport { Balance } from \"./balance.ui\";\n\nexport const BalanceWidget = () => {\n const state = useBalanceScript();\n return (<Balance {...state} />);\n};\n","import { useEffect, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\n\nexport type UseScanQRCodeScriptReturn = ReturnType<typeof useScanQRCodeScript>;\n\nexport function useScanQRCodeScript() {\n const [open, setOpen] = useState(false);\n const [showScanTooltip, setShowScanTooltip] = useLocalStorage(\n \"orderly_qr_code_scan_tooltip_open\",\n true\n );\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n const onScanSuccess = (url: string) => {\n if (isValidURL(url)) {\n window.location.href = url;\n }\n };\n\n useEffect(() => {\n if (showScanTooltip) {\n setTimeout(() => {\n setShowScanTooltip(false);\n }, 8000);\n }\n }, [showScanTooltip]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n onScanSuccess,\n showScanTooltip,\n };\n}\n\nfunction isValidURL(str: string) {\n try {\n const url = new URL(str);\n return [\"http:\", \"https:\"].includes(url.protocol);\n } catch (e) {\n return false;\n }\n}\n","import { FC, SVGProps } from \"react\";\nimport {\n Box,\n cn,\n Flex,\n SimpleDialog,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { MainLogo } from \"@orderly.network/ui-scaffold\";\nimport { UseScanQRCodeScriptReturn } from \"./scanQRCode.script\";\nimport { QRCodeScanner, QRCODE_WIDTH, QRCODE_HEIGHT } from \"./scanner\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\n\ntype ScanQRCodeProps = UseScanQRCodeScriptReturn;\n\nexport const ScanQRCode: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <>\n <Tooltip\n open={props.showScanTooltip}\n content={t(\"linkDevice.scanQRCode.tooltip\")}\n className=\"oui-bg-base-6 oui-text-warning-darken oui-text-2xs oui-font-semibold\"\n arrow={{ className: \"!oui-fill-base-6\" }}\n >\n <Flex\n className=\"oui-rounded-md oui-bg-base-5 oui-px-[6px] oui-h-7 oui-cursor-pointer\"\n onClick={props.showDialog}\n >\n <ScanIcon className=\"oui-text-base-contrast-80\" />\n </Flex>\n </Tooltip>\n <SimpleDialog\n title={<MainLogo />}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n >\n <ScanQRCodeContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nconst ScanQRCodeContent: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex justify=\"center\" direction=\"column\" gapY={5}>\n <Box width={QRCODE_WIDTH} height={QRCODE_HEIGHT} className=\"oui-relative\">\n <QRCodeScanner onSuccess={props.onScanSuccess} />\n <>\n <LineGradient />\n <RadiusGradient className=\"oui-absolute oui-top-[-1.5px] oui-left-[-1.5px]\" />\n <RadiusGradient className=\"oui-absolute oui-top-[-1.5px] oui-right-[-1.5px] oui-rotate-90\" />\n <RadiusGradient className=\"oui-absolute oui-bottom-[-1.5px] oui-left-[-1.5px] oui-rotate-[-90deg]\" />\n <RadiusGradient className=\"oui-absolute oui-bottom-[-1.5px] oui-right-[-1.5px] oui-rotate-[-180deg]\" />\n </>\n </Box>\n\n {/* </Box> */}\n <Text size=\"sm\" intensity={98} weight=\"semibold\">\n {t(\"linkDevice.scanQRCode\")}\n </Text>\n <span className=\"oui-px-3 oui-text-center\">\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-break-words\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"linkDevice.scanQRCode.description\"\n components={[\n <LinkDeviceIcon className=\"oui-inline-block oui-text-base-contrast-80 oui-mx-1\" />,\n ]}\n />\n </Text>\n </span>\n </Flex>\n );\n};\n\nconst ScanIcon: 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=\"M5.249 2.243a3 3 0 0 0-3 3v.75a.75.75 0 0 0 1.5 0v-.75a1.5 1.5 0 0 1 1.5-1.5h2.25a.75.75 0 0 0 0-1.5zm5.25 0a.75.75 0 0 0 0 1.5h2.25a1.5 1.5 0 0 1 1.5 1.5v.75a.75.75 0 0 0 1.5 0v-.75a3 3 0 0 0-3-3zm-7.5 9a.75.75 0 0 0-.75.75v.75a3 3 0 0 0 3 3h2.25a.75.75 0 0 0 0-1.5h-2.25a1.5 1.5 0 0 1-1.5-1.5v-.75a.75.75 0 0 0-.75-.75m12 0a.75.75 0 0 0-.75.75v.75a1.5 1.5 0 0 1-1.5 1.5h-2.25a.75.75 0 0 0 0 1.5h2.25a3 3 0 0 0 3-3v-.75a.75.75 0 0 0-.75-.75M5.25 8.999a.75.75 0 0 1 .75-.75h6a.75.75 0 0 1 0 1.5H6a.75.75 0 0 1-.75-.75\" />\n </svg>\n);\n\nexport interface LinkDeviceIconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon: FC<LinkDeviceIconProps> = (props) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n};\n\nconst LineGradient: FC<SVGProps<SVGSVGElement>> = () => {\n return (\n <div\n className={cn(\n \"oui-absolute oui-top-0 oui-left-[30px]\",\n \"oui-w-[calc(100%-60px)] oui-h-[2px] oui-rounded-full\",\n \"oui-bg-[linear-gradient(270deg,rgb(var(--oui-gradient-brand-end))_0%,rgb(var(--oui-gradient-brand-start))_100%)]\",\n \"oui-shadow-[0_0_8px_4px_rgba(var(--oui-gradient-brand-start)/0.12)]\",\n \"oui-animate-scan-qr-code\"\n )}\n />\n );\n};\n\nconst RadiusGradient: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"64\"\n height=\"64\"\n viewBox=\"0 0 64 64\"\n fill=\"none\"\n {...props}\n >\n <path\n d=\"M62 2H18C9.16344 2 2 9.16344 2 18V62\"\n stroke=\"url(#paint0_linear_136_6227)\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_136_6227\"\n x1=\"2\"\n y1=\"32\"\n x2=\"62\"\n y2=\"32\"\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 { FC, useEffect, useRef } from \"react\";\nimport jsQR from \"jsqr\";\n\ntype ScannerProps = {\n onSuccess?: (data: string) => void;\n};\n\nexport const QRCODE_WIDTH = 320;\nexport const QRCODE_HEIGHT = 320;\nconst RATIO = 2;\n\n/**\n * QR Code Scanner\n * reference https://github.com/cozmo/jsQR/blob/master/docs/index.html\n */\nexport const QRCodeScanner: FC<ScannerProps> = (props) => {\n const videoRef = useRef<HTMLVideoElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n const tick = () => {\n const video = videoRef.current;\n const canvas = canvasRef.current;\n if (!video || !canvas) return;\n\n const ctx = canvas.getContext(\"2d\")!;\n\n if (video.readyState === video.HAVE_ENOUGH_DATA) {\n const videoWidth = video.videoWidth;\n const videoHeight = video.videoHeight;\n\n const canvasAspectRatio = canvas.width / canvas.height;\n const videoAspectRatio = videoWidth / videoHeight;\n\n let sx, sy, sWidth, sHeight;\n\n if (videoAspectRatio > canvasAspectRatio) {\n // The video is wide. Crop the left and right sides\n sHeight = videoHeight;\n sWidth = videoHeight * canvasAspectRatio;\n sx = (videoWidth - sWidth) / 2;\n sy = 0;\n } else {\n // The video is high. Crop the top and bottom sides\n sWidth = videoWidth;\n sHeight = videoWidth / canvasAspectRatio;\n sx = 0;\n sy = (videoHeight - sHeight) / 2;\n }\n\n ctx.drawImage(\n video,\n sx,\n sy,\n sWidth,\n sHeight,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n\n // ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const res = jsQR(imageData.data, imageData.width, imageData.height, {\n inversionAttempts: \"dontInvert\",\n });\n\n if (res?.data) {\n console.log(\"scan result\", res.data);\n props.onSuccess?.(res.data);\n }\n }\n requestAnimationFrame(tick);\n };\n\n useEffect(() => {\n const video = videoRef.current;\n if (!open || !video) return;\n\n // Use facingMode: environment to attemt to get the front camera on phones\n navigator?.mediaDevices\n .getUserMedia({\n video: {\n facingMode: \"environment\",\n width: { ideal: QRCODE_WIDTH * RATIO },\n height: { ideal: QRCODE_HEIGHT * RATIO },\n },\n })\n .then((stream) => {\n video.srcObject = stream;\n // required to tell iOS safari we don't want fullscreen\n video.setAttribute(\"playsinline\", \"true\");\n video.play();\n\n video.onloadeddata = () => {\n console.log(\"Video data loaded.\");\n // const videoTrack = stream.getVideoTracks()[0];\n // const settings = videoTrack.getSettings();\n // console.log(\"video size\", `${settings.width}x${settings.height}`);\n\n requestAnimationFrame(tick);\n };\n })\n .catch((err) => {\n console.error(\"Error accessing camera:\", err);\n });\n\n return () => {\n // Cleanup: stop video stream when component unmounts\n const stream = video.srcObject as MediaStream;\n if (stream) {\n const tracks = stream.getTracks();\n tracks.forEach((track: any) => track.stop());\n }\n video.srcObject = null;\n };\n }, [videoRef, canvasRef]);\n\n return (\n <>\n <video\n ref={videoRef}\n width={QRCODE_WIDTH}\n height={QRCODE_HEIGHT}\n className=\"oui-bg-base-10 oui-rounded-2xl oui-hidden\"\n />\n <canvas\n ref={canvasRef}\n width={QRCODE_WIDTH * RATIO}\n height={QRCODE_HEIGHT * RATIO}\n style={{ width: QRCODE_WIDTH, height: QRCODE_HEIGHT }}\n className=\"oui-bg-base-10 oui-rounded-2xl\"\n />\n </>\n );\n};\n","import { useScanQRCodeScript } from \"./scanQRCode.script\";\nimport { ScanQRCode } from \"./scanQRCode.ui\";\n\nexport const ScanQRCodeWidget = () => {\n const state = useScanQRCodeScript();\n return <ScanQRCode {...state} />;\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 { modal } from \"@orderly.network/ui\";\nimport { AccountSheetWidget } from \"../../accountSheet\";\nimport { useTradingPageContext } from \"../../../../provider/context\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountState as AccountStateType } from \"@orderly.network/core\";\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 { ArrowRightShortIcon, Button, Flex, Text } from \"@orderly.network/ui\";\nimport { AccountSheetState } from \"./accountSheet.script\";\nimport { CopyIcon, HeadIcon, OrderlyIcon, USDCIcon } from \"./icons\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { 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 } from \"react\";\nimport { Box, cn, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { TopTabState, TopTabType } from \"./topTab.script\";\nimport { MWebLastTrades } from \"../lastTrades/lastTrades.widget\";\nimport { TradeDataWidget } from \"../tradeData\";\nimport { TradingviewWidget } from \"../tradingview/tradingview.widget\";\nimport { useTradingPageContext } from \"../../../provider/context\";\nimport { KlineDragIcon } from \"../../base/icons\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { useState } from \"react\";\nimport { useTradingPageContext } from \"../../../provider/context\";\n\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 { 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 { useTickerStream } from \"@orderly.network/hooks\";\nimport { useTradingPageContext } from \"../../../provider/context\";\nimport { useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const useTradeDataScript = (props: {\n symbol: string;\n}) => {\n\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).mul(volume).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).mul(Number(openInterest)).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 { 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, 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/context\";\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 { TradingState } from \"./trading.script\";\nimport { TopTabWidget } from \"../../components/mobile/topTab\";\nimport { OrderBookAndEntryWidget } from \"../../components/mobile/orderBookAndEntry\";\nimport {\n MarketsSheetWidget,\n SymbolInfoBarWidget,\n} from \"@orderly.network/markets\";\nimport { Flex, Box, SimpleSheet } from \"@orderly.network/ui\";\nimport { SecondaryLogo } from \"../../components/base/secondaryLogo\";\nimport { DataListWidget } from \"../../components/mobile/dataList\";\nimport { BottomNavBarWidget } from \"../../components/mobile/bottomNavBar\";\nimport { LanguageSwitcherWidget } from \"@orderly.network/ui-scaffold\";\n\nexport const MobileLayout: FC<TradingState> = (props) => {\n const onSymbol = () => {\n props.onOpenMarketsSheetChange(true);\n };\n const topBar = (\n <Box intensity={900} px={3} height={54}>\n <SymbolInfoBarWidget\n symbol={props.symbol}\n trailing={\n <Flex gapX={3}>\n <LanguageSwitcherWidget />\n <SecondaryLogo />\n </Flex>\n }\n onSymbol={onSymbol}\n />\n <SimpleSheet\n open={props.openMarketsSheet}\n onOpenChange={props.onOpenMarketsSheetChange}\n classNames={{\n body: \"oui-h-full oui-pb-[env(safe-area-inset-bottom)]\",\n content: \"oui-w-[280px] !oui-p-0 oui-rounded-bl-[40px] oui-h-full \",\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\n style={{\n paddingBottom: \"calc(64px + env(safe-area-inset-bottom))\",\n }}\n className=\"oui-grid oui-grid-rows-[auto,1fr,auto] oui-h-screen oui-gap-1 oui-relative oui-bg-base-10\"\n >\n <header>{topBar}</header>\n\n <main className=\"oui-overflow-y-auto oui-hide-scrollbar oui-space-y-1\">\n <TopTabWidget className=\"oui-bg-base-9 oui-mx-1 oui-rounded-xl\" />\n <OrderBookAndEntryWidget />\n <DataListWidget\n symbol={props.symbol}\n className=\"oui-mx-1 oui-rounded-xl\"\n sharePnLConfig={props.sharePnLConfig}\n />\n </main>\n\n <div className=\"oui-fixed oui-left-0 oui-right-0 oui-bottom-0\">\n <BottomNavBarWidget />\n </div>\n </div>\n );\n};\n","import { FC } from \"react\";\nimport { useAppConfig } from \"@orderly.network/react-app\";\n\nexport const SecondaryLogo: FC = () => {\n const { appIcons } = useAppConfig();\n\n const { secondary } = appIcons || {};\n\n if (secondary?.img) {\n return <img src={secondary?.img} className=\"oui-w-5 oui-h-5\" />;\n }\n\n if (secondary?.component) {\n return secondary.component;\n }\n\n return null;\n};\n","import { FC } from \"react\";\nimport {\n Button,\n Checkbox,\n Divider,\n Flex,\n TabPanel,\n Tabs,\n Text,\n} from \"@orderly.network/ui\";\nimport {\n DataListState,\n DataListTabSubType,\n DataListTabType,\n} from \"./dataList.script\";\nimport { MobileOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport {\n MobileLiquidationWidget,\n MobilePositionHistoryWidget,\n MobilePositionsWidget,\n} from \"@orderly.network/ui-positions\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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-gap-[2px] oui-cursor-pointer\">\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 { useTradingPageContext } from \"../../../provider/context\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { useOrderStream } from \"@orderly.network/hooks\";\nimport { usePositionsCount } from \"../../../provider/usePositionsCount\";\nimport { usePendingOrderCount } from \"../../../provider/usePendingOrderCount\";\nimport { modal, Text } from \"@orderly.network/ui\";\nimport { SharePnLConfig } from \"@orderly.network/ui-share\";\nimport { TabType } from \"@orderly.network/ui-orders\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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, useMemo } from \"react\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { getOffsetSizeNum, TradingState } from \"./trading.script\";\nimport { DataListWidget } from \"../../components/desktop/dataList\";\nimport { TradingviewWidget } from \"@orderly.network/ui-tradingview\";\nimport { AssetViewWidget } from \"../../components/desktop/assetView\";\nimport { RiskRateWidget } from \"../../components/desktop/riskRate\";\nimport { OrderBookAndTradesWidget } from \"../../components/desktop/orderBookAndTrades\";\nimport {\n SideMarketsWidget,\n SymbolInfoBarFullWidget,\n} from \"@orderly.network/markets\";\nimport { SwitchLayout } from \"../../components/desktop/layout/switchLayout\";\nimport { SplitLayout } from \"../../components/desktop/layout/splitLayout\";\nimport { RemovablePanel } from \"../../components/desktop/layout/removablePanel\";\nimport { OrderEntryWidget } from \"@orderly.network/ui-order-entry\";\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 minScreenHeight =\n topBarHeight +\n bottomBarHeight +\n symbolInfoBarHeight +\n orderbookMinHeight +\n dataListMinHeight +\n space * 4;\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 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 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={3}\n style={{ height: dataListSplitSize, minHeight: dataListMinHeight }}\n className=\"oui-overflow-hidden\"\n >\n {dataListWidget}\n </Box>\n );\n\n const assetsOrderEntryMargin = [\n <RemovablePanel\n key=\"assets\"\n className=\"oui-border oui-border-line-12\"\n index={positions.findIndex((item) => item === 0)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <AssetViewWidget />\n </RemovablePanel>,\n <RemovablePanel\n key=\"orderEntry\"\n index={positions.findIndex((item) => item === 1)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <OrderEntryWidget symbol={props.symbol} />\n </RemovablePanel>,\n <RemovablePanel\n key=\"margin\"\n index={positions.findIndex((item) => item === 2)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <RiskRateWidget />\n </RemovablePanel>,\n ];\n\n const orderEntryWidget = positions.map(\n (index) => assetsOrderEntryMargin[index]\n );\n\n const orderEntryView = (\n <Flex\n gapY={3}\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={3}\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={3}\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={3}\n style={{\n minWidth: max4XL\n ? marketsWidth + tradingViewMinWidth + orderbookMinWidth + space * 2\n : tradingViewMinWidth + orderbookMinWidth + space,\n }}\n >\n {symbolInfoBarView}\n <SplitLayout\n className=\"oui-w-full !oui-h-[calc(100%_-_54px_-_12px)]\"\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-min-w-[1018px] oui-h-full oui-w-full\",\n \"oui-p-3\",\n props.className\n )}\n onSizeChange={setDataListSplitHeightSM}\n onDragging={props.onDataListSplitHeightDragging}\n mode=\"vertical\"\n >\n <Flex\n gapX={3}\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={3}\n >\n {symbolInfoBarView}\n <Flex\n width=\"100%\"\n height=\"100%\"\n gapX={3}\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 gapY={3}\n direction=\"column\"\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={3}\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 )}\n width=\"100%\"\n p={3}\n gap={3}\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 { RefObject, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useAccount,\n useLocalStorage,\n useMediaQuery,\n} from \"@orderly.network/hooks\";\nimport { useTradingPageContext } from \"../../provider/context\";\nimport { TradingPageState } from \"../../types/types\";\nimport { useSplitPersistent } from \"../../components/desktop/layout/useSplitPersistent\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useFirstTimeDeposit } from \"../../components/desktop/assetView/assetView.script\";\nimport Split from \"@uiw/react-split\";\n\nexport type TradingState = ReturnType<typeof useTradingScript>;\n\nexport const scrollBarWidth = 6;\nexport const topBarHeight = 48;\nexport const bottomBarHeight = 29;\nexport const space = 12;\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;\n\nexport const useTradingScript = () => {\n const [openMarketsSheet, setOpenMarketsSheet] = useState(false);\n const props = useTradingPageContext();\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect, restrictedInfo } = useAppContext();\n\n const { isFirstTimeDeposit } = useFirstTimeDeposit();\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(() => {\n if (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n ) {\n return true;\n }\n return false;\n }, [state.status, wrongNetwork, disabledConnect]);\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 splitSizeState = useSplitSize(layout);\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 tradingViewHeightState = useExtraHeight({\n orderEntryViewRef: observerState.orderEntryViewRef,\n tradindviewMaxHeight,\n dataListMinHeight,\n });\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 };\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 undefined\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(dep: any) {\n const [mainSplitSize, setMainSplitSize] = useSplitPersistent(\n \"orderly_main_split_size\",\n undefined,\n dep\n );\n const [dataListSplitSize, setDataListSplitSize] = useSplitPersistent(\n \"orderly_datalist_split_size\",\n \"350px\"\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 (let 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 { 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 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 } 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 { TradingPageProvider } from \"../../provider\";\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"]}
|