Created
November 24, 2019 01:24
-
-
Save Nantris/2ec285aeaac5c9cad8131097e86177cd 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