@ -27,6 +27,7 @@ import {
GroupColor ,
GroupColor ,
ProviderType ,
ProviderType ,
ProviderSettings ,
ProviderSettings ,
SelectedModel ,
} from "@/types" ;
} from "@/types" ;
import { useToast } from "@/components/Toast" ;
import { useToast } from "@/components/Toast" ;
import { calculateGenerationCost } from "@/utils/costCalculator" ;
import { calculateGenerationCost } from "@/utils/costCalculator" ;
@ -181,6 +182,12 @@ const createDefaultNodeData = (type: NodeType): WorkflowNodeData => {
} as PromptNodeData ;
} as PromptNodeData ;
case "nanoBanana" : {
case "nanoBanana" : {
const defaults = loadNanoBananaDefaults ( ) ;
const defaults = loadNanoBananaDefaults ( ) ;
const modelDisplayName = defaults . model === "nano-banana" ? "Nano Banana" : "Nano Banana Pro" ;
const defaultSelectedModel : SelectedModel = {
provider : "gemini" ,
modelId : defaults.model ,
displayName : modelDisplayName ,
} ;
return {
return {
inputImages : [ ] ,
inputImages : [ ] ,
inputPrompt : null ,
inputPrompt : null ,
@ -188,6 +195,7 @@ const createDefaultNodeData = (type: NodeType): WorkflowNodeData => {
aspectRatio : defaults.aspectRatio ,
aspectRatio : defaults.aspectRatio ,
resolution : defaults.resolution ,
resolution : defaults.resolution ,
model : defaults.model ,
model : defaults.model ,
selectedModel : defaultSelectedModel ,
useGoogleSearch : defaults.useGoogleSearch ,
useGoogleSearch : defaults.useGoogleSearch ,
status : "idle" ,
status : "idle" ,
error : null ,
error : null ,
@ -283,21 +291,21 @@ const saveWorkflowCostData = (data: WorkflowCostData): void => {
localStorage . setItem ( COST_DATA_STORAGE_KEY , JSON . stringify ( allCosts ) ) ;
localStorage . setItem ( COST_DATA_STORAGE_KEY , JSON . stringify ( allCosts ) ) ;
} ;
} ;
// localStorage helpers for NanoBanana sticky settings
// localStorage helpers for GenerateImage sticky settings
const NANO_BANANA _DEFAULTS_KEY = "node-banana-nanoBanana-defaults" ;
const GENERATE_IMAGE _DEFAULTS_KEY = "node-banana-nanoBanana-defaults" ;
interface NanoBanana Defaults {
interface GenerateImage Defaults {
aspectRatio : string ;
aspectRatio : string ;
resolution : string ;
resolution : string ;
model : string ;
model : string ;
useGoogleSearch : boolean ;
useGoogleSearch : boolean ;
}
}
const loadNanoBanana Defaults = ( ) : NanoBanana Defaults = > {
const loadGenerateImage Defaults = ( ) : GenerateImage Defaults = > {
if ( typeof window === "undefined" ) {
if ( typeof window === "undefined" ) {
return { aspectRatio : "1:1" , resolution : "1K" , model : "nano-banana-pro" , useGoogleSearch : false } ;
return { aspectRatio : "1:1" , resolution : "1K" , model : "nano-banana-pro" , useGoogleSearch : false } ;
}
}
const stored = localStorage . getItem ( NANO_BANANA _DEFAULTS_KEY) ;
const stored = localStorage . getItem ( GENERATE_IMAGE _DEFAULTS_KEY) ;
if ( stored ) {
if ( stored ) {
try {
try {
return JSON . parse ( stored ) ;
return JSON . parse ( stored ) ;
@ -308,13 +316,18 @@ const loadNanoBananaDefaults = (): NanoBananaDefaults => {
return { aspectRatio : "1:1" , resolution : "1K" , model : "nano-banana-pro" , useGoogleSearch : false } ;
return { aspectRatio : "1:1" , resolution : "1K" , model : "nano-banana-pro" , useGoogleSearch : false } ;
} ;
} ;
export const saveNanoBanana Defaults = ( settings : Partial < NanoBanana Defaults> ) = > {
export const saveGenerateImage Defaults = ( settings : Partial < GenerateImage Defaults> ) = > {
if ( typeof window === "undefined" ) return ;
if ( typeof window === "undefined" ) return ;
const current = loadNanoBanana Defaults ( ) ;
const current = loadGenerateImage Defaults ( ) ;
const updated = { . . . current , . . . settings } ;
const updated = { . . . current , . . . settings } ;
localStorage . setItem ( NANO_BANANA _DEFAULTS_KEY, JSON . stringify ( updated ) ) ;
localStorage . setItem ( GENERATE_IMAGE _DEFAULTS_KEY, JSON . stringify ( updated ) ) ;
} ;
} ;
// Backward-compatible aliases
type NanoBananaDefaults = GenerateImageDefaults ;
const loadNanoBananaDefaults = loadGenerateImageDefaults ;
export const saveNanoBananaDefaults = saveGenerateImageDefaults ;
// localStorage helpers for provider settings
// localStorage helpers for provider settings
const PROVIDER_SETTINGS_KEY = "node-banana-provider-settings" ;
const PROVIDER_SETTINGS_KEY = "node-banana-provider-settings" ;