mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-03-06 23:57:30 +08:00
More scrolling cleanup
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user