2
0
Эх сурвалжийг харах

don't decrease height beyond min height

Aakansha Doshi 2 жил өмнө
parent
commit
2abc4c2ac1

+ 48 - 15
src/element/textElement.ts

@@ -172,10 +172,7 @@ export const handleBindTextResize = (
     const maxWidth = getMaxContainerWidth(container);
     const maxHeight = getMaxContainerHeight(container);
     let containerHeight = containerDims.height;
-    if (
-      shouldMaintainAspectRatio ||
-      (transformHandleType !== "n" && transformHandleType !== "s")
-    ) {
+    if (transformHandleType !== "n" && transformHandleType !== "s") {
       if (text) {
         text = wrapText(
           textElement.originalText,
@@ -209,6 +206,53 @@ export const handleBindTextResize = (
       });
     }
 
+    if (
+      shouldMaintainAspectRatio &&
+      (nextHeight > maxHeight || nextWidth > maxWidth)
+    ) {
+      let height = containerDims.height;
+      let width = containerDims.width;
+      let x = container.x;
+      let y = container.y;
+
+      if (nextHeight > maxHeight) {
+        height = computeContainerDimensionForBoundText(
+          nextHeight,
+          container.type,
+        );
+      }
+      if (nextWidth > maxWidth) {
+        width = computeContainerDimensionForBoundText(
+          nextWidth,
+          container.type,
+        );
+      }
+      const diffX = width - containerDims.width;
+      const diffY = height - containerDims.height;
+
+      if (transformHandleType === "n") {
+        y = container.y - diffY;
+      } else if (
+        transformHandleType === "e" ||
+        transformHandleType === "w" ||
+        transformHandleType === "ne" ||
+        transformHandleType === "nw"
+      ) {
+        y = container.y - diffY / 2;
+      }
+
+      if (transformHandleType === "s" || transformHandleType === "n") {
+        x = container.x - diffX / 2;
+      }
+
+      mutateElement(container, {
+        height,
+        width,
+        x,
+        y,
+      });
+    }
+
     mutateElement(textElement, {
       text,
       width: nextWidth,
@@ -223,17 +267,6 @@ export const handleBindTextResize = (
           textElement as ExcalidrawTextElementWithContainer,
         ),
       );
-      if (shouldMaintainAspectRatio && nextHeight > maxHeight) {
-        containerHeight = computeContainerDimensionForBoundText(
-          nextHeight,
-          container.type,
-        );
-        const { y } = computeContainerCoords(textElement, container.type);
-        mutateElement(container, {
-          y,
-          height: containerHeight,
-        });
-      }
     }
   }
 };

+ 8 - 6
src/element/textWysiwyg.test.tsx

@@ -1062,12 +1062,14 @@ ard`,
         expect(rectangle.height).toBe(232);
         expect(textElement.fontSize).toBe(20);
         expect(textElement.text).toBe(
-          `Excalidra
-w is an 
-opensourc
-e virtual
-whiteboar
-d`,
+          `Excalid
+raw is 
+an 
+opensou
+rce 
+virtual
+whitebo
+ard`,
         );
       });