@@ -321,8 +321,7 @@ const resolveCenteredEqualSpacing = ({
321321 const distanceDiff = Math . abs ( beforeDistance - afterDistance )
322322 if ( distanceDiff > 1 ) continue
323323
324- const averageGap = ( gapBefore + gapAfter ) / 2
325- const commonDistance = resolveDisplayDistance ( { distance : averageGap } )
324+ const commonDistance = Math . max ( beforeDistance , afterDistance )
326325
327326 const nearestDiff = Math . max (
328327 Math . abs ( gapBefore - targetGap ) ,
@@ -348,6 +347,25 @@ const resolveCenteredEqualSpacing = ({
348347 return bestCandidate
349348}
350349
350+ /**
351+ * Нормализует отображаемое расстояние для гайда равноудалённости.
352+ */
353+ const resolveGuideDisplayDistance = ( {
354+ currentGap,
355+ referenceGap
356+ } : {
357+ currentGap : number
358+ referenceGap : number
359+ } ) : number => {
360+ const currentDisplay = resolveDisplayDistance ( { distance : currentGap } )
361+ const referenceDisplay = resolveDisplayDistance ( { distance : referenceGap } )
362+ const displayDiff = Math . abs ( currentDisplay - referenceDisplay )
363+
364+ if ( displayDiff > 1 ) return referenceDisplay
365+
366+ return Math . max ( currentDisplay , referenceDisplay )
367+ }
368+
351369/**
352370 * Ищет ближайшую линию привязки по одной оси.
353371 */
@@ -607,14 +625,18 @@ export const calculateVerticalSpacing = ({
607625 const postDiff = Math . abs ( adjustedGap - refDistance )
608626
609627 if ( postDiff > threshold ) continue
628+ const distance = resolveGuideDisplayDistance ( {
629+ currentGap : adjustedGap ,
630+ referenceGap : refDistance
631+ } )
610632 const guide : SpacingGuide = {
611633 type : 'vertical' ,
612634 axis : centerX ,
613635 refStart,
614636 refEnd,
615637 activeStart : prevBottom ,
616638 activeEnd : adjustedTop ,
617- distance : refDistance
639+ distance
618640 }
619641
620642 options . push ( { delta, guide, diff : postDiff } )
@@ -632,14 +654,18 @@ export const calculateVerticalSpacing = ({
632654 const postDiff = Math . abs ( adjustedGap - refDistance )
633655
634656 if ( postDiff > threshold ) continue
657+ const distance = resolveGuideDisplayDistance ( {
658+ currentGap : adjustedGap ,
659+ referenceGap : refDistance
660+ } )
635661 const guide : SpacingGuide = {
636662 type : 'vertical' ,
637663 axis : centerX ,
638664 refStart,
639665 refEnd,
640666 activeStart : adjustedBottom ,
641667 activeEnd : nextTop ,
642- distance : refDistance
668+ distance
643669 }
644670
645671 options . push ( { delta, guide, diff : postDiff } )
@@ -842,14 +868,18 @@ export const calculateHorizontalSpacing = ({
842868 const postDiff = Math . abs ( adjustedGap - refDistance )
843869
844870 if ( postDiff > threshold ) continue
871+ const distance = resolveGuideDisplayDistance ( {
872+ currentGap : adjustedGap ,
873+ referenceGap : refDistance
874+ } )
845875 const guide : SpacingGuide = {
846876 type : 'horizontal' ,
847877 axis : centerY ,
848878 refStart,
849879 refEnd,
850880 activeStart : prevRight ,
851881 activeEnd : adjustedLeft ,
852- distance : refDistance
882+ distance
853883 }
854884
855885 options . push ( { delta, guide, diff : postDiff } )
@@ -867,14 +897,18 @@ export const calculateHorizontalSpacing = ({
867897 const postDiff = Math . abs ( adjustedGap - refDistance )
868898
869899 if ( postDiff > threshold ) continue
900+ const distance = resolveGuideDisplayDistance ( {
901+ currentGap : adjustedGap ,
902+ referenceGap : refDistance
903+ } )
870904 const guide : SpacingGuide = {
871905 type : 'horizontal' ,
872906 axis : centerY ,
873907 refStart,
874908 refEnd,
875909 activeStart : adjustedRight ,
876910 activeEnd : nextLeft ,
877- distance : refDistance
911+ distance
878912 }
879913
880914 options . push ( { delta, guide, diff : postDiff } )
0 commit comments