import { chakra } from '@chakra-ui/system' import { useTypebot } from 'contexts/TypebotContext/TypebotContext' import { ChoiceItem, ConditionStep } from 'models' import React, { useMemo } from 'react' import { isConditionStep, isDefined, isSingleChoiceInput } from 'utils' import { DrawingEdge } from './DrawingEdge' import { Edge, EdgeType } from './Edge' export const Edges = () => { const { typebot } = useTypebot() const stepIdsWithTarget: string[] = useMemo(() => { if (!typebot) return [] return typebot.steps.allIds.filter((stepId) => isDefined(typebot.steps.byId[stepId].target) ) }, [typebot]) const singleChoiceItemsWithTarget: ChoiceItem[] = useMemo(() => { if (!typebot) return [] return typebot.choiceItems.allIds .filter( (itemId) => isDefined(typebot.choiceItems.byId[itemId].target) && isSingleChoiceInput( typebot.steps.byId[typebot.choiceItems.byId[itemId].stepId] ) ) .map((itemId) => typebot.choiceItems.byId[itemId]) }, [typebot]) const conditionStepIdsWithTarget = useMemo( () => typebot?.steps.allIds.filter((stepId) => { const step = typebot.steps.byId[stepId] return isConditionStep(step) && (step.trueTarget || step.falseTarget) }), [typebot?.steps.allIds, typebot?.steps.byId] ) return ( {stepIdsWithTarget.map((stepId) => ( ))} {singleChoiceItemsWithTarget.map((item) => ( ))} {conditionStepIdsWithTarget?.map((stepId) => ( ))} ) } const ConditionStepEdges = ({ stepId }: { stepId: string }) => { const { typebot } = useTypebot() const step = typebot?.steps.byId[stepId] as ConditionStep return ( <> {step.trueTarget && ( )} {step.falseTarget && ( )} ) }