From 2b4f106d0f610277f42f0ecfb867fa81fd748b6f Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Wed, 10 Aug 2022 00:01:39 +0200
Subject: [PATCH] Remove getChildElements method from general UIElement

This is only useful in CompoundElements. So use checks for that class
instance.
---
 projects/common/models/elements/element.ts       | 4 ----
 projects/common/models/section.ts                | 2 +-
 projects/editor/src/app/services/unit.service.ts | 8 +++++---
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/projects/common/models/elements/element.ts b/projects/common/models/elements/element.ts
index 8ddeac801..e88321a8e 100644
--- a/projects/common/models/elements/element.ts
+++ b/projects/common/models/elements/element.ts
@@ -68,10 +68,6 @@ export abstract class UIElement {
     (this.player as PlayerProperties)[property] = value;
   }
 
-  getChildElements(): UIElement[] {
-    return [];
-  }
-
   abstract getComponentFactory(): Type<ElementComponent>;
 }
 
diff --git a/projects/common/models/section.ts b/projects/common/models/section.ts
index e008574c3..152367a05 100644
--- a/projects/common/models/section.ts
+++ b/projects/common/models/section.ts
@@ -91,7 +91,7 @@ export class Section {
   /* Includes children of children, i.e. compound children. */
   getAllElements(elementType?: string): UIElement[] {
     let allElements: UIElement[] =
-      this.elements.map(element => [element, ...element.getChildElements()])
+      this.elements.map(element => [element, ...(element as CompoundElement).getChildElements() || []])
         .flat();
     if (elementType) {
       allElements = allElements.filter(element => element.type === elementType);
diff --git a/projects/editor/src/app/services/unit.service.ts b/projects/editor/src/app/services/unit.service.ts
index 11a2d6f4f..0f3e752d7 100644
--- a/projects/editor/src/app/services/unit.service.ts
+++ b/projects/editor/src/app/services/unit.service.ts
@@ -148,9 +148,11 @@ export class UnitService {
           this.idManager.removeId(value.id);
         });
       }
-      element.getChildElements().forEach((childElement: UIElement) => {
-        this.idManager.removeId(childElement.id);
-      });
+      if (element instanceof CompoundElement) {
+        element.getChildElements().forEach((childElement: UIElement) => {
+          this.idManager.removeId(childElement.id);
+        });
+      }
       this.idManager.removeId(element.id);
     });
   }
-- 
GitLab