-
-
Save Nantris/7cfda5064273f0c9b9765ce48ab00bb3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const originalMouseX = resizeType === ResizeType.Left ? e.pageX + space.adjustedSize : e.pageX - space.adjustedSize; | |
const originalMouseY = resizeType === ResizeType.Top ? e.pageY + space.adjustedSize : e.pageY - space.adjustedSize; | |
const minimumAdjust = (props.minimumSize === undefined ? 20 : props.minimumSize) - size + space.adjustedSize; | |
const maximumAdjust = props.maximumSize ? (props.maximumSize - size + space.adjustedSize) : undefined; | |
let lastX = 0; | |
let lastY = 0; | |
let moved = false; | |
const mouseResize = (x, y, startX = originalMouseX, startY = originalMouseY) => onResize(startX, startY, x, y, minimumAdjust, maximumAdjust); | |
const throttledMouseResize = throttle<typeof mouseResize>(mouseResize, RESIZE_THROTTLE); | |
const withPreventDefault = (e: MouseEvent) => { | |
moved = true; | |
lastX = e.pageX; | |
lastY = e.pageY; | |
e.preventDefault(); | |
e.stopImmediatePropagation(); | |
throttledMouseResize(lastX, lastY); | |
}; | |
const removeListener = () => { | |
if (moved) { | |
// Not sure about the right math here, but need to get the final bounds to pass correct values to onResize | |
// const currentRect = divElementRef.current.getBoundingClientRect(); | |
// const startX = ? | |
// const startY = ? | |
mouseResize(lastX, lastY, startX, startY); | |
} | |
window.removeEventListener('mousemove', withPreventDefault); | |
window.removeEventListener('mouseup', removeListener); | |
onResizeEnd(currentRect); // Pass rect (or more relevant value(s)) and skip running getBoundingClientRect() there | |
}; | |
window.addEventListener('mousemove', withPreventDefault); | |
window.addEventListener('mouseup', removeListener); | |
e.preventDefault(); | |
e.stopPropagation(); | |
props.onResizeStart && props.onResizeStart(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment