Norigin-Spatial-Navigation icon indicating copy to clipboard operation
Norigin-Spatial-Navigation copied to clipboard

Wrong decision on distance measurement SpatialNavigation.ts : getSecondaryAxisDistance()

Open a-roz opened this issue 1 month ago • 1 comments

SpatialNavigation.ts

has getSecondaryAxisDistance() , which has logically incorrect behavior when measure distance between Ref an Sibling it's done by measure on all corners and leads to wrong choose in case of elements of a VARIOUS WIDTH / HEIGHT

To correct this, have to use CENTER coordinate between corners and measure the distance between them

so instead of

    const distancesToCompare = [];

    distancesToCompare.push(Math.abs(siblingCoordinateA - refCoordinateA));
    distancesToCompare.push(Math.abs(siblingCoordinateA - refCoordinateB));
    distancesToCompare.push(Math.abs(siblingCoordinateB - refCoordinateA));
    distancesToCompare.push(Math.abs(siblingCoordinateB - refCoordinateB));

    return Math.min(...distancesToCompare);

simply to put

    const refCoordinateCenter = (refCoordinateA + refCoordinateB) / 2;
    const siblingCoordinateCenter = (siblingCoordinateA + siblingCoordinateB) / 2;
    return Math.abs(refCoordinateCenter - siblingCoordinateCenter)

and it works perfect

a-roz avatar Jun 04 '24 11:06 a-roz