fix(web): face selection box position resetting on browser resize (#26766)

This commit is contained in:
Snowknight26
2026-03-11 13:38:08 -05:00
committed by GitHub
parent 9996ee12d0
commit 0ac3d6a83a
@@ -74,6 +74,7 @@
canvas.add(faceRect); canvas.add(faceRect);
canvas.setActiveObject(faceRect); canvas.setActiveObject(faceRect);
setDefaultFaceRectanglePosition(faceRect);
}; };
onMount(async () => { onMount(async () => {
@@ -93,9 +94,19 @@
}; };
}); });
$effect(() => { const setDefaultFaceRectanglePosition = (faceRect: Rect) => {
const { offsetX, offsetY } = imageContentMetrics; const { offsetX, offsetY } = imageContentMetrics;
faceRect.set({
top: offsetY + 200,
left: offsetX + 200,
});
faceRect.setCoords();
positionFaceSelector();
};
$effect(() => {
if (!canvas) { if (!canvas) {
return; return;
} }
@@ -109,14 +120,20 @@
return; return;
} }
faceRect.set({ if (!isFaceRectIntersectingCanvas(faceRect, canvas)) {
top: offsetY + 200, setDefaultFaceRectanglePosition(faceRect);
left: offsetX + 200, }
}); });
faceRect.setCoords(); const isFaceRectIntersectingCanvas = (faceRect: Rect, canvas: Canvas) => {
positionFaceSelector(); const faceBox = faceRect.getBoundingRect();
}); return !(
0 > faceBox.left + faceBox.width ||
0 > faceBox.top + faceBox.height ||
canvas.width < faceBox.left ||
canvas.height < faceBox.top
);
};
const cancel = () => { const cancel = () => {
isFaceEditMode.value = false; isFaceEditMode.value = false;