@ -1,15 +1,37 @@
import { useState , useCallback } from "react" ;
import { useSyncEx tern alS tor e , useCallback } from "react" ;
const INLINE_PARAMS_KEY = "node-banana-inline-parameters" ;
const INLINE_PARAMS_KEY = "node-banana-inline-parameters" ;
// Subscribers for reactive updates
const subscribers = new Set < ( ) = > void > ( ) ;
// Get current value from localStorage
function getSnapshot ( ) : boolean {
try {
return localStorage . getItem ( INLINE_PARAMS_KEY ) === "true" ;
} catch {
return false ;
}
}
// Server-side snapshot (always false)
function getServerSnapshot ( ) : boolean {
return false ;
}
// Subscribe to changes
function subscribe ( callback : ( ) = > void ) : ( ) = > void {
subscribers . add ( callback ) ;
return ( ) = > subscribers . delete ( callback ) ;
}
// Notify all subscribers of changes
function notifySubscribers() {
subscribers . forEach ( ( callback ) = > callback ( ) ) ;
}
export function useInlineParameters() {
export function useInlineParameters() {
const [ enabled , setEnabled ] = useState ( ( ) = > {
const enabled = useSyncExternalStore ( subscribe , getSnapshot , getServerSnapshot ) ;
try {
return localStorage . getItem ( INLINE_PARAMS_KEY ) === "true" ;
} catch {
return false ;
}
} ) ;
const setInlineParameters = useCallback ( ( value : boolean ) = > {
const setInlineParameters = useCallback ( ( value : boolean ) = > {
try {
try {
@ -17,7 +39,7 @@ export function useInlineParameters() {
} catch {
} catch {
// localStorage not available
// localStorage not available
}
}
setEnabled ( value ) ;
notifySubscribers ( ) ;
} , [ ] ) ;
} , [ ] ) ;
return { inlineParametersEnabled : enabled , setInlineParameters } ;
return { inlineParametersEnabled : enabled , setInlineParameters } ;