/* ┌──────────────────────────────────────────────────────────────────────────────┐ │ @author: Davidson Gomes │ │ @author: Victor Calazans - Implementation of Delay node functionality │ │ @file: /app/agents/workflows/nodes/components/delay/DelayNode.tsx │ │ Developed by: Davidson Gomes │ │ Delay node developed by: Victor Calazans │ │ Creation date: May 13, 2025 │ │ Delay node implementation date: May 17, 2025 │ │ Contact: contato@evolution-api.com │ ├──────────────────────────────────────────────────────────────────────────────┤ │ @copyright © Evolution API 2025. All rights reserved. │ │ Licensed under the Apache License, Version 2.0 │ │ │ │ You may not use this file except in compliance with the License. │ │ You may obtain a copy of the License at │ │ │ │ http://www.apache.org/licenses/LICENSE-2.0 │ │ │ │ Unless required by applicable law or agreed to in writing, software │ │ distributed under the License is distributed on an "AS IS" BASIS, │ │ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. │ │ See the License for the specific language governing permissions and │ │ limitations under the License. │ ├──────────────────────────────────────────────────────────────────────────────┤ │ @important │ │ For any future changes to the code in this file, it is recommended to │ │ include, together with the modification, the information of the developer │ │ who changed it and the date of modification. │ └──────────────────────────────────────────────────────────────────────────────┘ */ /* eslint-disable no-unused-vars */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Handle, NodeProps, Position, useEdges } from "@xyflow/react"; import { Clock, ArrowRight, Timer } from "lucide-react"; import { DelayType } from "../../nodeFunctions"; import { Badge } from "@/components/ui/badge"; import { cn } from "@/lib/utils"; import { BaseNode } from "../../BaseNode"; export function DelayNode(props: NodeProps) { const { selected, data } = props; const edges = useEdges(); const isExecuting = data.isExecuting as boolean | undefined; const isHandleConnected = (handleId: string) => { return edges.some( (edge) => edge.source === props.id && edge.sourceHandle === handleId ); }; const isBottomHandleConnected = isHandleConnected("bottom-handle"); const delay = data.delay as DelayType | undefined; const getUnitLabel = (unit: string) => { switch (unit) { case 'seconds': return 'Seconds'; case 'minutes': return 'Minutes'; case 'hours': return 'Hours'; case 'days': return 'Days'; default: return unit; } }; return (

{data.label as string}

{delay ? (
Delay
{getUnitLabel(delay.unit)}
{delay.value} {delay.unit}
{delay.description && (

{delay.description.slice(0, 80)} {delay.description.length > 80 && '...'}

)}
) : (

No delay configured

Click to configure

)}
Next step
); }