@@ -12,6 +12,7 @@ type DesktopLayoutProps = {
1212 topbarLeftNode : ReactNode ;
1313 centerMode : "chat" | "diff" ;
1414 preloadGitDiffs : boolean ;
15+ splitChatDiffView : boolean ;
1516 messagesNode : ReactNode ;
1617 gitDiffViewerNode : ReactNode ;
1718 gitDiffPanelNode : ReactNode ;
@@ -36,6 +37,7 @@ export function DesktopLayout({
3637 topbarLeftNode,
3738 centerMode,
3839 preloadGitDiffs,
40+ splitChatDiffView,
3941 messagesNode,
4042 gitDiffViewerNode,
4143 gitDiffPanelNode,
@@ -50,12 +52,19 @@ export function DesktopLayout({
5052} : DesktopLayoutProps ) {
5153 const diffLayerRef = useRef < HTMLDivElement | null > ( null ) ;
5254 const chatLayerRef = useRef < HTMLDivElement | null > ( null ) ;
53- const shouldRenderDiffViewer = preloadGitDiffs || centerMode === "diff" ;
55+ const shouldRenderDiffViewer =
56+ splitChatDiffView || preloadGitDiffs || centerMode === "diff" ;
5457
5558 useEffect ( ( ) => {
5659 const diffLayer = diffLayerRef . current ;
5760 const chatLayer = chatLayerRef . current ;
5861
62+ if ( splitChatDiffView ) {
63+ diffLayer ?. removeAttribute ( "inert" ) ;
64+ chatLayer ?. removeAttribute ( "inert" ) ;
65+ return ;
66+ }
67+
5968 if ( diffLayer ) {
6069 if ( centerMode === "diff" ) {
6170 diffLayer . removeAttribute ( "inert" ) ;
@@ -81,7 +90,7 @@ export function DesktopLayout({
8190 ) {
8291 activeElement . blur ( ) ;
8392 }
84- } , [ centerMode ] ) ;
93+ } , [ centerMode , splitChatDiffView ] ) ;
8594
8695 return (
8796 < >
@@ -103,21 +112,44 @@ export function DesktopLayout({
103112 < >
104113 < MainTopbar leftNode = { topbarLeftNode } />
105114 { approvalToastsNode }
106- < div className = "content" >
107- < div
108- className = { `content-layer ${ centerMode === "diff" ? "is-active" : "is-hidden" } ` }
109- aria-hidden = { centerMode !== "diff" }
110- ref = { diffLayerRef }
111- >
112- { shouldRenderDiffViewer ? gitDiffViewerNode : null }
113- </ div >
114- < div
115- className = { `content-layer ${ centerMode === "chat" ? "is-active" : "is-hidden" } ` }
116- aria-hidden = { centerMode !== "chat" }
117- ref = { chatLayerRef }
118- >
119- { messagesNode }
120- </ div >
115+ < div className = { `content${ splitChatDiffView ? " content-split" : "" } ` } >
116+ { splitChatDiffView ? (
117+ < >
118+ < div
119+ className = { `content-layer content-layer-split content-layer-chat${
120+ centerMode === "chat" ? " is-active" : ""
121+ } `}
122+ ref = { chatLayerRef }
123+ >
124+ { messagesNode }
125+ </ div >
126+ < div
127+ className = { `content-layer content-layer-split content-layer-diff${
128+ centerMode === "diff" ? " is-active" : ""
129+ } `}
130+ ref = { diffLayerRef }
131+ >
132+ { shouldRenderDiffViewer ? gitDiffViewerNode : null }
133+ </ div >
134+ </ >
135+ ) : (
136+ < >
137+ < div
138+ className = { `content-layer ${ centerMode === "diff" ? "is-active" : "is-hidden" } ` }
139+ aria-hidden = { centerMode !== "diff" }
140+ ref = { diffLayerRef }
141+ >
142+ { shouldRenderDiffViewer ? gitDiffViewerNode : null }
143+ </ div >
144+ < div
145+ className = { `content-layer ${ centerMode === "chat" ? "is-active" : "is-hidden" } ` }
146+ aria-hidden = { centerMode !== "chat" }
147+ ref = { chatLayerRef }
148+ >
149+ { messagesNode }
150+ </ div >
151+ </ >
152+ ) }
121153 </ div >
122154
123155 < div
0 commit comments