import { toInstrumentRunSteps, toProtocolSteps, toTimeCourseSteps, } from './adapters' import { doseResponseProps } from './componentDoseResponseProps' import { assayMatrixSampleSelectorProps, dataFrameProps, reagentListProps, sampleSelectorProps, scheduleCalendarProps, timelineProps, } from './componentGenericProps' import { plateMapProps } from './componentPlateMapProps' import { qpcrPlateProps } from './componentQpcrPlateProps' import type { BioTemplateComponentPropsBinding } from './componentBindings' import type { AssayMatrixTemplate, BioTemplateEnvelope, DataFrameTemplate, DoseResponseTemplate, InstrumentRunTemplate, PlateMapTemplate, ProtocolStepsTemplate, QpcrPlateTemplate, ReagentListTemplate, SampleSheetTemplate, TimeCourseTemplate, } from './types' export function propsForTemplate(template: BioTemplateEnvelope): BioTemplateComponentPropsBinding[] { switch (template.template_id) { case 'plate-map': return plateMapProps(template as PlateMapTemplate) case 'sample-sheet': return [ dataFrameProps(template as DataFrameTemplate), sampleSelectorProps(template as SampleSheetTemplate), ] case 'sample-prep': case 'calibration-curve': case 'flow-cytometry-panel': return [dataFrameProps(template as DataFrameTemplate)] case 'assay-matrix': return [ dataFrameProps(template as DataFrameTemplate), assayMatrixSampleSelectorProps(template as AssayMatrixTemplate), ] case 'instrument-run': return [ dataFrameProps(template as DataFrameTemplate), scheduleCalendarProps(template as InstrumentRunTemplate), timelineProps(template as InstrumentRunTemplate, toInstrumentRunSteps(template as InstrumentRunTemplate)), ] case 'dose-response': return doseResponseProps(template as DoseResponseTemplate) case 'time-course': return [ timelineProps(template as TimeCourseTemplate, toTimeCourseSteps(template as TimeCourseTemplate)), dataFrameProps(template as DataFrameTemplate), ] case 'protocol-steps': return [ timelineProps(template as ProtocolStepsTemplate, toProtocolSteps(template as ProtocolStepsTemplate), true), dataFrameProps(template as DataFrameTemplate), ] case 'reagent-list': return [ reagentListProps(template as ReagentListTemplate), dataFrameProps(template as DataFrameTemplate), ] case 'qpcr-plate': return qpcrPlateProps(template as QpcrPlateTemplate) default: return [] } }