1- import type { DevframeClientCommand , DevframeDockEntry , DevframeDockUserEntry , DevframeRpcClientFunctions , DevframeViewIframe } from '@devframes/hub'
1+ import type { DevframeClientCommand , DevframeDockEntry , DevframeDockPanelState , DevframeDockUserEntry , DevframeRpcClientFunctions , DevframeViewIframe } from '@devframes/hub'
22import type { CommandsContext , DevframeClientContext , DevframeRpcClient , DockClientScriptContext , DockEntryState , DockPanelStorage , DockRegistration , DockRendererManifest , DocksContext , DockSessionStorage } from '@devframes/hub/client'
33import type { SharedState } from 'devframe/utils/shared-state'
44import type { WhenContext } from 'devframe/utils/when'
@@ -18,6 +18,26 @@ import { registerMainFrameDockActionHandler, triggerMainFrameDockAction, useIsDo
1818import { executeSetupScript } from './setup-script'
1919
2020const docksContextByRpc = new WeakMap < DevframeRpcClient , DocksContext > ( )
21+
22+ function createDockPanelState (
23+ visible : boolean ,
24+ open : boolean ,
25+ selectedDockId : string | null ,
26+ ) : DevframeDockPanelState {
27+ let state : DevframeDockPanelState [ 'state' ]
28+ if ( ! visible )
29+ state = 'hidden'
30+ else if ( open )
31+ state = 'open'
32+ else
33+ state = 'closed'
34+
35+ const panelState : DevframeDockPanelState = { state }
36+ if ( selectedDockId !== null )
37+ panelState . selectedDockId = selectedDockId
38+ return panelState
39+ }
40+
2141export async function createDocksContext (
2242 clientType : 'embedded' | 'standalone' ,
2343 rpc : DevframeRpcClient ,
@@ -671,10 +691,8 @@ export async function createDocksContext(
671691 ( [ visible , open , currentSelectedDockId ] ) => {
672692 if ( visible === undefined )
673693 return
674- void reportDockPanelState ( rpc , {
675- state : visible ? ( open ? 'open' : 'closed' ) : 'hidden' ,
676- ...( currentSelectedDockId !== null ? { selectedDockId : currentSelectedDockId } : { } ) ,
677- } ) . catch ( ( ) => { } )
694+ const panelState = createDockPanelState ( visible , open , currentSelectedDockId )
695+ void reportDockPanelState ( rpc , panelState ) . catch ( ( ) => { } )
678696 } ,
679697 { immediate : true } ,
680698 )
0 commit comments