import { Market_market } from '@vegaprotocol/graphql'; import classNames from 'classnames'; import AutoSizer from 'react-virtualized-auto-sizer'; import { useState, ReactNode, ComponentType } from 'react'; import { GridTab, GridTabs } from './grid-tabs'; import { DealTicketContainer } from '../../components/deal-ticket-container'; import { OrderListContainer } from '../..//components/order-list-container'; import { Splash } from '@vegaprotocol/ui-toolkit'; import { Positions } from './positions'; const Chart = () => (

Chart

); const Orderbook = () => (

Orderbook

); const Collateral = () => (

Collateral

); const Trades = () => (

Trades

); // enum TradingView { // Chart = 'Chart', // Ticket = 'Ticket', // Orderbook = 'Orderbook', // Orders = 'Orders', // Positions = 'Positions', // Collateral = 'Collateral', // Trades = 'Trades', // } const TradingViews = { Chart: Chart, Ticket: DealTicketContainer, Orderbook: Orderbook, Orders: OrderListContainer, Positions: Positions, Collateral: Collateral, Trades: Trades, }; type TradingView = keyof typeof TradingViews; interface TradeGridProps { market: Market_market; } export const TradeGrid = ({ market }: TradeGridProps) => { const wrapperClasses = classNames( 'h-full max-h-full', 'grid gap-[1px] grid-cols-[1fr_325px_325px] grid-rows-[min-content_1fr_200px]', 'bg-black-10 dark:bg-white-10', 'text-ui' ); return (

Market: {market.name}

); }; interface TradeGridChildProps { children: ReactNode; className?: string; } const TradeGridChild = ({ children, className }: TradeGridChildProps) => { const gridChildClasses = classNames('bg-white dark:bg-black', className); return (
{({ width, height }) => (
{children}
)}
); }; interface TradePanelsProps { market: Market_market; } export const TradePanels = ({ market }: TradePanelsProps) => { const [view, setView] = useState('Chart'); const renderView = () => { const Component = TradingViews[view]; if (!Component) { throw new Error(`No component for view: ${view}`); } return ; }; return (

Market: {market.name}

{({ width, height }) => (
{renderView()}
)}
{Object.keys(TradingViews).map((key) => { const isActive = view === key; const className = classNames('py-4', 'px-12', 'capitalize', { 'text-black dark:text-vega-yellow': isActive, 'bg-white dark:bg-black': isActive, 'text-black dark:text-white': !isActive, 'bg-black-10 dark:bg-white-10': !isActive, }); return ( ); })}
); };