@ -14,6 +14,7 @@ import { evaluateRule } from "@/store/utils/ruleEvaluation";
import { EASING_PRESETS , getPresetBezier , getEasingBezier } from "@/lib/easing-presets" ;
import { EASING_PRESETS , getPresetBezier , getEasingBezier } from "@/lib/easing-presets" ;
import { getAllEasingNames , getEasingFunction } from "@/lib/easing-functions" ;
import { getAllEasingNames , getEasingFunction } from "@/lib/easing-functions" ;
import { getModelPageUrl , getProviderDisplayName } from "@/utils/providerUrls" ;
import { getModelPageUrl , getProviderDisplayName } from "@/utils/providerUrls" ;
import { useInlineParameters } from "@/hooks/useInlineParameters" ;
// List of node types that have configurable parameters
// List of node types that have configurable parameters
const CONFIGURABLE_NODE_TYPES : NodeType [ ] = [
const CONFIGURABLE_NODE_TYPES : NodeType [ ] = [
@ -26,6 +27,15 @@ const CONFIGURABLE_NODE_TYPES: NodeType[] = [
"conditionalSwitch" ,
"conditionalSwitch" ,
] ;
] ;
// Generation node types that can use inline parameters
const GENERATION_NODE_TYPES : NodeType [ ] = [
"nanoBanana" ,
"generateVideo" ,
"generate3d" ,
"generateAudio" ,
"llmGenerate" ,
] ;
// Base 10 aspect ratios (all Gemini image models)
// Base 10 aspect ratios (all Gemini image models)
const BASE_ASPECT_RATIOS : AspectRatio [ ] = [ "1:1" , "2:3" , "3:2" , "3:4" , "4:3" , "4:5" , "5:4" , "9:16" , "16:9" , "21:9" ] ;
const BASE_ASPECT_RATIOS : AspectRatio [ ] = [ "1:1" , "2:3" , "3:2" , "3:4" , "4:3" , "4:5" , "5:4" , "9:16" , "16:9" , "21:9" ] ;
@ -99,6 +109,7 @@ function generateEasingPolyline(
* /
* /
export function ControlPanel() {
export function ControlPanel() {
const nodes = useWorkflowStore ( ( state ) = > state . nodes ) ;
const nodes = useWorkflowStore ( ( state ) = > state . nodes ) ;
const { inlineParametersEnabled } = useInlineParameters ( ) ;
// Get the single selected node
// Get the single selected node
const selectedNode = useMemo ( ( ) = > {
const selectedNode = useMemo ( ( ) = > {
@ -115,6 +126,15 @@ export function ControlPanel() {
return null ;
return null ;
}
}
// Check if this is a generation node
const isGenerationNode = selectedNode &&
GENERATION_NODE_TYPES . includes ( selectedNode . type as NodeType ) ;
// Hide for generation nodes when inline parameters enabled
if ( isGenerationNode && inlineParametersEnabled ) {
return null ;
}
return (
return (
< div className = "fixed top-0 right-6 h-screen z-[90] flex items-center pointer-events-none" >
< div className = "fixed top-0 right-6 h-screen z-[90] flex items-center pointer-events-none" >
< div
< div