2025-04-01 13:39:09 +02:00
|
|
|
import { isOptionOn } from "./options";
|
2025-04-01 13:35:33 +02:00
|
|
|
|
|
|
|
export function setupTooltips() {
|
2025-04-01 13:39:09 +02:00
|
|
|
const tooltip = document.getElementById("tooltip") as HTMLDivElement;
|
|
|
|
if (isOptionOn("mobile-mode")) {
|
|
|
|
tooltip.style.display = "none";
|
|
|
|
return;
|
|
|
|
}
|
2025-04-01 13:35:33 +02:00
|
|
|
|
2025-04-02 10:41:35 +02:00
|
|
|
|
2025-04-01 13:39:09 +02:00
|
|
|
function updateTooltipPosition(e: MouseEvent) {
|
|
|
|
tooltip.style.transform =
|
|
|
|
`translate(${e.clientX}px,${e.clientY + 20}px) ` +
|
|
|
|
(e.clientX > window.innerWidth / 2 ? " translate(-100%,0)" : "");
|
|
|
|
}
|
2025-04-01 13:35:33 +02:00
|
|
|
|
2025-04-02 10:41:35 +02:00
|
|
|
function closeToolTip(){
|
|
|
|
tooltip.style.display = "none";
|
|
|
|
hovering=null
|
|
|
|
}
|
|
|
|
let hovering:HTMLElement|null=null
|
2025-04-01 13:39:09 +02:00
|
|
|
document.body.addEventListener(
|
|
|
|
"mouseenter",
|
|
|
|
(e: MouseEvent) => {
|
|
|
|
let parent: HTMLElement | null = e.target as HTMLElement;
|
|
|
|
while (parent && !parent.hasAttribute("data-tooltip")) {
|
|
|
|
parent = parent.parentElement;
|
|
|
|
}
|
|
|
|
if (parent?.hasAttribute("data-tooltip")) {
|
2025-04-02 10:41:35 +02:00
|
|
|
hovering=parent as HTMLElement
|
|
|
|
tooltip.innerHTML = hovering.getAttribute("data-tooltip") || '';
|
2025-04-01 13:39:09 +02:00
|
|
|
tooltip.style.display = "";
|
|
|
|
updateTooltipPosition(e);
|
|
|
|
} else {
|
2025-04-02 10:41:35 +02:00
|
|
|
closeToolTip()
|
2025-04-01 13:39:09 +02:00
|
|
|
}
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
);
|
2025-04-02 10:41:35 +02:00
|
|
|
|
|
|
|
setInterval(()=>{
|
|
|
|
if(hovering){
|
|
|
|
if(!document.body.contains(hovering)){
|
|
|
|
closeToolTip()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},200)
|
2025-04-01 13:39:09 +02:00
|
|
|
document.body.addEventListener(
|
|
|
|
"mousemove",
|
|
|
|
(e) => {
|
|
|
|
if (!tooltip.style.display) {
|
|
|
|
updateTooltipPosition(e);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
);
|
|
|
|
document.body.addEventListener(
|
|
|
|
"mouseleave",
|
|
|
|
(e) => {
|
2025-04-02 10:41:35 +02:00
|
|
|
closeToolTip()
|
|
|
|
}
|
2025-04-01 13:39:09 +02:00
|
|
|
);
|
2025-04-01 13:35:33 +02:00
|
|
|
}
|