File size: 1,300 Bytes
d553048
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { isPassive } from '../types';

/**
 * Does the staged pane carry its own way back, in its header?
 *
 * On a phone the app is two full-screen views — the list, or one staged pane —
 * so a staged pane needs a way back to the list. It used to be a bar above the
 * pane holding an arrow and the session's name, and that bar cost a row of the
 * one dimension a terminal actually needs. An agent's pane header already has
 * an identity block (logo and status) on its left and already shows the name,
 * so the arrow goes there and the bar goes away.
 *
 * The bar survives wherever nothing else can hold the arrow:
 *  - a group, whose bar is also the chip pager between its agents;
 *  - the Overview, which has no pane header at all;
 *  - the files and trace panes, whose flat headers have no identity block —
 *    and whose leftmost spot is, for files, already a back button to the file
 *    list, so a second arrow there would be two backs meaning two things.
 *
 * Desktop never stages and never asks: the sidebar is always on screen.
 */
export const paneOwnsBack = (
  { isMobile, staged, inGroup, cli }: {
    isMobile: boolean;
    staged: boolean;
    inGroup: boolean;
    cli?: string | null;
  },
): boolean => isMobile && staged && !inGroup && !!cli && !isPassive(cli);