| const [clientY, setClientY] = useState(0) | const [clientY, setClientY] = useState(0) | ||||
| const [isResizing, setIsResizing] = useState(false) | const [isResizing, setIsResizing] = useState(false) | ||||
| const [prevUserSelectStyle, setPrevUserSelectStyle] = useState(getComputedStyle(document.body).userSelect) | const [prevUserSelectStyle, setPrevUserSelectStyle] = useState(getComputedStyle(document.body).userSelect) | ||||
| const [oldHeight, setOldHeight] = useState(height) | |||||
| const handleStartResize = useCallback((e: React.MouseEvent<HTMLElement>) => { | const handleStartResize = useCallback((e: React.MouseEvent<HTMLElement>) => { | ||||
| setClientY(e.clientY) | setClientY(e.clientY) | ||||
| setIsResizing(true) | setIsResizing(true) | ||||
| setOldHeight(height) | |||||
| setPrevUserSelectStyle(getComputedStyle(document.body).userSelect) | setPrevUserSelectStyle(getComputedStyle(document.body).userSelect) | ||||
| document.body.style.userSelect = 'none' | document.body.style.userSelect = 'none' | ||||
| }, []) | |||||
| }, [height]) | |||||
| const handleStopResize = useCallback(() => { | const handleStopResize = useCallback(() => { | ||||
| setIsResizing(false) | setIsResizing(false) | ||||
| return | return | ||||
| const offset = e.clientY - clientY | const offset = e.clientY - clientY | ||||
| let newHeight = height + offset | |||||
| setClientY(e.clientY) | |||||
| let newHeight = oldHeight + offset | |||||
| if (newHeight < minHeight) | if (newHeight < minHeight) | ||||
| newHeight = minHeight | newHeight = minHeight | ||||
| onHeightChange(newHeight) | onHeightChange(newHeight) |