diff --git a/js/UEBlueprintDrag.js b/js/UEBlueprintDrag.js index 64366c7..0cbcac4 100644 --- a/js/UEBlueprintDrag.js +++ b/js/UEBlueprintDrag.js @@ -2,7 +2,7 @@ export default class UEBlueprintDrag { constructor(draggedNode, options) { this.blueprintNode = draggedNode; this.mousePosition = [0, 0]; - this.stepSize = 1 + this.stepSize = options?.stepSize this.clickButton = options?.clickButton ?? 0 this.exitGrabSameButtonOnly = options?.exitGrabSameButtonOnly ?? false let self = this; @@ -59,9 +59,11 @@ export default class UEBlueprintDrag { } clicked(x, y) { + if (!this.stepSize) { + this.stepSize = parseInt(getComputedStyle(this.blueprintNode.getDOMElement()).getPropertyValue('--ueb-grid-snap')) + } // Get the current mouse position this.mousePosition = this.snapToGrid(x, y) - this.stepSize = parseInt(getComputedStyle(this.blueprintNode.getDOMElement()).getPropertyValue('--ueb-grid-snap')) // Attach the listeners to `document` document.addEventListener('mousemove', this.mouseMoveHandler) document.addEventListener('mouseup', this.mouseUpHandler) diff --git a/js/UEBlueprintDragScroll.js b/js/UEBlueprintDragScroll.js index 5db1526..692d64c 100644 --- a/js/UEBlueprintDragScroll.js +++ b/js/UEBlueprintDragScroll.js @@ -4,38 +4,22 @@ export default class UEBlueprintDragScroll extends UEBlueprintDrag { constructor(scrolledEntity, options) { super(scrolledEntity, options) this.scrolledDOMElement = scrolledEntity.getGridDOMElement() - this.expandGridSize = options?.expandGridSize ?? 200 - this.initialExpandGridSize = this.expandGridSize this.minZoom = options?.minZoom ?? -12 let self = this; this.mouseMoveHandler = function (e) { - const scrollMaxX = self.scrolledDOMElement.parentElement.scrollWidth - self.scrolledDOMElement.parentElement.clientWidth - const scrollMaxY = self.scrolledDOMElement.parentElement.scrollHeight - self.scrolledDOMElement.parentElement.clientHeight - let expandX = self.scrolledDOMElement.parentElement.scrollLeft < self.expandGridSize * 0.5 ? -1 : 0 - + self.scrolledDOMElement.parentElement.scrollLeft > scrollMaxX - self.expandGridSize * 0.5 ? 1 : 0 - let expandY = self.scrolledDOMElement.parentElement.scrollTop < self.expandGridSize * 0.5 ? -1 : 0 - + self.scrolledDOMElement.parentElement.scrollTop > scrollMaxY - self.expandGridSize * 0.5 ? 1 : 0 - - if (expandX != 0 || expandY != 0) { - - /* Managining infinite scrolling: when the scrollbar reaches the end, the grid is expanded and the elements inside translated to give the illusion that they stayed in the same position*/ - self.expandAndTranslate(expandX * self.expandGridSize, expandY * self.expandGridSize) - } - let mousePosition = self.snapToGrid(e.clientX, e.clientY) // How far the mouse has been moved const dx = mousePosition[0] - self.mousePosition[0] const dy = mousePosition[1] - self.mousePosition[1] - self.scrolledDOMElement.parentElement.scrollLeft = self.scrolledDOMElement.parentElement.scrollLeft - dx - self.scrolledDOMElement.parentElement.scrollTop = self.scrolledDOMElement.parentElement.scrollTop - dy + self.blueprintNode.scrollDelta([-dx, -dy]) // Reassign the position of mouse self.mousePosition = mousePosition }; this.mouseWheelHandler = function (e) { - let blueprintRoot = self.elem.parentElement.parentElement + let blueprintRoot = self.scrolledDOMElement.parentElement.parentElement let zoomLevel = 0 let zoomLevelClass = "ueb-zoom-0" let classes = blueprintRoot.classList.values() @@ -51,7 +35,7 @@ export default class UEBlueprintDragScroll extends UEBlueprintDrag { zoomLevel = self.clamp(zoomLevel, -12, 0) blueprintRoot.classList.remove(zoomLevelClass) blueprintRoot.classList.add("ueb-zoom-" + zoomLevel) - let scale = blueprintNode.getScale() + let scale = self.blueprintNode.getScale() let additionalX = Math.ceil(self.scrolledDOMElement.clientWidth * (1 - 1 / scale)) let additionalY = Math.ceil(self.scrolledDOMElement.clientHeight * (1 - 1 / scale)) self.blueprintNode.expand(additionalX, additionalY) diff --git a/js/ueblueprint.js b/js/ueblueprint.js index 02c0636..30faff2 100644 --- a/js/ueblueprint.js +++ b/js/ueblueprint.js @@ -5,14 +5,14 @@ export default class UEBlueprint extends UEBlueprintDOMModel { static domTemplate(obj) { return ` -