瀏覽代碼

fix: resize sometimes throwing on missing null-checks (#6013)

David Luzar 2 年之前
父節點
當前提交
539505affd
共有 1 個文件被更改,包括 15 次插入11 次删除
  1. 15 11
      src/element/resizeElements.ts

+ 15 - 11
src/element/resizeElements.ts

@@ -162,11 +162,12 @@ const rotateSingleElement = (
 
   mutateElement(element, { angle });
   if (boundTextElementId) {
-    const textElement = Scene.getScene(element)!.getElement(
-      boundTextElementId,
-    ) as ExcalidrawTextElementWithContainer;
+    const textElement =
+      Scene.getScene(element)?.getElement<ExcalidrawTextElementWithContainer>(
+        boundTextElementId,
+      );
 
-    if (!isArrowElement(element)) {
+    if (textElement && !isArrowElement(element)) {
       mutateElement(textElement, { angle });
     }
   }
@@ -201,8 +202,10 @@ const measureFontSizeFromWH = (
 
   const hasContainer = isBoundToContainer(element);
   if (hasContainer) {
-    const container = getContainerElement(element)!;
-    width = getMaxContainerWidth(container);
+    const container = getContainerElement(element);
+    if (container) {
+      width = getMaxContainerWidth(container);
+    }
   }
   const nextFontSize = element.fontSize * (nextWidth / width);
   if (nextFontSize < MIN_FONT_SIZE) {
@@ -211,7 +214,7 @@ const measureFontSizeFromWH = (
   const metrics = measureText(
     element.text,
     getFontString({ fontSize: nextFontSize, fontFamily: element.fontFamily }),
-    hasContainer ? width : null,
+    element.containerId ? width : null,
   );
   return {
     size: nextFontSize,
@@ -765,10 +768,11 @@ const rotateMultipleElements = (
     });
     const boundTextElementId = getBoundTextElementId(element);
     if (boundTextElementId) {
-      const textElement = Scene.getScene(element)!.getElement(
-        boundTextElementId,
-      ) as ExcalidrawTextElementWithContainer;
-      if (!isArrowElement(element)) {
+      const textElement =
+        Scene.getScene(element)?.getElement<ExcalidrawTextElementWithContainer>(
+          boundTextElementId,
+        );
+      if (textElement && !isArrowElement(element)) {
         mutateElement(textElement, {
           x: textElement.x + (rotatedCX - cx),
           y: textElement.y + (rotatedCY - cy),