emo-online-api / emo /frontend /src /lib /browserClickCoords.js
Emo Online
Deploy Emo API
dd87944
Raw
History Blame Contribute Delete
923 Bytes
/** Convertit un clic sur l'image affichée en coordonnées viewport Playwright. */
export function mapImageClickToViewport(img, clientX, clientY, viewportW, viewportH) {
if (!img || !viewportW || !viewportH) return null;
const rect = img.getBoundingClientRect();
const naturalW = img.naturalWidth || viewportW;
const naturalH = img.naturalHeight || viewportH;
const scale = Math.min(rect.width / naturalW, rect.height / naturalH);
const renderedW = naturalW * scale;
const renderedH = naturalH * scale;
const offsetX = (rect.width - renderedW) / 2;
const offsetY = (rect.height - renderedH) / 2;
const localX = clientX - rect.left - offsetX;
const localY = clientY - rect.top - offsetY;
if (localX < 0 || localY < 0 || localX > renderedW || localY > renderedH) return null;
return {
x: Math.round((localX / renderedW) * viewportW),
y: Math.round((localY / renderedH) * viewportH),
};
}