From e831f95d2005f1819aaffa6bd871eb6dc64f6b46 Mon Sep 17 00:00:00 2001 From: Siklos Date: Thu, 18 Aug 2022 10:15:12 +0200 Subject: [PATCH] Refactor behaviors functions to a single function called applyBehaviors --- src/Components/Editor/Behaviors/Behaviors.ts | 21 +++++++++++++++++++ src/Components/Editor/PropertiesOperations.ts | 16 ++++---------- 2 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 src/Components/Editor/Behaviors/Behaviors.ts diff --git a/src/Components/Editor/Behaviors/Behaviors.ts b/src/Components/Editor/Behaviors/Behaviors.ts new file mode 100644 index 0000000..b93a0bf --- /dev/null +++ b/src/Components/Editor/Behaviors/Behaviors.ts @@ -0,0 +1,21 @@ +import { IContainerModel } from '../../../Interfaces/IContainerModel'; +import { ImposePosition } from './AnchorBehaviors'; +import { RecalculatePhysics } from './RigidBodyBehaviors'; + +/** + * Recalculate the position of the container and its neighbors + * Mutate and returns the updated container + * @param container Container to recalculate its positions + * @returns Updated container + */ +export function applyBehaviors(container: IContainerModel): IContainerModel { + if (container.properties.isAnchor) { + ImposePosition(container); + } + + if (container.properties.isRigidBody) { + RecalculatePhysics(container); + } + + return container; +} diff --git a/src/Components/Editor/PropertiesOperations.ts b/src/Components/Editor/PropertiesOperations.ts index df84b85..570a668 100644 --- a/src/Components/Editor/PropertiesOperations.ts +++ b/src/Components/Editor/PropertiesOperations.ts @@ -3,9 +3,8 @@ import { IContainerModel, ContainerModel } from '../../Interfaces/IContainerMode import { IHistoryState } from '../../Interfaces/IHistoryState'; import { findContainerById } from '../../utils/itertools'; import { getCurrentHistory } from './Editor'; -import { RecalculatePhysics } from './Behaviors/RigidBodyBehaviors'; -import { ImposePosition } from './Behaviors/AnchorBehaviors'; import { restoreX } from '../SVG/Elements/Container'; +import { applyBehaviors } from './Behaviors/Behaviors'; /** * Handled the property change event in the properties form @@ -43,13 +42,7 @@ export function OnPropertyChange( (container.properties as any)[key] = value; } - if (container.properties.isAnchor) { - ImposePosition(container); - } - - if (container.properties.isRigidBody) { - RecalculatePhysics(container); - } + applyBehaviors(container); history.push({ LastAction: `Change ${key} of ${container.properties.id}`, @@ -116,9 +109,8 @@ export function OnPropertiesSubmit( submitCSSForm(form, styleProperty, container); } - if (container.properties.isRigidBody) { - RecalculatePhysics(container); - } + // Apply the behaviors + applyBehaviors(container); history.push({ LastAction: `Change properties of ${container.properties.id}`,