MCPcopy Create free account
hub / github.com/ZenNotes/zennotes / usePanelResize

Function usePanelResize

packages/app-core/src/lib/use-panel-resize.ts:9–38  ·  view source on GitHub ↗
(
  width: number,
  setWidth: (px: number) => void
)

Source from the content-addressed store, hash-verified

7 * pane. Width clamping is handled by the store setter.
8 */
9export function usePanelResize(
10 width: number,
11 setWidth: (px: number) => void
12): { resizing: boolean; startResize: (e: ReactMouseEvent<HTMLElement>) => void } {
13 const [resizing, setResizing] = useState(false)
14 const startResize = useCallback(
15 (e: ReactMouseEvent<HTMLElement>) => {
16 e.preventDefault()
17 const startX = e.clientX
18 const startWidth = width
19 setResizing(true)
20 const onMove = (ev: MouseEvent): void => {
21 setWidth(startWidth + (startX - ev.clientX))
22 }
23 const onUp = (): void => {
24 setResizing(false)
25 window.removeEventListener('mousemove', onMove)
26 window.removeEventListener('mouseup', onUp)
27 document.body.style.cursor = ''
28 document.body.style.userSelect = ''
29 }
30 window.addEventListener('mousemove', onMove)
31 window.addEventListener('mouseup', onUp)
32 document.body.style.cursor = 'col-resize'
33 document.body.style.userSelect = 'none'
34 },
35 [width, setWidth]
36 )
37 return { resizing, startResize }
38}

Callers 4

CalendarPanelFunction · 0.90
ConnectionsPanelFunction · 0.90
CommentsPanelFunction · 0.90
OutlinePanelFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected