UNPKG

@mui/x-data-grid-premium

Version:

The Premium plan edition of the MUI X Data Grid Components.

61 lines (60 loc) 2.05 kB
"use strict"; 'use client'; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.useResize = void 0; var React = _interopRequireWildcard(require("react")); const useResize = options => { const resizeHandleRef = React.useRef(null); const optionsRef = React.useRef(options); React.useEffect(() => { optionsRef.current = options; }, [options]); React.useEffect(() => { const handle = resizeHandleRef.current; if (!handle) { return undefined; } const { onSizeChange, getInitialSize, direction = 'horizontal' } = optionsRef.current; let startPosition = null; let startSize = null; const handlePointerMove = event => { event.preventDefault(); if (startPosition === null || startSize === null) { return; } const delta = direction === 'horizontal' ? startPosition - event.clientX : startPosition - event.clientY; const newSize = startSize + delta; onSizeChange(newSize, handle); }; const handlePointerUp = event => { startPosition = null; startSize = null; handle.removeEventListener('pointermove', handlePointerMove); handle.releasePointerCapture(event.pointerId); }; const handlePointerDown = event => { startPosition = direction === 'horizontal' ? event.clientX : event.clientY; startSize = getInitialSize(handle); handle.addEventListener('pointermove', handlePointerMove); handle.setPointerCapture(event.pointerId); }; handle.addEventListener('pointerdown', handlePointerDown); handle.addEventListener('pointerup', handlePointerUp); return () => { handle.removeEventListener('pointerdown', handlePointerDown); handle.removeEventListener('pointerup', handlePointerUp); handle.removeEventListener('pointermove', handlePointerMove); }; }, []); return { ref: resizeHandleRef }; }; exports.useResize = useResize;