'use client'; import clsx from 'clsx'; import { useEffect, useState } from 'react'; import { TabList, TabPanel, Tabs } from 'react-tabs'; import { IInlineSynthesisDTO } from '@/backend/rsform/api'; import { useRSForm } from '@/backend/rsform/useRSForm'; import Modal from '@/components/ui/Modal'; import TabLabel from '@/components/ui/TabLabel'; import { LibraryItemID } from '@/models/library'; import { ICstSubstitute } from '@/models/oss'; import { ConstituentaID, IRSForm } from '@/models/rsform'; import { useDialogsStore } from '@/stores/dialogs'; import TabConstituents from './TabConstituents'; import TabSchema from './TabSchema'; import TabSubstitutions from './TabSubstitutions'; export interface DlgInlineSynthesisProps { receiver: IRSForm; onInlineSynthesis: (data: IInlineSynthesisDTO) => void; } export enum TabID { SCHEMA = 0, SELECTIONS = 1, SUBSTITUTIONS = 2 } function DlgInlineSynthesis() { const { receiver, onInlineSynthesis } = useDialogsStore(state => state.props as DlgInlineSynthesisProps); const [activeTab, setActiveTab] = useState(TabID.SCHEMA); const [donorID, setDonorID] = useState(undefined); const [selected, setSelected] = useState([]); const [substitutions, setSubstitutions] = useState([]); const source = useRSForm({ itemID: donorID }); const validated = !!source.schema && selected.length > 0; function handleSubmit() { if (!source.schema) { return; } onInlineSynthesis({ source: source.schema.id, receiver: receiver.id, items: selected, substitutions: substitutions }); } useEffect(() => { setSelected(source.schema ? source.schema.items.map(cst => cst.id) : []); setSubstitutions([]); }, [source.schema]); return ( ); } export default DlgInlineSynthesis;