MCPcopy Index your code
hub / github.com/CodebuffAI/codebuff / useTerminalDimensions

Function useTerminalDimensions

cli/src/hooks/use-terminal-dimensions.ts:4–45  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2import { useMemo } from 'react'
3
4export const useTerminalDimensions = () => {
5 const renderer = useRenderer()
6 const { width: measuredWidth } = useOpenTuiDimensions()
7
8 const sanitizeDimension = (
9 value: number | null | undefined,
10 ): number | null => {
11 if (typeof value !== 'number') return null
12 if (!Number.isFinite(value) || value <= 0) return null
13 return value
14 }
15
16 const resolvedTerminalWidth = useMemo(
17 () =>
18 sanitizeDimension(measuredWidth) ?? sanitizeDimension(renderer?.width) ?? 80,
19 [measuredWidth, renderer?.width],
20 )
21
22 const resolvedTerminalHeight = useMemo(
23 () => sanitizeDimension(renderer?.height) ?? 24,
24 [renderer?.height],
25 )
26
27 const terminalWidth = resolvedTerminalWidth
28 const terminalHeight = resolvedTerminalHeight
29 const separatorWidth = useMemo(
30 () => Math.max(1, Math.floor(terminalWidth) - 2),
31 [terminalWidth],
32 )
33
34 const contentMaxWidth = useMemo(
35 () => Math.max(10, Math.min(terminalWidth - 4, 80)),
36 [terminalWidth],
37 )
38
39 return {
40 terminalWidth,
41 terminalHeight,
42 separatorWidth,
43 contentMaxWidth,
44 }
45}

Callers 12

AppFunction · 0.90
TerminalCommandDisplayFunction · 0.90
FreebuffModelSelectorFunction · 0.90
ChoiceAdBannerFunction · 0.90
thinking.tsxFile · 0.90
FreebuffSupersededScreenFunction · 0.90
WaitingRoomScreenFunction · 0.90
LimitedLandingPanelFunction · 0.90
SuggestionMenuFunction · 0.90
FollowupLineFunction · 0.90
useChatUIFunction · 0.90
useTerminalLayoutFunction · 0.90

Calls 1

sanitizeDimensionFunction · 0.85

Tested by

no test coverage detected