import React, { memo } from 'react'; import { Handle, Position, NodeProps } from 'reactflow'; import { Layers, Box, Activity, Zap, ArrowRight, Grid, Minimize, Database, GitBranch, Type, Combine, Maximize, ArrowUpCircle, Sliders, RefreshCcw, Brain, Crosshair, Network, Clock, Eye, Workflow, Terminal, MinusCircle, Scaling, BoxSelect, Wifi, Mic, Speaker, Radio, Cuboid, Target, Scan, AudioLines, FileAudio, Hexagon, Component, ScanText, Mountain, Move, Radar, Map, Orbit, Wind, Film, Video, FastForward, Timer, Clapperboard, Merge, Share2, Atom, Dna, Gamepad2, Sparkles, FlipVertical, RefreshCw, Scissors, Hash, Sigma, Calculator, BarChart3, Binary, X, Circle } from 'lucide-react'; import { NodeData, LayerType } from '../types'; const getIcon = (type: LayerType) => { switch (type) { case LayerType.INPUT: return ; case LayerType.OUTPUT: return ; case LayerType.CONV1D: return ; case LayerType.CONV2D: return ; case LayerType.CONV3D: return ; case LayerType.CONV_TRANSPOSE2D: return ; case LayerType.DEFORMABLE_CONV: return ; case LayerType.SEPARABLE_CONV2D: return ; case LayerType.DEPTHWISE_CONV2D: return ; case LayerType.LINEAR: return ; case LayerType.SIGMOID: return ; case LayerType.RELU: case LayerType.LEAKYRELU: case LayerType.PRELU: case LayerType.GELU: case LayerType.SILU: case LayerType.SWIGLU: case LayerType.TANH: case LayerType.SOFTPLUS: case LayerType.SOFTSIGN: return ; case LayerType.MAXPOOL: case LayerType.MAXPOOL3D: case LayerType.AVGPOOL: case LayerType.ADAPTIVEAVGPOOL: return ; case LayerType.GLOBAL_AVG_POOL: return ; case LayerType.UPSAMPLE: return ; case LayerType.PIXEL_SHUFFLE: return ; // TF / Preprocessing case LayerType.RESCALING: case LayerType.RESIZING: return ; case LayerType.CENTER_CROP: return ; case LayerType.RANDOM_FLIP: case LayerType.RANDOM_ROTATION: case LayerType.RANDOM_ZOOM: case LayerType.RANDOM_CONTRAST: return ; case LayerType.TEXT_VECTORIZATION: return ; case LayerType.NORMALIZATION_LAYER: return ; case LayerType.DISCRETIZATION: return ; case LayerType.CATEGORY_ENCODING: return ; // Transformer / GenAI case LayerType.ATTENTION: case LayerType.CROSS_ATTENTION: case LayerType.WINDOW_ATTENTION: return ; case LayerType.TRANSFORMER_BLOCK: case LayerType.TRANSFORMER_ENCODER: case LayerType.TRANSFORMER_DECODER: return ; case LayerType.MOE_BLOCK: return ; case LayerType.ACTION_HEAD: return ; case LayerType.SE_BLOCK: return ; case LayerType.PATCH_EMBED: case LayerType.SAM_PROMPT_ENCODER: return ; case LayerType.SAM_MASK_DECODER: return ; case LayerType.TIME_EMBEDDING: case LayerType.ROPE: return ; // Audio case LayerType.MEL_SPECTROGRAM: case LayerType.STFT: return ; case LayerType.SPEC_AUGMENT: return ; case LayerType.CONFORMER_BLOCK: case LayerType.WAVENET_BLOCK: return ; case LayerType.RVC_ENCODER: case LayerType.WAV2VEC2_ENC: return ; case LayerType.VOCODER: return ; case LayerType.AUDIO_EMBEDDING: return ; case LayerType.SINC_CONV: return ; // Detection / YOLO case LayerType.C2F_BLOCK: case LayerType.SPPF_BLOCK: case LayerType.DARKNET_BLOCK: return ; case LayerType.DETECT_HEAD: case LayerType.ANCHOR_BOX: return ; case LayerType.NMS: return ; // 3D case LayerType.NERF_BLOCK: case LayerType.GAUSSIAN_SPLAT: case LayerType.TRIPLANE_ENC: return ; case LayerType.POINTNET_BLOCK: case LayerType.POINT_TRANSFORMER: case LayerType.MESH_CONV: return ; // OCR case LayerType.TPS_TRANSFORM: case LayerType.CRNN_BLOCK: case LayerType.CTC_DECODER: return ; // Robotics / Motion case LayerType.DEPTH_DECODER: case LayerType.DISPARITY_HEAD: return ; case LayerType.OPTICAL_FLOW: case LayerType.VELOCITY_HEAD: return ; case LayerType.KALMAN_FILTER: return ; case LayerType.BEV_TRANSFORM: return ; case LayerType.RADAR_ENCODER: return ; // Video / Generation case LayerType.VIDEO_DIFFUSION_BLOCK: return ; case LayerType.SPATIO_TEMPORAL_ATTN: return ; case LayerType.VIDEO_TOKENIZER: return