mirror of
https://github.com/zen-browser/components.git
synced 2025-07-08 16:49:58 +02:00
Refactor ZenCompactMode._getCrossedEdge
This commit is contained in:
parent
10a9fe513f
commit
481725c67d
1 changed files with 9 additions and 5 deletions
|
@ -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) => {
|
||||||
|
const distance = Math.abs((i < 2 ? posY : posX) - targetBox[edge]);
|
||||||
return distance <= maxDistance;
|
return distance <= maxDistance;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_positionInBounds(axis = "x", element, x, y, error = 0) {
|
_positionInBounds(axis = "x", element, x, y, error = 0) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue