From ad3bc07733efcfa67e693deb8e6790431f8d1405 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:18:22 -0300 Subject: [PATCH] fix: remove quick flash with already rendered icons (#7828) * Fix rapid update with already rendered components * Added check to not re-render previously rendered icons * Removed all loaded icons in favor of lazy loaded icons * Fixed Share icon * Updated Lucide * Deleted Eager Icon Imports * Added AWS Inverted to Lazy Icon Imports * Added check if name contains a number to kebab case name * fixed freeze path shortcut * Added remaining icons to lazy icons mapping * Removed unused icon mapping, added eager loading react icons, added replacing "icon" with "" on get lucide name * removed unused import * Update hook to not be used inside function call * Updated package-lock --- src/frontend/package-lock.json | 9 +- src/frontend/package.json | 4 +- .../common/genericIconComponent/index.tsx | 40 +- src/frontend/src/icons/Share/Share.jsx | 2 +- src/frontend/src/icons/eagerIconImports.ts | 230 --------- src/frontend/src/icons/lazyIconImports.ts | 12 + src/frontend/src/icons/lucideIcons.ts | 469 ------------------ .../components/nodeToolbarComponent/index.tsx | 7 +- .../MainPage/utils/get-template-style.ts | 2 +- src/frontend/src/utils/styleUtils.ts | 41 +- 10 files changed, 54 insertions(+), 762 deletions(-) delete mode 100644 src/frontend/src/icons/eagerIconImports.ts delete mode 100644 src/frontend/src/icons/lucideIcons.ts diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index bb1b03b1e..5875988ac 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -52,7 +52,7 @@ "framer-motion": "^11.2.10", "fuse.js": "^7.0.0", "lodash": "^4.17.21", - "lucide-react": "^0.469.0", + "lucide-react": "^0.503.0", "million": "^3.1.11", "moment": "^2.30.1", "moment-timezone": "^0.5.48", @@ -9943,9 +9943,10 @@ } }, "node_modules/lucide-react": { - "version": "0.469.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.469.0.tgz", - "integrity": "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==", + "version": "0.503.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.503.0.tgz", + "integrity": "sha512-HGGkdlPWQ0vTF8jJ5TdIqhQXZi6uh3LnNgfZ8MHiuxFfX3RZeA79r2MW2tHAZKlAVfoNE8esm3p+O6VkIvpj6w==", + "license": "ISC", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } diff --git a/src/frontend/package.json b/src/frontend/package.json index 893c4cbb6..0536beb98 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -47,7 +47,7 @@ "framer-motion": "^11.2.10", "fuse.js": "^7.0.0", "lodash": "^4.17.21", - "lucide-react": "^0.469.0", + "lucide-react": "^0.503.0", "million": "^3.1.11", "moment": "^2.30.1", "moment-timezone": "^0.5.48", @@ -145,4 +145,4 @@ "ua-parser-js": "^1.0.38", "vite": "^5.4.18" } -} \ No newline at end of file +} diff --git a/src/frontend/src/components/common/genericIconComponent/index.tsx b/src/frontend/src/components/common/genericIconComponent/index.tsx index bd9c98b40..82a08fdb3 100644 --- a/src/frontend/src/components/common/genericIconComponent/index.tsx +++ b/src/frontend/src/components/common/genericIconComponent/index.tsx @@ -27,26 +27,32 @@ export const ForwardedIconComponent = memo( useEffect(() => { // Reset states when icon name changes - setIconError(false); - setTargetIcon(null); + if (!TargetIcon) { + setIconError(false); + setTargetIcon(null); - const timer = setTimeout(() => { - setShowFallback(true); - }, 30); + const timer = setTimeout(() => { + setShowFallback(true); + }, 30); - // Load the icon if we have a name - if (name && typeof name === "string") { - getNodeIcon(name) - .then((component) => { - setTargetIcon(component); - }) - .catch((error) => { - console.error(`Error loading icon ${name}:`, error); - setIconError(true); - }); + // Load the icon if we have a name + if (name && typeof name === "string") { + getNodeIcon(name) + .then((component) => { + setTargetIcon(component); + setShowFallback(false); + }) + .catch((error) => { + console.error(`Error loading icon ${name}:`, error); + setIconError(true); + setShowFallback(false); + }); + } else { + setShowFallback(false); + } + + return () => clearTimeout(timer); } - - return () => clearTimeout(timer); }, [name]); const style = { diff --git a/src/frontend/src/icons/Share/Share.jsx b/src/frontend/src/icons/Share/Share.jsx index 612d67a2a..f05bff87d 100644 --- a/src/frontend/src/icons/Share/Share.jsx +++ b/src/frontend/src/icons/Share/Share.jsx @@ -1,5 +1,5 @@ const SvgShare = (props) => ( - + import("@/icons/athena").then((mod) => ({ default: mod.AthenaIcon })), AWS: () => import("@/icons/AWS").then((mod) => ({ default: mod.AWSIcon })), + AWSInverted: () => + import("@/icons/AWSInverted").then((mod) => ({ + default: mod.AWSInvertedIcon, + })), Azure: () => import("@/icons/Azure").then((mod) => ({ default: mod.AzureIcon })), Bing: () => import("@/icons/Bing").then((mod) => ({ default: mod.BingIcon })), + BotMessageSquareIcon: () => + import("@/icons/BotMessageSquare").then((mod) => ({ + default: mod.BotMessageSquareIcon, + })), BWPython: () => import("@/icons/BW python").then((mod) => ({ default: mod.BWPythonIcon })), Cassandra: () => @@ -109,6 +117,10 @@ export const lazyIconsMapping = { import("@/icons/GradientSparkles").then((mod) => ({ default: mod.GradientUngroup, })), + GradientSave: () => + import("@/icons/GradientSparkles").then((mod) => ({ + default: mod.GradientSave, + })), GridHorizontal: () => import("@/icons/GridHorizontal").then((mod) => ({ default: mod.GridHorizontalIcon, diff --git a/src/frontend/src/icons/lucideIcons.ts b/src/frontend/src/icons/lucideIcons.ts deleted file mode 100644 index 25231459e..000000000 --- a/src/frontend/src/icons/lucideIcons.ts +++ /dev/null @@ -1,469 +0,0 @@ -import { - AlertCircle, - AlertTriangle, - ArrowBigUp, - ArrowLeft, - ArrowRight, - ArrowRightLeft, - ArrowUpRight, - ArrowUpToLine, - AudioLines, - Bell, - Binary, - Blocks, - BookMarked, - BookOpenText, - BookmarkPlus, - Bot, - BotMessageSquare, - Boxes, - Braces, - BrainCircuit, - ChartNetwork, - Check, - CheckCheck, - CheckCircle2, - ChevronDown, - ChevronLeft, - ChevronRight, - ChevronRightSquare, - ChevronUp, - ChevronsDownUp, - ChevronsLeft, - ChevronsRight, - ChevronsUpDown, - ChevronsUpDownIcon, - Circle, - CircleCheckBig, - CircleDot, - CircleOff, - Clipboard, - CloudDownload, - Code, - Code2, - CodeXml, - Cog, - Columns2, - Combine, - Command, - Compass, - Copy, - CopyPlus, - CornerDownLeft, - Cpu, - Database, - DatabaseZap, - Delete, - DollarSign, - Dot, - Download, - DownloadCloud, - Edit, - Ellipsis, - EllipsisVertical, - Eraser, - ExternalLink, - Eye, - EyeOff, - File, - FileChartColumn, - FileClock, - FileCode2, - FileDown, - FileJson, - FilePen, - FileQuestion, - FileSearch, - FileSearch2, - FileSliders, - FileText, - FileType, - FileType2, - FileUp, - Filter, - FlaskConical, - FolderIcon, - FolderPlus, - FolderPlusIcon, - FolderSync, - FolderUp, - FormInput, - Forward, - Gift, - GitBranchPlus, - GitFork, - GithubIcon, - Globe, - GripVertical, - Group, - Hammer, - Heart, - HelpCircle, - Home, - Image, - Infinity, - Info, - InstagramIcon, - Key, - Keyboard, - Laptop2, - Layers, - LayoutGrid, - LayoutPanelTop, - Link, - Link2, - List, - ListChecks, - ListFilter, - ListOrdered, - ListX, - Loader2, - Lock, - LockOpen, - LogIn, - LogOut, - LucideSend, - Maximize2, - Menu, - MessageCircle, - MessageSquare, - MessageSquareMore, - MessagesSquare, - Mic, - Mic2, - MicOff, - Minimize2, - Minus, - Monitor, - Moon, - MoonIcon, - MoreHorizontal, - Network, - Newspaper, - NotebookPen, - OctagonAlert, - OptionIcon, - Package2, - Palette, - PanelLeftClose, - PanelLeftOpen, - PanelRightClose, - PanelRightOpen, - Paperclip, - PaperclipIcon, - Pen, - Pencil, - PencilLine, - PencilRuler, - PieChart, - Pin, - Plane, - Play, - Plus, - PlusCircle, - PlusSquare, - PocketKnife, - Radio, - Redo, - RefreshCcw, - RefreshCcwDot, - Repeat, - Replace, - RotateCcw, - Save, - SaveAll, - Scan, - ScanEye, - Scissors, - ScreenShare, - Scroll, - ScrollText, - Search, - Settings, - Settings2, - Share, - Share2, - Shield, - Sigma, - Sliders, - SlidersHorizontal, - Snowflake, - Sparkles, - Square, - SquareArrowOutUpRight, - SquareCode, - SquarePen, - SquarePlay, - StickyNote, - Store, - Sun, - SunIcon, - Table, - Tags, - TerminalIcon, - TerminalSquare, - TextCursorInput, - TextSearch, - TextSearchIcon, - ThumbsDown, - ThumbsUp, - ToyBrick, - Trash2, - Type, - Undo, - Ungroup, - UnlinkIcon, - Unplug, - Upload, - User, - UserCog2, - UserMinus2, - UserPlus2, - Users, - Users2, - Variable, - Wand2, - Workflow, - Wrench, - X, - XCircle, - Zap, - ZoomIn, - ZoomOut, -} from "lucide-react"; -import { TwitterXIcon } from "./Twitter X"; - -// Create a map of eagerly loaded Lucide icons -export const lucideIcons = { - AlertCircle, - AlertTriangle, - ArrowBigUp, - ArrowLeft, - ArrowRight, - ArrowRightLeft, - ArrowUpRight, - ArrowUpToLine, - AudioLines, - Bell, - Binary, - Blocks, - BookMarked, - BookOpenText, - BookmarkPlus, - Bot, - BotMessageSquare, - Boxes, - Braces, - BrainCircuit, - ChartNetwork, - Check, - CheckCheck, - CheckCircle2, - ChevronDown, - ChevronLeft, - ChevronRight, - ChevronRightSquare, - ChevronUp, - ChevronsDownUp, - ChevronsLeft, - ChevronsRight, - ChevronsUpDown, - ChevronsUpDownIcon, - Circle, - CircleCheckBig, - CircleDot, - CircleOff, - Clipboard, - CloudDownload, - Code, - Code2, - CodeXml, - Cog, - Columns2, - Combine, - Command, - Compass, - Copy, - CopyPlus, - CornerDownLeft, - Cpu, - Database, - DatabaseZap, - Delete, - DollarSign, - Dot, - Download, - DownloadCloud, - Edit, - Ellipsis, - EllipsisVertical, - Eraser, - ExternalLink, - Eye, - EyeOff, - File, - FileChartColumn, - FileClock, - FileCode2, - FileDown, - FileJson, - FilePen, - FileQuestion, - FileSearch, - FileSearch2, - FileSliders, - FileText, - FileType, - FileType2, - FileUp, - Filter, - FlaskConical, - FolderIcon, - FolderPlus, - FolderPlusIcon, - FolderSync, - FolderUp, - FormInput, - Forward, - Gift, - GitBranchPlus, - GitFork, - GithubIcon, - Globe, - GripVertical, - Group, - Hammer, - Heart, - HelpCircle, - Home, - Image, - Infinity, - Info, - Key, - Keyboard, - Laptop2, - Layers, - LayoutGrid, - LayoutPanelTop, - Link, - Link2, - List, - ListChecks, - ListFilter, - ListOrdered, - ListX, - Loader2, - Lock, - LockOpen, - LogIn, - LogOut, - LucideSend, - Maximize2, - Menu, - MessageCircle, - MessageSquare, - MessageSquareMore, - MessagesSquare, - Mic, - Mic2, - MicOff, - Minimize2, - Minus, - Monitor, - Moon, - MoonIcon, - MoreHorizontal, - Network, - Newspaper, - NotebookPen, - OctagonAlert, - OptionIcon, - Package2, - Palette, - PanelLeftClose, - PanelLeftOpen, - PanelRightClose, - PanelRightOpen, - Paperclip, - PaperclipIcon, - Pen, - Pencil, - PencilLine, - PencilRuler, - PieChart, - Pin, - Plane, - Play, - Plus, - PlusCircle, - PlusSquare, - PocketKnife, - Radio, - Redo, - RefreshCcw, - RefreshCcwDot, - Repeat, - Replace, - RotateCcw, - Save, - SaveAll, - Scan, - ScanEye, - Scissors, - ScreenShare, - Scroll, - ScrollText, - Search, - Settings, - Settings2, - Share, - Share2, - Shield, - Sigma, - Sliders, - SlidersHorizontal, - Snowflake, - Sparkles, - Square, - SquareArrowOutUpRight, - SquareCode, - SquarePen, - SquarePlay, - StickyNote, - Store, - Sun, - SunIcon, - Table, - Tags, - TerminalIcon, - TerminalSquare, - TextCursorInput, - TextSearch, - TextSearchIcon, - ThumbsDown, - ThumbsUp, - ToyBrick, - Trash2, - Type, - Undo, - Ungroup, - UnlinkIcon, - Unplug, - Upload, - User, - UserCog2, - UserMinus2, - UserPlus2, - Users, - Users2, - Variable, - Wand2, - Workflow, - Wrench, - X, - XCircle, - Zap, - ZoomIn, - ZoomOut, - TwitterXIcon, -}; diff --git a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx index 9320da61d..75c92eae4 100644 --- a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx @@ -477,7 +477,7 @@ const NodeToolbarComponent = memo( }); }} shortcut={shortcuts.find((s) => - s.name.toLowerCase().startsWith("freeze path"), + s.name.toLowerCase().startsWith("freeze"), )} className={cn("node-toolbar-buttons", frozen && "text-blue-500")} /> @@ -684,8 +684,9 @@ const NodeToolbarComponent = memo( obj.name === "Freeze") - ?.shortcut! + shortcuts.find((obj) => + obj.name.toLowerCase().startsWith("freeze"), + )?.shortcut! } value={"Freeze"} icon={"FreezeAll"} diff --git a/src/frontend/src/pages/MainPage/utils/get-template-style.ts b/src/frontend/src/pages/MainPage/utils/get-template-style.ts index 104d13bb5..45e7d67c7 100644 --- a/src/frontend/src/pages/MainPage/utils/get-template-style.ts +++ b/src/frontend/src/pages/MainPage/utils/get-template-style.ts @@ -5,6 +5,7 @@ import { iconExists } from "@/utils/styleUtils"; export const useGetTemplateStyle = ( flowData: FlowType, ): { getIcon: () => Promise } => { + const types = useTypesStore((state) => state.types); const getIcon = async () => { if ( flowData.is_component && @@ -13,7 +14,6 @@ export const useGetTemplateStyle = ( const dataType = flowData.data?.nodes[0].data.type; const isGroup = !!flowData.data?.nodes[0].data.node?.flow; const icon = flowData.data?.nodes[0].data.node?.icon; - const types = useTypesStore((state) => state.types); const name = (await iconExists(dataType)) ? dataType : types[dataType]; const iconName = icon || (isGroup ? "group_components" : name); return iconName; diff --git a/src/frontend/src/utils/styleUtils.ts b/src/frontend/src/utils/styleUtils.ts index 37a9388eb..aa5c771ca 100644 --- a/src/frontend/src/utils/styleUtils.ts +++ b/src/frontend/src/utils/styleUtils.ts @@ -1,11 +1,9 @@ -import { ENABLE_DATASTAX_LANGFLOW } from "@/customization/feature-flags"; import { BotMessageSquareIcon } from "@/icons/BotMessageSquare"; import { GradientSave } from "@/icons/GradientSparkles"; import { TwitterLogoIcon } from "@radix-ui/react-icons"; import dynamicIconImports from "lucide-react/dynamicIconImports"; import { lazy } from "react"; import { FaApple, FaDiscord, FaGithub } from "react-icons/fa"; -import { lucideIcons } from "../icons/lucideIcons"; export const BG_NOISE = "url(data:image/png;base64,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)"; @@ -406,27 +404,12 @@ export const nodeIconToDisplayIconMap: Record = { wrappers: "Gift", unknown: "HelpCircle", custom: "Edit", - BotMessageSquareIcon: "BotMessageSquare", - TextSearchIcon: "TextSearch", - ChevronsUpDown: "ChevronsUpDown", - SunIcon: "Sun", - MoonIcon: "Moon", - FolderIcon: "FolderIcon", - GradientSave: "GradientSave", - FolderPlusIcon: "FolderPlus", - PaperclipIcon: "Paperclip", - TerminalIcon: "TerminalIcon", - OptionIcon: "Option", - Option: "OptionIcon", - GlobeOkIcon: "GlobeOk", ThumbDownIconCustom: "ThumbDownCustom", ThumbUpIconCustom: "ThumbUpCustom", ScrapeGraphAI: "ScrapeGraph", ScrapeGraphSmartScraperApi: "ScrapeGraph", ScrapeGraphMarkdownifyApi: "ScrapeGraph", - Unlink: "UnlinkIcon", note: "StickyNote", - TwitterXIcon: "TwitterXIcon", }; export const getLucideIconName = (name: string): string => { @@ -437,40 +420,30 @@ export const getLucideIconName = (name: string): string => { Wand2: "wand-sparkles", }; const kebabCaseName = name + .replace(/Icon/g, "") .replace(/([a-z])([A-Z])/g, "$1-$2") + .replace(/(\d)/g, "-$1") .replace(/\s+/g, "-") .toLowerCase(); return map[name] || kebabCaseName; }; // Initialize icon mappings based on if we want to support lazy loading for cloud -const iconMappingsPromise = ENABLE_DATASTAX_LANGFLOW - ? import("../icons/lazyIconImports").then((module) => module.lazyIconsMapping) - : import("../icons/eagerIconImports").then( - (module) => module.eagerIconsMapping, - ); +const iconMappingsPromise = import("../icons/lazyIconImports").then( + (module) => module.lazyIconsMapping, +); export const eagerLoadedIconsMap = { - // Custom icons - GradientSave: GradientSave, - BotMessageSquareIcon: BotMessageSquareIcon, - "sticky-note": lucideIcons.StickyNote, - // React icons FaApple: FaApple, FaDiscord: FaDiscord, FaGithub: FaGithub, TwitterLogoIcon: TwitterLogoIcon, - - // All Lucide Icons - ...lucideIcons, }; // Function to get a lazy-loaded icon component export const getNodeIcon = async (name: string) => { const iconName = nodeIconToDisplayIconMap[name]; - - // Always check eagerly loaded icons first if (eagerLoadedIconsMap[iconName || name]) { return eagerLoadedIconsMap[iconName || name]; } @@ -478,9 +451,7 @@ export const getNodeIcon = async (name: string) => { const iconMappings = await iconMappingsPromise; if (iconMappings[iconName || name]) { - return ENABLE_DATASTAX_LANGFLOW - ? lazy(iconMappings[iconName || name]) - : iconMappings[iconName || name]; + return lazy(iconMappings[iconName || name]); } const lucideIconName = getLucideIconName(iconName || name);