This commit is contained in:
Dustin Swan 2026-02-13 17:31:08 -07:00
parent 1961ac6249
commit 164f752338
No known key found for this signature in database
GPG key ID: 30D46587E2100467
6 changed files with 95 additions and 122 deletions

View file

@ -249,29 +249,27 @@ export function _measure(ui: UIValue): { width: number, height: number } {
}
}
export function hitTest(x: number, y: number): { onClick: any, relativeX: number, relativeY: number } | null {
for (let i = clickRegions.length - 1; i >= 0; i--) {
const region = clickRegions[i];
function findRegion<T extends { x: number, y: number, width: number, height: number }>(regions: T[], x: number, y: number ): T | null {
for (let i = regions.length - 1; i >= 0; i--) {
const r = regions[i];
if (x >= region.x && x < region.x + region.width &&
y >= region.y && y < region.y + region.height) {
return {
onClick: region.onClick,
relativeX: x - region.x,
relativeY: y - region.y,
};
if (x >= r.x && x < r.x + r.width &&
y >= r.y && y < r.y + r.height) {
return r;
}
}
return null;
}
export function hitTest(x: number, y: number): { onClick: any, relativeX: number, relativeY: number } | null {
const region = findRegion(clickRegions, x, y);
if (!region) return null;
return { onClick: region.onClick, relativeX: x - region.x, relativeY: y - region.y };
}
export function scrollHitTest(x: number, y: number): { onScroll: any } | null {
for (let i = scrollRegions.length - 1; i >= 0; i--) {
const region = scrollRegions[i];
if (x >= region.x && x < region.x + region.width &&
y >= region.y && y < region.y + region.height) {
return { onScroll: region.onScroll };
}
}
return null;
const region = findRegion(scrollRegions, x, y);
if (!region) return null;
return { onScroll: region.onScroll };
}