@@ -109,6 +109,9 @@ const initDockview = (dockview, options, template) => {
109109 const visiblePanels = groups . filter ( g => g . isVisible ) . map ( g => g . panels . find ( p => p . params . isActive ) || g . panels . find ( p => p . api . isVisible ) )
110110 dockview . _loadTabs ?. fire ( visiblePanels . filter ( p => Boolean ( p ) ) . map ( p => p . params . key ) ) ;
111111 }
112+ if ( options . renderer === 'always' ) {
113+ dockview . _loadTabs ?. fire ( dockview . panels . map ( p => p . params . key ) ) ;
114+ }
112115 const { floatingGroups } = dockview . params
113116 dockview . floatingGroups . forEach ( fg => {
114117 const { top, right, bottom, left } = floatingGroups . find ( g => g . data . id == fg . group . id ) . position
@@ -228,29 +231,37 @@ const setWidth = (target, dockview) => {
228231}
229232
230233const toggleComponent = ( dockview , options ) => {
231- const panels = getPanelsFromOptions ( options ) . filter ( p => p . params . visible )
232- const localPanels = dockview . panels
234+ const optionsPanels = getPanelsFromOptions ( options ) ;
235+ const panels = optionsPanels . filter ( p => p . params . visible ) ;
236+ const localPanels = dockview . panels ;
233237 panels . forEach ( p => {
234238 const pan = findContentFromPanels ( localPanels , p ) ;
235239 if ( pan === void 0 ) {
236- const panel = findContentFromPanels ( dockview . params . panels , p ) ;
237- const groupPanels = panels . filter ( p1 => p1 . params . parentId == p . params . parentId )
238- let indexOfOptions = groupPanels . findIndex ( p => p . params . key == panel ?. params . key )
239- indexOfOptions = indexOfOptions == - 1 ? 0 : indexOfOptions
240- const index = panel && panel . params . index
241- addGroupWithPanel ( dockview , panel || p , panels , index ?? indexOfOptions ) ;
240+ const panel = findContentFromPanels ( dockview . params . panels , p ) || p ;
241+ panel . params = { ...panel . params , ...p . params } ;
242+ const groupPanels = panels . filter ( p1 => p1 . params . parentId == p . params . parentId ) ;
243+ let indexOfOptions = groupPanels . findIndex ( p => p . params . key == panel ?. params . key ) ;
244+ indexOfOptions = indexOfOptions == - 1 ? 0 : indexOfOptions ;
245+ // const index = panel && panel.params.index
246+ addGroupWithPanel ( dockview , panel , panels , indexOfOptions ) ;
247+ }
248+ else {
249+ if ( pan . title !== p . title ) {
250+ pan . setTitle ( p . title )
251+ }
252+ pan . _params = {
253+ ...pan . params ,
254+ ...p . params
255+ }
242256 }
243257 } )
244258 localPanels . forEach ( item => {
245- const title = panels . find ( p => p . params . key == item . params . key ) ?. title ;
246- if ( title && item . title !== title ) {
247- item . setTitle ( title )
248- }
249259 let pan = findContentFromPanels ( panels , item ) ;
250260 if ( pan === void 0 ) {
251- item . group . delPanelIndex = item . group . panels . findIndex ( p => p . params . key == item . params . key )
252- const group = item . group
253- dockview . removePanel ( item , true )
261+ item . group . delPanelIndex = item . group . panels . findIndex ( p => p . params . key == item . params . key ) ;
262+ const group = item . group ;
263+ const noFiring = ! optionsPanels . some ( p => p . params . key == item . params . key || p . id == item . id || p . title == item . title ) ;
264+ dockview . removePanel ( item , noFiring )
254265 if ( group . panels . length === 0 ) {
255266 dockview . setVisible ( group , false )
256267 }
0 commit comments