@orderly.network/trading 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +29 -29
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +18 -18
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/account/account.ui.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.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/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","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","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","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","name","token","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","chainId","setChainId","isTestnetChain","ChainWidget","formatAddress","Account","ArrowRightShortIcon","HeadIcon","CopyIcon","USDCIcon","size","OrderlyIcon","AccountSheet","AccountInfo","ReferralInfo","TradingRewardsInfo","TWType","useChains","useCurEpochEstimate","useEpochInfo","useReferralInfo","useModal","useAccountSheetScript","selectedChainId","accountId","address","hide","disconnect","showGetTestUSDC","chainName","useGetChains","onCopyAddress","affiliateCommission30D","traderCommission30D","isAffiliate","isTrader","onClickReferral","useReferral","curEpochId","estRewards","onClickTradingRewards","useTradingRewards","onDisconnect","gettingTestUSDC","_onClickReferral","_onClick","curEpochEstimate","list","curEpoch","mainChains","findByChainId","chain","AccountSheetWidget","useAccountScript","referral","tradingRewards","bottomSheetLeading","AccountWidget","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","LeverageSlider","PortfolioSheet","Asset","MarginRatio","Leverage","Buttons","onUnsettleClick","clsName","PortfolioSheetWidget","useBalanceScript","isEnableTrading","onShowPortfolioSheet","total","BalanceWidget","useScanQRCodeScript","showScanTooltip","setShowScanTooltip","showDialog","hideDialog","onScanSuccess","url","isValidURL","str","MainLogo","jsQR","QRCodeScanner","videoRef","canvasRef","tick","video","canvas","ctx","videoWidth","videoHeight","canvasAspectRatio","videoAspectRatio","sx","sy","sWidth","sHeight","imageData","stream","track","ScanQRCode","ScanIcon","ScanQRCodeContent","LinkDeviceIcon","viewBox","ScanQRCodeWidget","BottomNavBar","renderContent","LinkDevice","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","MaintenanceTipsWidget","onSymbol","topBar","useSplitPersistent","defaulValue","dep","useTradingScript","openMarketsSheet","setOpenMarketsSheet","max2XL","min3XL","max4XL","layout","setLayout","canTrading","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, Text } 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\";\n\nexport const DataList: FC<DataListState> = (props) => {\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={\n (props.positionCount ?? 0) > 0\n ? `${DataListTabType.positions}(${props.positionCount})`\n : DataListTabType.positions\n }\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-pending-tab\"\n value={DataListTabType.pending}\n title={\n (props.pendingOrderCount ?? 0) > 0\n ? `${DataListTabType.pending}(${props.pendingOrderCount})`\n : DataListTabType.pending\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={\n (props.tpSlOrderCount ?? 0) > 0\n ? `${DataListTabType.tp_sl}(${props.tpSlOrderCount})`\n : DataListTabType.tp_sl\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={DataListTabType.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 />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-positionHistory-tab\"\n value={DataListTabType.positionHistory}\n title={DataListTabType.positionHistory}\n >\n <PositionHistoryWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-orderHistory-tab\"\n value={DataListTabType.orderHistory}\n title={DataListTabType.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 />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-liquidation-tab\"\n value={DataListTabType.liquidation}\n title={DataListTabType.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\";\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 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 Hide other symbols\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 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=\"Unreal. PnL\" 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 return (\n <Statistic label=\"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\";\n\nexport const Setting: FC<SettingState> = (props) => {\n const [open, setOpen] = useState(false);\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 Hide other symbols\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\">Portfolio Settings</Text>\n <Divider />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n Decimal Precision for PnL & Notional\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 Unrealized PnL Price Basis\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 // \"markPrice\" | \"lastPrice\"\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === \"markPrice\"}\n label={\"Mark price\"}\n value={\"markPrice\"}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === \"lastPrice\"}\n label={\"Last price\"}\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 {\n Box,\n cn,\n Flex,\n Grid,\n ListView,\n ScrollArea,\n Text,\n} from \"@orderly.network/ui\";\nimport { LastTradesState } from \"./lastTrades.script\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { commifyOptional } from \"@orderly.network/utils\";\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 return (\n <Row\n left=\"Time\"\n mid={`Price(${props.quote})`}\n right={`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 Collapsible,\n CollapsibleContent,\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\";\n\ninterface StatusInfo {\n title: string;\n description: string;\n titleColor?: any;\n titleClsName?: string;\n}\n\ninterface TooltipContentProps {\n description: ReactNode;\n formula: ReactNode;\n}\n\ninterface TotalValueProps {\n totalValue?: number;\n visible?: boolean;\n onToggleVisibility?: () => void;\n}\n\ninterface AssetDetailProps {\n label: string;\n description: ReactNode;\n formula: ReactNode;\n visible: boolean;\n value?: number | string;\n unit?: string;\n rule?: \"percentages\";\n isConnected?: boolean;\n showPercentage?: boolean;\n placeholder?: string;\n}\n\ninterface AssetValueListProps {\n visible?: boolean;\n freeCollateral?: number | null;\n marginRatioVal?: number;\n renderMMR?: string | number;\n isConnected: boolean;\n}\n\nconst useCurrentStatusText = (): StatusInfo => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n\n return useMemo(() => {\n if (wrongNetwork) {\n return {\n title: \"Wrong Network\",\n description: \"Please switch to a supported network to continue.\",\n titleColor: \"warning\",\n };\n }\n\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return {\n title: \"Connect wallet\",\n description: \"Please connect your wallet before starting to trade.\",\n titleClsName:\n \"oui-text-transparent oui-bg-clip-text oui-gradient-brand\",\n };\n case AccountStatusEnum.NotSignedIn:\n return {\n title: \"Sign in\",\n description: \"Please sign in before starting to trade.\",\n titleColor: \"primary\",\n };\n case AccountStatusEnum.DisabledTrading:\n return {\n title: \"Enable trading\",\n description: \"Enable trading before starting to trade.\",\n titleColor: \"primary\",\n };\n default:\n return {\n title: \"\",\n description: \"\",\n };\n }\n }, [state.status, wrongNetwork]);\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 <Flex direction=\"column\" gap={1} className=\"oui-text-2xs\" itemAlign=\"center\">\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 My Assets (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\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 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=\"Free collateral\"\n description=\"Free collateral for placing new orders.\"\n formula=\"Free collateral = Total balance + Total unsettlement PnL - Total position initial margin\"\n visible={visible}\n // TODO: change AssetDetail value\n value={freeCollateral! === 0 ? (\"0\" as any) : freeCollateral}\n unit=\"USDC\"\n />\n <AssetDetail\n label=\"Margin ratio\"\n description=\"The margin ratio represents the proportion of collateral relative to the total position value.\"\n formula=\"Account margin ratio = (Total collateral value / Total position notional) * 100%\"\n visible={visible}\n value={marginRatioVal}\n isConnected={isConnected}\n rule=\"percentages\"\n showPercentage={true}\n placeholder=\"--%\"\n />\n <AssetDetail\n label=\"Maintenance margin ratio\"\n description=\"The minimum margin ratio required to protect your positions from being liquidated. If the Margin ratio falls below the Maintenance margin ratio, the account will be liquidated.\"\n formula=\"Account maintenance margin ratio = Sum(Position notional * Symbol maintenance Margin Ratio) / Total position notional * 100%\"\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 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 Deposit to start trade\n </Text.gradient>\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n You can deposit assets from various networks\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>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>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>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\";\n\nexport function FaucetUi(props: FaucetState) {\n if (!props.showFaucet) {\n return null;\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 >Get test USDC</Button>\n )\n}","import { useMemo, useRef, 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\";\n\nexport function useFaucetScript() {\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 = `${\n namespace === ChainNamespace.solana ? \"100\" : \"1,000\"\n } USDC will be added to your balance. Please note this may take up to 3 minutes. Please check back later.`;\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: \"Get test USDC\",\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 {\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 { useCallback, useMemo } from \"react\";\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\";\n\nexport const useFirstTimeDeposit = () => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const { totalValue } = useCollateral({\n dp: 2,\n });\n const unavailable =\n wrongNetwork ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\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 account = useAccountInstance();\n const matches = useMediaQuery(MEDIA_TABLET);\n\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(\n \"Settlement is only allowed once every 10 minutes. Please try again later.\"\n );\n return Promise.reject(e);\n }\n })\n .then((res) => {\n toast.success(\"Settlement requested\");\n return Promise.resolve(res);\n });\n }, [account]);\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 let msg = `${capitalizeString(side)} completed`;\n toast.success(msg);\n } else if (transStatus === \"FAILED\") {\n let msg = `${capitalizeString(side)} failed`;\n toast.error(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(\"Settlement completed\");\n break;\n case \"FAILED\":\n toast.error(\"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\";\n\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n Text,\n Flex,\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\";\n\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\n className=\"oui-order-book-list oui-flex oui-flex-col oui-gap-[1px]\"\n >\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\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={\n type === OrderBookCellType.ASK ? \"end\" : \"start\"\n }\n alignOffset={-25.4}\n side=\"left\"\n sideOffset={2}\n onPointerEnter={(e) => e.preventDefault()}\n >\n <Row\n title=\"Avg. Price≈\"\n content={hintInfo.avgPrice}\n contentDp={priceDp}\n />\n <Row\n title={`Sum (${base})`}\n content={hintInfo.sumQty}\n contentDp={baseDp}\n />\n <Row\n title={`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\";\n\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\n markPrice={markPrice}\n quote_dp={symbolInfo.quote_dp}\n />\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 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={\"Spread Ratio of the ask1 and bid1.\"}\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\";\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\n return (\n <Tooltip\n content={\n \"Obtained from a third-party oracle, the mark price is calculated as the median of three prices: the last price, the fair price based on the funding rate basis, and the fair price based on the order books.\"\n }\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\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=\"Tips\"\n actions={{\n primary: {\n label: \"OK\",\n onClick: () => setOpen(false),\n },\n }}\n >\n <Text>\n Obtained from a third-party oracle, the mark price is calculated as\n the median of three prices: the last price, the fair price based on\n the funding rate basis, and the fair price based on the order books.\n </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 } from \"react\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const DesktopHeader: FC<Props> = (props) => {\n const { showTotal } = useOrderBookContext();\n return (\n <Flex pl={3} justify={\"between\"} className=\"oui-py-[6px]\">\n <Flex gap={1} className={cn(\"oui-basis-7/12\", showTotal && \"oui-basis-1/2\")}>\n <Box width={\"100%\"}>\n <Title\n name=\"Price\"\n token={props.quote}\n id=\"oui-order-book-header-price\"\n />\n </Box>\n <Box width={\"100%\"}>\n <Title\n name=\"Qty\"\n token={props.base}\n id=\"oui-order-book-header-qty\"\n justifyEnd\n />\n </Box>\n </Flex>\n <Flex gap={1} pr={3} className={cn(\"oui-basis-5/12\", showTotal && \"oui-basis-1/2\")}>\n <Box width={\"100%\"}>\n <Title\n name=\"Total\"\n token={props.base}\n id=\"oui-order-book-header-total-base\"\n justifyEnd\n />\n </Box>\n {showTotal && (\n <Box width={\"100%\"}>\n <Title\n name=\"Total\"\n token={props.quote}\n id=\"oui-order-book-header-total-quote\"\n justifyEnd\n />\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<{\n name: string;\n token: string;\n justifyEnd?: boolean;\n id?: string;\n}> = (props) => {\n const { name, token, 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 <span>{name}</span>\n <span>{`(${token})`}</span>\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\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const Header: FC<Props> = (props) => {\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\" ? \"Value\" : \"Qty\";\n }, [mode]);\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>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\";\n\nexport const FundingRate: FC<FundingRateState> = (props) => {\n const predFundingRate = props.data.est_funding_rate;\n const countDown = props.data.countDown;\n\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} pb={2}>\n <Text intensity={36} size=\"2xs\">\n Pred. funding rate\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}>{predFundingRate ?? \"--\"}</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\";\n\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\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=\"The Risk rate is used to assess the risk level of an account. When the Risk rate reaches 100%, the account will be liquidated\"\n formula=\"Risk rate = Maintenance margin ratio / Margin ratio * 100%\"\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 Risk rate\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 <Tooltip open={false} content={(<div>hint test</div>) as any}>\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer\"\n >\n Max account leverage\n </Text>\n </Tooltip>\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\";\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 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 title=\"Order book\" className=\"oui-pl-3 oui-text-sm\" />\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 title=\"Last trades\" className=\"oui-text-sm oui-px-3\" />\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 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={\"Order book\"}>\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={\"Last trades\"}>\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\";\n\nexport const BottomNavBar: FC<BottomNavBarState> = (props) => {\n const renderContent = () => {\n if (props.wrongNetwork) {\n return null;\n }\n\n if (props.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return <LinkDevice onDisconnect={props.onDisconnect} />;\n }\n\n return <ChainWidget />;\n };\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 {props.status !== AccountStatusEnum.EnableTradingWithoutConnected &&\n props.status < AccountStatusEnum.EnableTrading && (\n <ScanQRCodeWidget />\n )}\n {renderContent()}\n <AccountWidget />\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\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=\"Tips\"\n size=\"xs\"\n actions={{\n secondary: {\n label: \"Cancel\",\n onClick: hideDialog,\n size: \"md\",\n fullWidth: true,\n },\n primary: {\n label: \"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 You are connected via another device. This mode is for trading only.\n To switch networks, deposit or withdraw assets, please disconnect and\n reconnect your wallet on this device.\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, Flex, modal, Text, toast } from \"@orderly.network/ui\";\nimport { ChainState } from \"./chain.script\";\nimport { ChainSelectorSheetId } from \"@orderly.network/ui-chain-selector\";\n\nexport const Chain: FC<ChainState> = (props) => {\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.isWrongNetwork,\n })\n .then(\n (r: any) => {\n if (r?.chainId) {\n props.setChainId(r?.chainId);\n }\n toast.success(\"Network switched\");\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 {/* {props.isTestnetChain ? (\n <Text size=\"2xs\" intensity={80}>\n Testnet\n </Text>\n ) : (\n <ChainIcon chainId={props.chainId ?? '1'} size=\"2xs\" />\n )} */}\n <ChainIcon chainId={props.chainId ?? props.defaultChainId} 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 { useAccount, useConfig, useWalletConnector } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nexport const useChainScript = () => {\n const { account } = useAccount();\n const config= useConfig();\n const [chainId, setChainId] = useState<string |number | undefined>(account.chainId);\n\n useEffect(() => {\n setChainId(account.chainId);\n }, [account.chainId]);\n\n const isTestnetChain = useMemo(() => {\n if (chainId) {\n return isTestnet(Number(chainId));\n }\n return undefined;\n }, [chainId]);\n const { wrongNetwork } = useAppContext();\n const networkId = config.get(\"networkId\");\n const defaultChainId = useMemo(() => {\n\n if (networkId === 'testnet') {\n\n return 421614;\n }\n return 42161;\n\n }, []);\n \n return {\n defaultChainId,\n chainId,\n setChainId,\n isTestnetChain,\n networkId,\n isWrongNetwork: 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 { 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 { modal } from \"@orderly.network/ui\";\nimport { AccountSheetWidget } from \"../../accountSheet\";\nimport { useTradingPageContext } from \"../../../../provider/context\";\nimport { useAccount } from \"@orderly.network/hooks\";\n\nexport const useAccountScript = () => {\n const { referral, tradingRewards, bottomSheetLeading } =\n useTradingPageContext();\n const { account, state } = useAccount();\n\n const onShowAccountSheet = () => {\n modal.sheet({\n title: \"Account\",\n leading: bottomSheetLeading,\n content: <AccountSheetWidget {...referral} {...tradingRewards} />,\n });\n };\n\n return {\n onShowAccountSheet,\n address: account.address,\n status: state.status,\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\";\n\nexport const AccountSheet: FC<AccountSheetState> = (props) => {\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 Get test USDC\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 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 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\">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\">Affiliate</Text>\n <Text size=\"2xs\" intensity={54}>\n (30d commission)\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\">Trader</Text>\n <Text size=\"2xs\" intensity={54}>\n (30d commission)\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 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 <span className=\"oui-text-2xs\">\n Trading rewards\n <Text intensity={54}>{\" (epoch \"}</Text>\n {props.curEpochId}\n <Text intensity={54}>{\" )\"}</Text>\n </span>\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 My est. rewards\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\";\n\nexport const useAccountSheetScript = (\n props: ReferralProps & TradingRewardsProps\n) => {\n const [selectedChainId] = useLocalStorage<number | undefined>(\n \"orderly_selected_chainId\",\n undefined\n );\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 = account.chainId || connectedChain?.id || selectedChainId;\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(\"Copy success\");\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 selectedChainId && localStorage.removeItem(\"orderly_selected_chainId\");\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 = `${\n namespace === ChainNamespace.solana ? \"100\" : \"1,000\"\n } USDC will be added to your balance. Please note this may take up to 3 minutes. Please check back later.`;\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: \"Get test USDC\",\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 { useAccountScript } from \"./account.script\";\nimport { Account } from \"./account.ui\";\n\nexport const AccountWidget = () => {\n const state = useAccountScript();\n return (<Account {...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\";\n\nexport const Balance: FC<BalanceState> = (props) => {\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}>Total value</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.isEnableTrading ? props.total ?? \"--\" : \"--\"}\n </Text.numeral>\n </Flex>\n {!props.wrongNetwork && props.isEnableTrading && (\n <Divider direction=\"vertical\" className=\"oui-h-[26px]\" />\n )}\n {!props.wrongNetwork && props.isEnableTrading && (\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\";\n\nexport const useBalanceScript = () => {\n const { bottomSheetLeading } = useTradingPageContext();\n\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n const { wrongNetwork } = useAppContext();\n const { state } = useAccount();\n\n const { currentLeverage } = useMarginRatio();\n const { totalValue } = useCollateral();\n const isEnableTrading =\n state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n\n const onShowPortfolioSheet = () => {\n if (isEnableTrading) {\n modal.sheet({\n title: \"Asset & Margin\",\n leading: bottomSheetLeading,\n content: <PortfolioSheetWidget />,\n });\n }\n };\n const total = useDataTap(totalValue);\n\n return {\n currentLeverage,\n total,\n hideAssets,\n setHideAssets,\n onShowPortfolioSheet,\n wrongNetwork,\n isEnableTrading,\n };\n};\n\nexport type BalanceState = ReturnType<typeof useBalanceScript>;\n","import { FC, useCallback } from \"react\";\nimport {\n ArrowDownShortIcon,\n ArrowUpShortIcon,\n Button,\n cn,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Grid,\n modal,\n RefreshIcon,\n Slider,\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\";\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 onUnsettleClick = useCallback(() => {\n return modal.confirm({\n title: \"Settle PnL\",\n // maxWidth: \"xs\",\n content: (\n <Text intensity={54} size=\"xs\">\n Are you sure you want to settle your PnL? Settlement will take up to 1\n minute before you can withdraw your available balance.\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 }, []);\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 Total value (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=\"Unreal. PnL (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=\"Unsettled PnL (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 Settle PnL\n </Text>\n </button>\n </Flex>\n </Statistic>\n </Grid>\n </Flex>\n );\n};\nconst MarginRatio: FC<PortfolioSheetState> = (props) => {\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=\"Margin Ratio\"\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=\"Free / Total Collateral (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 return (\n <Flex direction={\"column\"} gap={2} width={\"100%\"}>\n <Flex width={\"100%\"} justify={\"between\"}>\n <Text size=\"2xs\" intensity={54}>\n Max account leverage\n </Text>\n <Text.numeral\n size=\"2xs\"\n // @ts-ignore\n prefix={\n <Text size=\"2xs\" intensity={54}>\n {\"Current: \"}\n </Text>\n }\n suffix=\"x\"\n >\n {props.currentLeverage ?? \"--\"}\n </Text.numeral>\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};\nconst 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};\nconst Buttons: FC<PortfolioSheetState> = (props) => {\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 Withdraw\n </Button>\n <Button\n icon={<ArrowDownShortIcon color=\"white\" opacity={0.8} />}\n size=\"md\"\n fullWidth\n onClick={props.onDeposit}\n >\n Deposit\n </Button>\n </Grid>\n );\n};\n","import {\n useAccount,\n useCollateral,\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\";\n\nexport const usePortfolioSheetScript = () => {\n const { account } = useAccount();\n const assets = useAssets();\n const marginRatio = useMarginRatioAndLeverage();\n const [showSliderTip, setShowSliderTip] = useState(false);\n const onSettlePnL = useCallback(async () => {\n return account\n .settle()\n .catch((e) => {\n if (e.code == -1104) {\n toast.error(\n \"Settlement is only allowed once every 10 minutes. Please try again later.\"\n );\n return Promise.reject(e);\n }\n if (e?.code === \"ACTION_REJECTED\") {\n toast.error(\"User rejected the request.\");\n return Promise.reject(e);\n }\n })\n .then((res) => {\n toast.success(\"Settlement requested\");\n return Promise.resolve(res);\n });\n }, [account]);\n const onDeposit = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"deposit\",\n });\n }, []);\n const onWithdraw = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"withdraw\",\n });\n }, []);\n \n\n return {\n ...assets,\n ...marginRatio,\n onSettlePnL,\n onDeposit,\n onWithdraw,\n showSliderTip, 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 [{ 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) => Math.max(a, Number(item), 0))\n\n const step = 100 / ((marks?.length || 0) - 1);\n\n // const leverageValue = useMemo(() => {\n // const index = leverageLevers.findIndex((item: any) => item === leverage);\n\n // return index * step;\n // }, [leverageLevers, leverage, step]);\n\n const onLeverageChange = (leverage: number) => {\n // maxLeverage / 100 * leverage;\n setLeverage(leverage);\n // updateLeverage(leverage);\n };\n\n const onSave = async (leverage: number) => {\n try {\n update({ leverage }).then(\n (res: any) => {\n toast.success(\"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","\nimport { cn } from \"@orderly.network/ui\";\nimport { FC } from \"react\";\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\";\n\ntype ScanQRCodeProps = UseScanQRCodeScriptReturn;\nexport const ScanQRCode: FC<ScanQRCodeProps> = (props) => {\n return (\n <>\n <Tooltip\n open={props.showScanTooltip}\n content=\"Link to Desktop via QR Code\"\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\">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 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 Scan QR Code\n </Text>\n <span className=\"oui-px-3 oui-text-center\">\n <Text size=\"2xs\" intensity={54}>\n Click the\n </Text>\n <LinkDeviceIcon className=\"oui-inline-block oui-text-base-contrast-80 oui-mx-1\" />\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-break-words\"\n >\n icon in the top right corner on desktop to generate a QR code to scan.\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\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(video, 0, 0, canvas.width, canvas.height);\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 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({ video: { facingMode: \"environment\" } })\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 video.onloadeddata = () => {\n console.log(\"Video data loaded.\");\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={320}\n height={320}\n className=\"oui-bg-base-10 oui-rounded-2xl oui-hidden\"\n />\n <canvas\n ref={canvasRef}\n width={320}\n height={320}\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 { useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const useBottomNavBarScript = () => {\n const { wrongNetwork } = useAppContext();\n const { account, state } = useAccount();\n\n /** link device, acally wallet not connect */\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_selected_chainId\");\n await account.disconnect();\n };\n\n return {\n wrongNetwork,\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\";\n\nexport const TopTab: FC<\n TopTabState & {\n className?: string;\n }\n> = (props) => {\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 }}\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=\"Chart\" value={TopTabType.chart}>\n <TradingviewWidget symbol={props.symbol} tradingViewConfig={tradingViewConfig}/>\n\n </TabPanel>\n <TabPanel title=\"Trades\" value={TopTabType.trades}>\n <MWebLastTrades symbol={props.symbol} />\n </TabPanel>\n <TabPanel title=\"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: {\n symbol: string;\n}) => {\n\n return <LastTradesWidget symbol={props.symbol} classNames={\n {\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};","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { TradeDataState } from \"./tradeData.script\";\n\nexport const TradeData: FC<TradeDataState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={2}>\n <Row\n title=\"Mark price\"\n value={props.ticker?.mark_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"Index price\"\n value={props.ticker?.index_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"24h volume\"\n value={props.vol_24h}\n dp={props.symbolInfo.quote_dp}\n rule=\"human\"\n showUSDC\n />\n <Row\n title=\"24h high\"\n value={props.ticker?.[\"24h_high\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"24h low\"\n value={props.ticker?.[\"24h_low\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"Open interest\"\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 { 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 { MaintenanceTipsWidget } from \"@orderly.network/ui-scaffold\";\n\nexport const MobileLayout: FC<TradingState> = (props) => {\n const onSymbol = () => {\n props.onOpenMarketsSheetChange(true);\n };\n\n const topBar = (\n <Box intensity={900} px={3} height={54}>\n <SymbolInfoBarWidget\n symbol={props.symbol}\n trailing={<SecondaryLogo />}\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 <div>\n <MaintenanceTipsWidget />\n </div>\n\n <main className=\"oui-overflow-y-auto oui-hide-scrollbar oui-space-y-1\">\n <TopTabWidget className=\"oui-mx-1 oui-bg-base-9 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\";\n\nexport const DataList: FC<\n DataListState & {\n className?: string;\n }\n> = (props) => {\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={\n (props.positionCount ?? 0) > 0\n ? `${DataListTabType.position}(${props.positionCount})`\n : DataListTabType.position\n }\n value={DataListTabType.position}\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n title={\n (props.pendingOrderCount ?? 0) > 0\n ? `${DataListTabType.pending}(${props.pendingOrderCount})`\n : DataListTabType.pending\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={\n (props.tpSlOrderCount ?? 0) > 0\n ? `${DataListTabType.tp_sl}(${props.tpSlOrderCount})`\n : DataListTabType.tp_sl\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={DataListTabType.history} value={DataListTabType.history}>\n <HistoryTab {...props} />\n </TabPanel>\n <TabPanel\n title={DataListTabType.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 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 Hide other symbols\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 Close All\n </Button>\n </Flex>\n );\n};\n\nconst HistoryTab: FC<DataListState> = (props) => {\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={DataListTabSubType.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 />\n </TabPanel>\n <TabPanel\n title={DataListTabSubType.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 { PositionsProps } from \"@orderly.network/ui-positions\";\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, SharePnLParams } from \"@orderly.network/ui-share\";\nimport { TabType } from \"@orderly.network/ui-orders\";\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 Partial<Omit<SharePnLParams, \"position\" | \"refCode\" | \"leverage\">>;\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 { 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 ? \"Cancel all pending orders\"\n : type === TabType.tp_sl\n ? \"Cancel all TP/SL orders\"\n : \"\";\n const content =\n type === TabType.pending\n ? \"Are you sure you want to cancel all of your pending orders?\"\n : type === TabType.tp_sl\n ? \"Are you sure you want to cancel all of your TP/SL orders?\"\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 { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { useDataListScript } from \"./dataList.script\";\nimport { DataList } from \"./dataList.ui\";\nimport { SharePnLConfig, SharePnLParams } from \"@orderly.network/ui-share\";\n\nexport const DataListWidget = (props: {\n symbol: string;\n className?: string;\n sharePnLConfig?: SharePnLConfig &\n Partial<Omit<SharePnLParams, \"position\" | \"refCode\" | \"leverage\">>;\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\";\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 canTrading,\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 = canTrading ? 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 } = 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 canTrading = useMemo(() => {\n if (\n !wrongNetwork &&\n (state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n ) {\n return true;\n }\n return false;\n }, [state.status, wrongNetwork]);\n\n const horizontalDraggable = useMemo(() => min3XL, [min3XL]);\n\n const positionsState = useOrderEntryPositions({\n canTrading,\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 canTrading,\n openMarketsSheet,\n onOpenMarketsSheetChange: setOpenMarketsSheet,\n horizontalDraggable,\n ...marketsCollapseState,\n ...positionsState,\n ...splitSizeState,\n ...observerState,\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 canTrading: boolean;\n isFirstTimeDeposit: boolean;\n}) {\n const { canTrading, 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 () => canTrading && !isFirstTimeDeposit,\n [canTrading, 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\";\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 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 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\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 Advanced ({position})\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 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/account/account.ui.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.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/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","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","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","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","name","token","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","chainId","setChainId","isTestnetChain","ChainWidget","formatAddress","Account","ArrowRightShortIcon","HeadIcon","CopyIcon","USDCIcon","size","OrderlyIcon","AccountSheet","AccountInfo","ReferralInfo","TradingRewardsInfo","TWType","useChains","useCurEpochEstimate","useEpochInfo","useReferralInfo","useModal","useAccountSheetScript","linkDeviceStorage","accountId","address","hide","disconnect","showGetTestUSDC","chainName","useGetChains","onCopyAddress","affiliateCommission30D","traderCommission30D","isAffiliate","isTrader","onClickReferral","useReferral","curEpochId","estRewards","onClickTradingRewards","useTradingRewards","onDisconnect","gettingTestUSDC","_onClickReferral","_onClick","curEpochEstimate","list","curEpoch","mainChains","findByChainId","chain","AccountSheetWidget","useAccountScript","referral","tradingRewards","bottomSheetLeading","AccountWidget","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","LeverageSlider","PortfolioSheet","Asset","MarginRatio","Leverage","Buttons","onUnsettleClick","clsName","PortfolioSheetWidget","useBalanceScript","isEnableTrading","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","BottomNavBar","renderContent","LinkDevice","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","MaintenanceTipsWidget","onSymbol","topBar","useSplitPersistent","defaulValue","dep","useTradingScript","openMarketsSheet","setOpenMarketsSheet","max2XL","min3XL","max4XL","layout","setLayout","canTrading","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, Text } 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\";\n\nexport const DataList: FC<DataListState> = (props) => {\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={\n (props.positionCount ?? 0) > 0\n ? `${DataListTabType.positions}(${props.positionCount})`\n : DataListTabType.positions\n }\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-pending-tab\"\n value={DataListTabType.pending}\n title={\n (props.pendingOrderCount ?? 0) > 0\n ? `${DataListTabType.pending}(${props.pendingOrderCount})`\n : DataListTabType.pending\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={\n (props.tpSlOrderCount ?? 0) > 0\n ? `${DataListTabType.tp_sl}(${props.tpSlOrderCount})`\n : DataListTabType.tp_sl\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={DataListTabType.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 />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-positionHistory-tab\"\n value={DataListTabType.positionHistory}\n title={DataListTabType.positionHistory}\n >\n <PositionHistoryWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={!!props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-orderHistory-tab\"\n value={DataListTabType.orderHistory}\n title={DataListTabType.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 />\n </TabPanel>\n <TabPanel\n testid=\"oui-testid-dataList-liquidation-tab\"\n value={DataListTabType.liquidation}\n title={DataListTabType.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\";\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 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 Hide other symbols\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 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=\"Unreal. PnL\" 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 return (\n <Statistic label=\"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\";\n\nexport const Setting: FC<SettingState> = (props) => {\n const [open, setOpen] = useState(false);\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 Hide other symbols\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\">Portfolio Settings</Text>\n <Divider />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n Decimal Precision for PnL & Notional\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 Unrealized PnL Price Basis\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 // \"markPrice\" | \"lastPrice\"\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === \"markPrice\"}\n label={\"Mark price\"}\n value={\"markPrice\"}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === \"lastPrice\"}\n label={\"Last price\"}\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 {\n Box,\n cn,\n Flex,\n Grid,\n ListView,\n ScrollArea,\n Text,\n} from \"@orderly.network/ui\";\nimport { LastTradesState } from \"./lastTrades.script\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { commifyOptional } from \"@orderly.network/utils\";\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 return (\n <Row\n left=\"Time\"\n mid={`Price(${props.quote})`}\n right={`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 Collapsible,\n CollapsibleContent,\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\";\n\ninterface StatusInfo {\n title: string;\n description: string;\n titleColor?: any;\n titleClsName?: string;\n}\n\ninterface TooltipContentProps {\n description: ReactNode;\n formula: ReactNode;\n}\n\ninterface TotalValueProps {\n totalValue?: number;\n visible?: boolean;\n onToggleVisibility?: () => void;\n}\n\ninterface AssetDetailProps {\n label: string;\n description: ReactNode;\n formula: ReactNode;\n visible: boolean;\n value?: number | string;\n unit?: string;\n rule?: \"percentages\";\n isConnected?: boolean;\n showPercentage?: boolean;\n placeholder?: string;\n}\n\ninterface AssetValueListProps {\n visible?: boolean;\n freeCollateral?: number | null;\n marginRatioVal?: number;\n renderMMR?: string | number;\n isConnected: boolean;\n}\n\nconst useCurrentStatusText = (): StatusInfo => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n\n return useMemo(() => {\n if (wrongNetwork) {\n return {\n title: \"Wrong Network\",\n description: \"Please switch to a supported network to continue.\",\n titleColor: \"warning\",\n };\n }\n\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return {\n title: \"Connect wallet\",\n description: \"Please connect your wallet before starting to trade.\",\n titleClsName:\n \"oui-text-transparent oui-bg-clip-text oui-gradient-brand\",\n };\n case AccountStatusEnum.NotSignedIn:\n return {\n title: \"Sign in\",\n description: \"Please sign in before starting to trade.\",\n titleColor: \"primary\",\n };\n case AccountStatusEnum.DisabledTrading:\n return {\n title: \"Enable trading\",\n description: \"Enable trading before starting to trade.\",\n titleColor: \"primary\",\n };\n default:\n return {\n title: \"\",\n description: \"\",\n };\n }\n }, [state.status, wrongNetwork]);\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 <Flex direction=\"column\" gap={1} className=\"oui-text-2xs\" itemAlign=\"center\">\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 My Assets (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\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 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=\"Free collateral\"\n description=\"Free collateral for placing new orders.\"\n formula=\"Free collateral = Total balance + Total unsettlement PnL - Total position initial margin\"\n visible={visible}\n // TODO: change AssetDetail value\n value={freeCollateral! === 0 ? (\"0\" as any) : freeCollateral}\n unit=\"USDC\"\n />\n <AssetDetail\n label=\"Margin ratio\"\n description=\"The margin ratio represents the proportion of collateral relative to the total position value.\"\n formula=\"Account margin ratio = (Total collateral value / Total position notional) * 100%\"\n visible={visible}\n value={marginRatioVal}\n isConnected={isConnected}\n rule=\"percentages\"\n showPercentage={true}\n placeholder=\"--%\"\n />\n <AssetDetail\n label=\"Maintenance margin ratio\"\n description=\"The minimum margin ratio required to protect your positions from being liquidated. If the Margin ratio falls below the Maintenance margin ratio, the account will be liquidated.\"\n formula=\"Account maintenance margin ratio = Sum(Position notional * Symbol maintenance Margin Ratio) / Total position notional * 100%\"\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 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 Deposit to start trade\n </Text.gradient>\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n You can deposit assets from various networks\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>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>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>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\";\n\nexport function FaucetUi(props: FaucetState) {\n if (!props.showFaucet) {\n return null;\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 >Get test USDC</Button>\n )\n}","import { useMemo, useRef, 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\";\n\nexport function useFaucetScript() {\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 = `${\n namespace === ChainNamespace.solana ? \"100\" : \"1,000\"\n } USDC will be added to your balance. Please note this may take up to 3 minutes. Please check back later.`;\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: \"Get test USDC\",\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 {\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 { useCallback, useMemo } from \"react\";\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\";\n\nexport const useFirstTimeDeposit = () => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const { totalValue } = useCollateral({\n dp: 2,\n });\n const unavailable =\n wrongNetwork ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\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 account = useAccountInstance();\n const matches = useMediaQuery(MEDIA_TABLET);\n\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(\n \"Settlement is only allowed once every 10 minutes. Please try again later.\"\n );\n return Promise.reject(e);\n }\n if (e.message.indexOf('Signing off chain messages with Ledger is not yet supported') !== -1) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", { message: e.message, userAddress: account.address });\n }\n\n\n })\n .then((res) => {\n toast.success(\"Settlement requested\");\n return Promise.resolve(res);\n });\n }, [account]);\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 let msg = `${capitalizeString(side)} completed`;\n toast.success(msg);\n } else if (transStatus === \"FAILED\") {\n let msg = `${capitalizeString(side)} failed`;\n toast.error(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(\"Settlement completed\");\n break;\n case \"FAILED\":\n toast.error(\"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\";\n\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n Text,\n Flex,\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\";\n\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\n className=\"oui-order-book-list oui-flex oui-flex-col oui-gap-[1px]\"\n >\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\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={\n type === OrderBookCellType.ASK ? \"end\" : \"start\"\n }\n alignOffset={-25.4}\n side=\"left\"\n sideOffset={2}\n onPointerEnter={(e) => e.preventDefault()}\n >\n <Row\n title=\"Avg. Price≈\"\n content={hintInfo.avgPrice}\n contentDp={priceDp}\n />\n <Row\n title={`Sum (${base})`}\n content={hintInfo.sumQty}\n contentDp={baseDp}\n />\n <Row\n title={`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\";\n\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\n markPrice={markPrice}\n quote_dp={symbolInfo.quote_dp}\n />\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 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={\"Spread Ratio of the ask1 and bid1.\"}\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\";\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\n return (\n <Tooltip\n content={\n \"Obtained from a third-party oracle, the mark price is calculated as the median of three prices: the last price, the fair price based on the funding rate basis, and the fair price based on the order books.\"\n }\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\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=\"Tips\"\n actions={{\n primary: {\n label: \"OK\",\n onClick: () => setOpen(false),\n },\n }}\n >\n <Text>\n Obtained from a third-party oracle, the mark price is calculated as\n the median of three prices: the last price, the fair price based on\n the funding rate basis, and the fair price based on the order books.\n </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 } from \"react\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const DesktopHeader: FC<Props> = (props) => {\n const { showTotal } = useOrderBookContext();\n return (\n <Flex pl={3} justify={\"between\"} className=\"oui-py-[6px]\">\n <Flex gap={1} className={cn(\"oui-basis-7/12\", showTotal && \"oui-basis-1/2\")}>\n <Box width={\"100%\"}>\n <Title\n name=\"Price\"\n token={props.quote}\n id=\"oui-order-book-header-price\"\n />\n </Box>\n <Box width={\"100%\"}>\n <Title\n name=\"Qty\"\n token={props.base}\n id=\"oui-order-book-header-qty\"\n justifyEnd\n />\n </Box>\n </Flex>\n <Flex gap={1} pr={3} className={cn(\"oui-basis-5/12\", showTotal && \"oui-basis-1/2\")}>\n <Box width={\"100%\"}>\n <Title\n name=\"Total\"\n token={props.base}\n id=\"oui-order-book-header-total-base\"\n justifyEnd\n />\n </Box>\n {showTotal && (\n <Box width={\"100%\"}>\n <Title\n name=\"Total\"\n token={props.quote}\n id=\"oui-order-book-header-total-quote\"\n justifyEnd\n />\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<{\n name: string;\n token: string;\n justifyEnd?: boolean;\n id?: string;\n}> = (props) => {\n const { name, token, 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 <span>{name}</span>\n <span>{`(${token})`}</span>\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\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const Header: FC<Props> = (props) => {\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\" ? \"Value\" : \"Qty\";\n }, [mode]);\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>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\";\n\nexport const FundingRate: FC<FundingRateState> = (props) => {\n const predFundingRate = props.data.est_funding_rate;\n const countDown = props.data.countDown;\n\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} pb={2}>\n <Text intensity={36} size=\"2xs\">\n Pred. funding rate\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}>{predFundingRate ?? \"--\"}</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\";\n\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\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=\"The Risk rate is used to assess the risk level of an account. When the Risk rate reaches 100%, the account will be liquidated\"\n formula=\"Risk rate = Maintenance margin ratio / Margin ratio * 100%\"\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 Risk rate\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 <Tooltip open={false} content={(<div>hint test</div>) as any}>\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer\"\n >\n Max account leverage\n </Text>\n </Tooltip>\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\";\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 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 title=\"Order book\" className=\"oui-pl-3 oui-text-sm\" />\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 title=\"Last trades\" className=\"oui-text-sm oui-px-3\" />\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 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={\"Order book\"}>\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={\"Last trades\"}>\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\";\n\nexport const BottomNavBar: FC<BottomNavBarState> = (props) => {\n const renderContent = () => {\n if (props.wrongNetwork) {\n return null;\n }\n\n if (props.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return <LinkDevice onDisconnect={props.onDisconnect} />;\n }\n\n return <ChainWidget />;\n };\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 {props.status !== AccountStatusEnum.EnableTradingWithoutConnected &&\n props.status < AccountStatusEnum.EnableTrading && (\n <ScanQRCodeWidget />\n )}\n {renderContent()}\n <AccountWidget />\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\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=\"Tips\"\n size=\"xs\"\n actions={{\n secondary: {\n label: \"Cancel\",\n onClick: hideDialog,\n size: \"md\",\n fullWidth: true,\n },\n primary: {\n label: \"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 You are connected via another device. This mode is for trading only.\n To switch networks, deposit or withdraw assets, please disconnect and\n reconnect your wallet on this device.\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, Flex, modal, Text, toast } from \"@orderly.network/ui\";\nimport { ChainState } from \"./chain.script\";\nimport { ChainSelectorSheetId } from \"@orderly.network/ui-chain-selector\";\n\nexport const Chain: FC<ChainState> = (props) => {\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.isWrongNetwork,\n })\n .then(\n (r: any) => {\n if (r?.chainId) {\n props.setChainId(r?.chainId);\n }\n toast.success(\"Network switched\");\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 {/* {props.isTestnetChain ? (\n <Text size=\"2xs\" intensity={80}>\n Testnet\n </Text>\n ) : (\n <ChainIcon chainId={props.chainId ?? '1'} size=\"2xs\" />\n )} */}\n <ChainIcon chainId={props.chainId ?? props.defaultChainId} 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 { useAccount, useConfig, useWalletConnector } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nexport const useChainScript = () => {\n const { account } = useAccount();\n const config= useConfig();\n const [chainId, setChainId] = useState<string |number | undefined>(account.chainId);\n\n useEffect(() => {\n setChainId(account.chainId);\n }, [account.chainId]);\n\n const isTestnetChain = useMemo(() => {\n if (chainId) {\n return isTestnet(Number(chainId));\n }\n return undefined;\n }, [chainId]);\n const { wrongNetwork } = useAppContext();\n const networkId = config.get(\"networkId\");\n const defaultChainId = useMemo(() => {\n\n if (networkId === 'testnet') {\n\n return 421614;\n }\n return 42161;\n\n }, []);\n \n return {\n defaultChainId,\n chainId,\n setChainId,\n isTestnetChain,\n networkId,\n isWrongNetwork: 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 { 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 { modal } from \"@orderly.network/ui\";\nimport { AccountSheetWidget } from \"../../accountSheet\";\nimport { useTradingPageContext } from \"../../../../provider/context\";\nimport { useAccount } from \"@orderly.network/hooks\";\n\nexport const useAccountScript = () => {\n const { referral, tradingRewards, bottomSheetLeading } =\n useTradingPageContext();\n const { account, state } = useAccount();\n\n const onShowAccountSheet = () => {\n modal.sheet({\n title: \"Account\",\n leading: bottomSheetLeading,\n content: <AccountSheetWidget {...referral} {...tradingRewards} />,\n });\n };\n\n return {\n onShowAccountSheet,\n address: account.address,\n status: state.status,\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\";\n\nexport const AccountSheet: FC<AccountSheetState> = (props) => {\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 Get test USDC\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 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 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\">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\">Affiliate</Text>\n <Text size=\"2xs\" intensity={54}>\n (30d commission)\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\">Trader</Text>\n <Text size=\"2xs\" intensity={54}>\n (30d commission)\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 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 <span className=\"oui-text-2xs\">\n Trading rewards\n <Text intensity={54}>{\" (epoch \"}</Text>\n {props.curEpochId}\n <Text intensity={54}>{\" )\"}</Text>\n </span>\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 My est. rewards\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\";\n\nexport const useAccountSheetScript = (\n props: ReferralProps & TradingRewardsProps\n) => {\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(\"Copy success\");\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 = `${\n namespace === ChainNamespace.solana ? \"100\" : \"1,000\"\n } USDC will be added to your balance. Please note this may take up to 3 minutes. Please check back later.`;\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: \"Get test USDC\",\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 { useAccountScript } from \"./account.script\";\nimport { Account } from \"./account.ui\";\n\nexport const AccountWidget = () => {\n const state = useAccountScript();\n return (<Account {...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\";\n\nexport const Balance: FC<BalanceState> = (props) => {\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}>Total value</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.isEnableTrading ? props.total ?? \"--\" : \"--\"}\n </Text.numeral>\n </Flex>\n {!props.wrongNetwork && props.isEnableTrading && (\n <Divider direction=\"vertical\" className=\"oui-h-[26px]\" />\n )}\n {!props.wrongNetwork && props.isEnableTrading && (\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\";\n\nexport const useBalanceScript = () => {\n const { bottomSheetLeading } = useTradingPageContext();\n\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n const { wrongNetwork } = useAppContext();\n const { state } = useAccount();\n\n const { currentLeverage } = useMarginRatio();\n const { totalValue } = useCollateral();\n const isEnableTrading =\n state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n\n const onShowPortfolioSheet = () => {\n if (isEnableTrading) {\n modal.sheet({\n title: \"Asset & Margin\",\n leading: bottomSheetLeading,\n content: <PortfolioSheetWidget />,\n });\n }\n };\n const total = useDataTap(totalValue);\n\n return {\n currentLeverage,\n total,\n hideAssets,\n setHideAssets,\n onShowPortfolioSheet,\n wrongNetwork,\n isEnableTrading,\n };\n};\n\nexport type BalanceState = ReturnType<typeof useBalanceScript>;\n","import { FC, useCallback } from \"react\";\nimport {\n ArrowDownShortIcon,\n ArrowUpShortIcon,\n Button,\n cn,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Grid,\n modal,\n RefreshIcon,\n Slider,\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\";\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 onUnsettleClick = useCallback(() => {\n return modal.confirm({\n title: \"Settle PnL\",\n // maxWidth: \"xs\",\n content: (\n <Text intensity={54} size=\"xs\">\n Are you sure you want to settle your PnL? Settlement will take up to 1\n minute before you can withdraw your available balance.\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 }, []);\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 Total value (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=\"Unreal. PnL (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=\"Unsettled PnL (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 Settle PnL\n </Text>\n </button>\n </Flex>\n </Statistic>\n </Grid>\n </Flex>\n );\n};\nconst MarginRatio: FC<PortfolioSheetState> = (props) => {\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=\"Margin Ratio\"\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=\"Free / Total Collateral (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 return (\n <Flex direction={\"column\"} gap={2} width={\"100%\"}>\n <Flex width={\"100%\"} justify={\"between\"}>\n <Text size=\"2xs\" intensity={54}>\n Max account leverage\n </Text>\n <Text.numeral\n size=\"2xs\"\n // @ts-ignore\n prefix={\n <Text size=\"2xs\" intensity={54}>\n {\"Current: \"}\n </Text>\n }\n suffix=\"x\"\n >\n {props.currentLeverage ?? \"--\"}\n </Text.numeral>\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};\nconst 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};\nconst Buttons: FC<PortfolioSheetState> = (props) => {\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 Withdraw\n </Button>\n <Button\n icon={<ArrowDownShortIcon color=\"white\" opacity={0.8} />}\n size=\"md\"\n fullWidth\n onClick={props.onDeposit}\n >\n Deposit\n </Button>\n </Grid>\n );\n};\n","import {\n useAccount,\n useCollateral, 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\";\n\nexport const usePortfolioSheetScript = () => {\n const { account } = useAccount();\n const assets = useAssets();\n const marginRatio = useMarginRatioAndLeverage();\n const ee = useEventEmitter();\n\n const [showSliderTip, setShowSliderTip] = useState(false);\n const onSettlePnL = useCallback(async () => {\n return account\n .settle()\n .catch((e) => {\n if (e.code == -1104) {\n toast.error(\n \"Settlement is only allowed once every 10 minutes. Please try again later.\"\n );\n return Promise.reject(e);\n }\n if (e.message.indexOf('Signing off chain messages with Ledger is not yet supported') !== -1) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", { message: e.message, userAddress: account.address });\n return Promise.reject(e);\n }\n\n if (e?.code === \"ACTION_REJECTED\") {\n toast.error(\"User rejected the request.\");\n return Promise.reject(e);\n }\n })\n .then((res) => {\n toast.success(\"Settlement requested\");\n return Promise.resolve(res);\n });\n }, [account]);\n const onDeposit = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"deposit\",\n });\n }, []);\n const onWithdraw = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"withdraw\",\n });\n }, []);\n \n\n return {\n ...assets,\n ...marginRatio,\n onSettlePnL,\n onDeposit,\n onWithdraw,\n showSliderTip, 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 [{ 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) => Math.max(a, Number(item), 0))\n\n const step = 100 / ((marks?.length || 0) - 1);\n\n // const leverageValue = useMemo(() => {\n // const index = leverageLevers.findIndex((item: any) => item === leverage);\n\n // return index * step;\n // }, [leverageLevers, leverage, step]);\n\n const onLeverageChange = (leverage: number) => {\n // maxLeverage / 100 * leverage;\n setLeverage(leverage);\n // updateLeverage(leverage);\n };\n\n const onSave = async (leverage: number) => {\n try {\n update({ leverage }).then(\n (res: any) => {\n toast.success(\"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","\nimport { cn } from \"@orderly.network/ui\";\nimport { FC } from \"react\";\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\";\n\ntype ScanQRCodeProps = UseScanQRCodeScriptReturn;\nexport const ScanQRCode: FC<ScanQRCodeProps> = (props) => {\n return (\n <>\n <Tooltip\n open={props.showScanTooltip}\n content=\"Link to Desktop via QR Code\"\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\">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 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 Scan QR Code\n </Text>\n <span className=\"oui-px-3 oui-text-center\">\n <Text size=\"2xs\" intensity={54}>\n Click the\n </Text>\n <LinkDeviceIcon className=\"oui-inline-block oui-text-base-contrast-80 oui-mx-1\" />\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-break-words\"\n >\n icon in the top right corner on desktop to generate a QR code to scan.\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 { useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const useBottomNavBarScript = () => {\n const { wrongNetwork } = 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 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\";\n\nexport const TopTab: FC<\n TopTabState & {\n className?: string;\n }\n> = (props) => {\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 }}\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=\"Chart\" value={TopTabType.chart}>\n <TradingviewWidget symbol={props.symbol} tradingViewConfig={tradingViewConfig}/>\n\n </TabPanel>\n <TabPanel title=\"Trades\" value={TopTabType.trades}>\n <MWebLastTrades symbol={props.symbol} />\n </TabPanel>\n <TabPanel title=\"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: {\n symbol: string;\n}) => {\n\n return <LastTradesWidget symbol={props.symbol} classNames={\n {\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};","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { TradeDataState } from \"./tradeData.script\";\n\nexport const TradeData: FC<TradeDataState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={2}>\n <Row\n title=\"Mark price\"\n value={props.ticker?.mark_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"Index price\"\n value={props.ticker?.index_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"24h volume\"\n value={props.vol_24h}\n dp={props.symbolInfo.quote_dp}\n rule=\"human\"\n showUSDC\n />\n <Row\n title=\"24h high\"\n value={props.ticker?.[\"24h_high\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"24h low\"\n value={props.ticker?.[\"24h_low\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"Open interest\"\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 { 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 { MaintenanceTipsWidget } from \"@orderly.network/ui-scaffold\";\n\nexport const MobileLayout: FC<TradingState> = (props) => {\n const onSymbol = () => {\n props.onOpenMarketsSheetChange(true);\n };\n\n const topBar = (\n <Box intensity={900} px={3} height={54}>\n <SymbolInfoBarWidget\n symbol={props.symbol}\n trailing={<SecondaryLogo />}\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 <div>\n <MaintenanceTipsWidget />\n </div>\n\n <main className=\"oui-overflow-y-auto oui-hide-scrollbar oui-space-y-1\">\n <TopTabWidget className=\"oui-mx-1 oui-bg-base-9 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\";\n\nexport const DataList: FC<\n DataListState & {\n className?: string;\n }\n> = (props) => {\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={\n (props.positionCount ?? 0) > 0\n ? `${DataListTabType.position}(${props.positionCount})`\n : DataListTabType.position\n }\n value={DataListTabType.position}\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n title={\n (props.pendingOrderCount ?? 0) > 0\n ? `${DataListTabType.pending}(${props.pendingOrderCount})`\n : DataListTabType.pending\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={\n (props.tpSlOrderCount ?? 0) > 0\n ? `${DataListTabType.tp_sl}(${props.tpSlOrderCount})`\n : DataListTabType.tp_sl\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={DataListTabType.history} value={DataListTabType.history}>\n <HistoryTab {...props} />\n </TabPanel>\n <TabPanel\n title={DataListTabType.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 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 Hide other symbols\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 Close All\n </Button>\n </Flex>\n );\n};\n\nconst HistoryTab: FC<DataListState> = (props) => {\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={DataListTabSubType.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 />\n </TabPanel>\n <TabPanel\n title={DataListTabSubType.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 { PositionsProps } from \"@orderly.network/ui-positions\";\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, SharePnLParams } from \"@orderly.network/ui-share\";\nimport { TabType } from \"@orderly.network/ui-orders\";\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 Partial<Omit<SharePnLParams, \"position\" | \"refCode\" | \"leverage\">>;\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 { 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 ? \"Cancel all pending orders\"\n : type === TabType.tp_sl\n ? \"Cancel all TP/SL orders\"\n : \"\";\n const content =\n type === TabType.pending\n ? \"Are you sure you want to cancel all of your pending orders?\"\n : type === TabType.tp_sl\n ? \"Are you sure you want to cancel all of your TP/SL orders?\"\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 { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { useDataListScript } from \"./dataList.script\";\nimport { DataList } from \"./dataList.ui\";\nimport { SharePnLConfig, SharePnLParams } from \"@orderly.network/ui-share\";\n\nexport const DataListWidget = (props: {\n symbol: string;\n className?: string;\n sharePnLConfig?: SharePnLConfig &\n Partial<Omit<SharePnLParams, \"position\" | \"refCode\" | \"leverage\">>;\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\";\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 canTrading,\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 = canTrading ? 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 } = 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 canTrading = useMemo(() => {\n if (\n !wrongNetwork &&\n (state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n ) {\n return true;\n }\n return false;\n }, [state.status, wrongNetwork]);\n\n const horizontalDraggable = useMemo(() => min3XL, [min3XL]);\n\n const positionsState = useOrderEntryPositions({\n canTrading,\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 canTrading,\n openMarketsSheet,\n onOpenMarketsSheetChange: setOpenMarketsSheet,\n horizontalDraggable,\n ...marketsCollapseState,\n ...positionsState,\n ...splitSizeState,\n ...observerState,\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 canTrading: boolean;\n isFirstTimeDeposit: boolean;\n}) {\n const { canTrading, 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 () => canTrading && !isFirstTimeDeposit,\n [canTrading, 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\";\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 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 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\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 Advanced ({position})\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 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"]}
|