Norigin-Spatial-Navigation
Norigin-Spatial-Navigation copied to clipboard
Wrong decision on distance measurement SpatialNavigation.ts : getSecondaryAxisDistance()
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