Refactor ZenCompactMode._getCrossedEdge

This commit is contained in:
brahim 2024-09-22 13:11:14 +02:00
parent 10a9fe513f
commit 481725c67d

View file

@ -134,11 +134,13 @@ var gZenCompactModeManager = {
} }
document.documentElement.addEventListener('mouseleave', (event) => { document.documentElement.addEventListener('mouseleave', (event) => {
const screenEdgeCrossed = this._getCrossedEdge(event.pageX, event.pageY);
if (!screenEdgeCrossed) return;
for (let entry of this.hoverableElements) { for (let entry of this.hoverableElements) {
if (!entry.screenEdge) continue; if (screenEdgeCrossed !== entry.screenEdge) continue;
const target = entry.element; const target = entry.element;
const boundAxis = (entry.screenEdge === "right" || entry.screenEdge === "left" ? "y" : "x"); const boundAxis = (entry.screenEdge === "right" || entry.screenEdge === "left" ? "y" : "x");
if (!this._crossedEdge(entry.screenEdge, event.pageX, event.pageY) || !this._positionInBounds(boundAxis, target, event.pageX, event.pageY, 7)) { if (!this._positionInBounds(boundAxis, target, event.pageX, event.pageY, 7)) {
continue; continue;
} }
this.flashElement(target, this.hideAfterHoverDuration, "has-hover" + target.id, 'zen-has-hover'); this.flashElement(target, this.hideAfterHoverDuration, "has-hover" + target.id, 'zen-has-hover');
@ -151,12 +153,14 @@ var gZenCompactModeManager = {
}); });
}, },
_crossedEdge(edge, posX, posY, element = document.documentElement, maxDistance = 10) { _getCrossedEdge(posX, posY, element = document.documentElement, maxDistance = 10) {
posX = Math.max(0, posX); posX = Math.max(0, posX);
posY = Math.max(0, posY); posY = Math.max(0, posY);
const targetBox = element.getBoundingClientRect(); const targetBox = element.getBoundingClientRect();
const distance = Math.abs( ((edge === "right" || edge === "left") ? posX : posY) - targetBox[edge]); return ["top", "bottom", "left", "right"].find((edge, i) => {
return distance <= maxDistance; const distance = Math.abs((i < 2 ? posY : posX) - targetBox[edge]);
return distance <= maxDistance;
});
}, },
_positionInBounds(axis = "x", element, x, y, error = 0) { _positionInBounds(axis = "x", element, x, y, error = 0) {