From 4f7055000acda03887131bd101d0077cf2a88e9b Mon Sep 17 00:00:00 2001 From: Eric NGUYEN Date: Fri, 12 Aug 2022 15:58:08 +0200 Subject: [PATCH] Improve docs for AnchorBehaviors --- .../Editor/Behaviors/AnchorBehaviors.ts | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/Components/Editor/Behaviors/AnchorBehaviors.ts b/src/Components/Editor/Behaviors/AnchorBehaviors.ts index 8d1adf9..d9731e8 100644 --- a/src/Components/Editor/Behaviors/AnchorBehaviors.ts +++ b/src/Components/Editor/Behaviors/AnchorBehaviors.ts @@ -17,8 +17,9 @@ import { IContainerModel } from '../../../Interfaces/IContainerModel'; import { constraintBodyInsideUnallocatedWidth } from './RigidBodyBehaviors'; /** - * Impose the container position + * Impose the container position to its siblings * Apply the following modification to the overlapping rigid body container : + * @param container Container to impose its position */ export function ImposePosition(container: IContainerModel): IContainerModel { if (container.parent === undefined || @@ -26,7 +27,6 @@ export function ImposePosition(container: IContainerModel): IContainerModel { return container; } - // Get the closest one const rigidBodies = container.parent.children.filter( child => child.properties.isRigidBody && !child.properties.isAnchor ); @@ -38,27 +38,33 @@ export function ImposePosition(container: IContainerModel): IContainerModel { return container; } +/** + * Returns the overlapping containers with container + * @param container A container + * @param containers A list of containers + * @returns A list of overlapping containers + */ function getOverlappingContainers( container: IContainerModel, - siblings: IContainerModel[] + containers: IContainerModel[] ): IContainerModel[] { const min1 = container.properties.x; const max1 = container.properties.x + Number(container.properties.width); const overlappingContainers: IContainerModel[] = []; - for (const sibling of siblings) { - if (sibling === container) { + for (const other of containers) { + if (other === container) { continue; } - const min2 = sibling.properties.x; - const max2 = sibling.properties.x + Number(sibling.properties.width); + const min2 = other.properties.x; + const max2 = other.properties.x + Number(other.properties.width); const isOverlapping = Math.min(max1, max2) - Math.max(min1, min2) > 0; if (!isOverlapping) { continue; } - overlappingContainers.push(sibling); + overlappingContainers.push(other); } return overlappingContainers; }