diff --git a/packages/excalidraw/data/restore.ts b/packages/excalidraw/data/restore.ts index c3739dd242..f427700870 100644 --- a/packages/excalidraw/data/restore.ts +++ b/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).startBinding = null; } if ( element.endBinding && - !restoredElementsMap.has(element.endBinding.elementId) + (!restoredElementsMap.has(element.endBinding.elementId) || + !isArrowElement(element)) ) { (element as Mutable).endBinding = null; } diff --git a/packages/excalidraw/element/binding.ts b/packages/excalidraw/element/binding.ts index 4b2fe50fb6..8d1a728eaa 100644 --- a/packages/excalidraw/element/binding.ts +++ b/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,