import type { AxisMapping, H5WebComplex, NumArray } from '@h5web/shared'; import { useMemo } from 'react'; import { createPortal } from 'react-dom'; import type { DimensionMapping } from '../../../dimension-mapper/models'; import MappedLineVis from '../line/MappedLineVis'; import type { LineConfig } from '../line/config'; import ComplexLineToolbar from './ComplexLineToolbar'; import type { ComplexLineConfig } from './lineConfig'; import { ComplexVisType } from './models'; import { getPhaseAmplitudeValues } from './utils'; interface Props { value: H5WebComplex[]; valueLabel?: string; dims: number[]; dimMapping: DimensionMapping; axisLabels?: AxisMapping; axisValues?: AxisMapping; title: string; toolbarContainer: HTMLDivElement | undefined; config: ComplexLineConfig; lineConfig: LineConfig; } function MappedComplexLineVis(props: Props) { const { value, valueLabel, toolbarContainer, config, lineConfig, ...lineProps } = props; const { dims } = lineProps; const { visType } = config; const { phaseValues, amplitudeValues } = useMemo( () => getPhaseAmplitudeValues(value), [value] ); return ( <> {toolbarContainer && createPortal( , toolbarContainer )} ); } export default MappedComplexLineVis;