Pārlūkot izejas kodu

fix: only bind arrow (#8152)

Co-authored-by: dwelle <[email protected]>
zsviczian 1 gadu atpakaļ
vecāks
revīzija
a1ffa064df

+ 5 - 2
packages/excalidraw/data/restore.ts

@@ -23,6 +23,7 @@ import {
   refreshTextDimensions,
 } from "../element";
 import {
+  isArrowElement,
   isLinearElement,
   isTextElement,
   isUsingAdaptiveRadius,
@@ -469,13 +470,15 @@ export const restoreElements = (
     if (isLinearElement(element)) {
       if (
         element.startBinding &&
-        !restoredElementsMap.has(element.startBinding.elementId)
+        (!restoredElementsMap.has(element.startBinding.elementId) ||
+          !isArrowElement(element))
       ) {
         (element as Mutable<ExcalidrawLinearElement>).startBinding = null;
       }
       if (
         element.endBinding &&
-        !restoredElementsMap.has(element.endBinding.elementId)
+        (!restoredElementsMap.has(element.endBinding.elementId) ||
+          !isArrowElement(element))
       ) {
         (element as Mutable<ExcalidrawLinearElement>).endBinding = null;
       }

+ 3 - 0
packages/excalidraw/element/binding.ts

@@ -358,6 +358,9 @@ export const bindLinearElement = (
   startOrEnd: "start" | "end",
   elementsMap: NonDeletedSceneElementsMap,
 ): void => {
+  if (!isArrowElement(linearElement)) {
+    return;
+  }
   mutateElement(linearElement, {
     [startOrEnd === "start" ? "startBinding" : "endBinding"]: {
       elementId: hoveredElement.id,