UNPKG

angular-gridster2

Version:
123 lines (122 loc) 4.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var scrollSensitivity; var scrollSpeed; var intervalDuration = 50; var gridsterElement; var resizeEvent; var resizeEventType; var intervalE; var intervalW; var intervalN; var intervalS; function scroll(gridsterItem, e, lastMouse, calculateItemPosition, resize, resizeEventScrollType) { scrollSensitivity = gridsterItem.gridster.$options.scrollSensitivity; scrollSpeed = gridsterItem.gridster.$options.scrollSpeed; gridsterElement = gridsterItem.gridster.el; resizeEvent = resize; resizeEventType = resizeEventScrollType; var offsetWidth = gridsterElement.offsetWidth; var offsetHeight = gridsterElement.offsetHeight; var offsetLeft = gridsterElement.scrollLeft; var offsetTop = gridsterElement.scrollTop; var elemTopOffset = gridsterItem.el.offsetTop - offsetTop; var elemBottomOffset = offsetHeight + offsetTop - gridsterItem.el.offsetTop - gridsterItem.el.offsetHeight; if (lastMouse.clientY < e.clientY && elemBottomOffset < scrollSensitivity) { cancelN(); if ((resizeEvent && resizeEventType && !resizeEventType.s) || intervalS) { return; } intervalS = startVertical(1, calculateItemPosition, lastMouse); } else if (lastMouse.clientY > e.clientY && offsetTop > 0 && elemTopOffset < scrollSensitivity) { cancelS(); if ((resizeEvent && resizeEventType && !resizeEventType.n) || intervalN) { return; } intervalN = startVertical(-1, calculateItemPosition, lastMouse); } else if (lastMouse.clientY !== e.clientY) { cancelVertical(); } var elemRightOffset = offsetLeft + offsetWidth - gridsterItem.el.offsetLeft - gridsterItem.el.offsetWidth; var elemLeftOffset = gridsterItem.el.offsetLeft - offsetLeft; if (lastMouse.clientX < e.clientX && elemRightOffset <= scrollSensitivity) { cancelW(); if ((resizeEvent && resizeEventType && !resizeEventType.e) || intervalE) { return; } intervalE = startHorizontal(1, calculateItemPosition, lastMouse); } else if (lastMouse.clientX > e.clientX && offsetLeft > 0 && elemLeftOffset < scrollSensitivity) { cancelE(); if ((resizeEvent && resizeEventType && !resizeEventType.w) || intervalW) { return; } intervalW = startHorizontal(-1, calculateItemPosition, lastMouse); } else if (lastMouse.clientX !== e.clientX) { cancelHorizontal(); } } exports.scroll = scroll; function startVertical(sign, calculateItemPosition, lastMouse) { var clientY = lastMouse.clientY; return setInterval(function () { if (!gridsterElement || sign === -1 && gridsterElement.scrollTop - scrollSpeed < 0) { cancelVertical(); } gridsterElement.scrollTop += sign * scrollSpeed; clientY += sign * scrollSpeed; calculateItemPosition({ clientX: lastMouse.clientX, clientY: clientY }); }.bind(this), intervalDuration); } function startHorizontal(sign, calculateItemPosition, lastMouse) { var clientX = lastMouse.clientX; return setInterval(function () { if (!gridsterElement || sign === -1 && gridsterElement.scrollLeft - scrollSpeed < 0) { cancelHorizontal(); } gridsterElement.scrollLeft += sign * scrollSpeed; clientX += sign * scrollSpeed; calculateItemPosition({ clientX: clientX, clientY: lastMouse.clientY }); }.bind(this), intervalDuration); } function cancelScroll() { cancelHorizontal(); cancelVertical(); gridsterElement = undefined; } exports.cancelScroll = cancelScroll; function cancelHorizontal() { cancelE(); cancelW(); } function cancelVertical() { cancelN(); cancelS(); } function cancelE() { if (intervalE) { clearInterval(intervalE); intervalE = 0; } } function cancelW() { if (intervalW) { clearInterval(intervalW); intervalW = 0; } } function cancelS() { if (intervalS) { clearInterval(intervalS); intervalS = 0; } } function cancelN() { if (intervalN) { clearInterval(intervalN); intervalN = 0; } }