import React, { Suspense } from 'react'
import { observer } from 'mobx-react'
import {
HorizontalResizeHandle,
VerticalResizeHandle,
} from './ResizeHandles.tsx'
import Track from './Track.tsx'
import VerticalScrollbar from './VerticalScrollbar.tsx'
import Header from './header/Header.tsx'
import Minimap from './minimap/Minimap.tsx'
import MSAPanel from './msa/MSAPanel.tsx'
import TreePanel from './tree/TreePanel.tsx'
import TreeRuler from './tree/TreeRuler.tsx'
import type { MsaViewModel } from '../model.ts'
const TopArea = observer(function ({ model }: { model: MsaViewModel }) {
const { showHorizontalScrollbar } = model
return (
{showHorizontalScrollbar ? : null}
)
})
const TrackColumnIndicator = observer(function ({
model,
}: {
model: MsaViewModel
}) {
const {
mouseCol,
mouseClickCol,
colWidth,
scrollX,
treeAreaWidth,
resizeHandleWidth,
totalTrackAreaHeight,
msaAreaWidth,
verticalScrollbarWidth,
} = model
const left = treeAreaWidth + resizeHandleWidth
const clipWidth = msaAreaWidth - verticalScrollbarWidth
return (
{mouseCol !== undefined ? (
) : null}
{mouseClickCol !== undefined ? (
) : null}
)
})
const TrackArea = observer(function ({ model }: { model: MsaViewModel }) {
const { turnedOnTracks } = model
if (turnedOnTracks.length === 0) {
return null
}
return (
{turnedOnTracks.map(track => (
))}
)
})
const MainArea = observer(function ({ model }: { model: MsaViewModel }) {
const { showVerticalScrollbar } = model
return (
{showVerticalScrollbar ? : null}
)
})
const View = observer(function ({ model }: { model: MsaViewModel }) {
return (
)
})
const MSAView = observer(function ({ model }: { model: MsaViewModel }) {
const { height, viewInitialized, DialogComponent, DialogProps } = model
return (
{viewInitialized ? (
<>
{DialogComponent ? (
) : null}
>
) : null}
)
})
export default MSAView