11'use client'
22
33import { useCallback , useEffect , useMemo , useRef , useState } from 'react'
4- import { BookOpen , Check , ChevronUp , Pencil } from 'lucide-react'
4+ import { BookOpen , Check , ChevronDown , ChevronUp , Pencil } from 'lucide-react'
55import { Button , Tooltip } from '@/components/emcn'
66import {
77 buildCanonicalIndex ,
88 hasAdvancedValues ,
9+ hasStandaloneAdvancedFields ,
910 isCanonicalPair ,
1011 resolveCanonicalMode ,
1112} from '@/lib/workflows/subblocks/visibility'
@@ -107,6 +108,11 @@ export function Editor() {
107108 )
108109 const displayAdvancedOptions = advancedMode || advancedValuesPresent
109110
111+ const hasAdvancedOnlyFields = useMemo (
112+ ( ) => hasStandaloneAdvancedFields ( blockConfig ?. subBlocks || [ ] , canonicalIndex ) ,
113+ [ blockConfig ?. subBlocks , canonicalIndex ]
114+ )
115+
110116 // Get subblock layout using custom hook
111117 const { subBlocks, stateToUse : subBlockState } = useEditorSubblockLayout (
112118 blockConfig || ( { } as any ) ,
@@ -127,8 +133,17 @@ export function Editor() {
127133 } )
128134
129135 // Collaborative actions
130- const { collaborativeSetBlockCanonicalMode, collaborativeUpdateBlockName } =
131- useCollaborativeWorkflow ( )
136+ const {
137+ collaborativeSetBlockCanonicalMode,
138+ collaborativeUpdateBlockName,
139+ collaborativeToggleBlockAdvancedMode,
140+ } = useCollaborativeWorkflow ( )
141+
142+ // Advanced mode toggle handler
143+ const handleToggleAdvancedMode = useCallback ( ( ) => {
144+ if ( ! currentBlockId || ! userPermissions . canEdit ) return
145+ collaborativeToggleBlockAdvancedMode ( currentBlockId )
146+ } , [ currentBlockId , userPermissions . canEdit , collaborativeToggleBlockAdvancedMode ] )
132147
133148 // Rename state
134149 const [ isRenaming , setIsRenaming ] = useState ( false )
@@ -403,6 +418,30 @@ export function Editor() {
403418 } ) }
404419 </ div >
405420 ) }
421+
422+ { /* Advanced Mode Toggle - Only show when block has standalone advanced-only fields */ }
423+ { hasAdvancedOnlyFields && userPermissions . canEdit && (
424+ < div className = 'flex items-center justify-center pt-[8px] pb-[4px]' >
425+ < Button
426+ variant = 'ghost'
427+ size = 'sm'
428+ onClick = { handleToggleAdvancedMode }
429+ className = 'h-[28px] gap-[6px] px-[10px] text-[12px] text-[var(--text-secondary)] hover:text-[var(--text-primary)]'
430+ >
431+ { displayAdvancedOptions ? (
432+ < >
433+ < ChevronUp className = 'h-[14px] w-[14px]' />
434+ Hide advanced fields
435+ </ >
436+ ) : (
437+ < >
438+ < ChevronDown className = 'h-[14px] w-[14px]' />
439+ Show advanced fields
440+ </ >
441+ ) }
442+ </ Button >
443+ </ div >
444+ ) }
406445 </ div >
407446 </ div >
408447
0 commit comments