From 0e92b1206f3340ee046b5150b9ca2657c3b2dc2b Mon Sep 17 00:00:00 2001 From: Mark Tolmacs Date: Wed, 19 Mar 2025 14:58:32 +0100 Subject: [PATCH] Fix alt+drag duplication order Signed-off-by: Mark Tolmacs --- packages/excalidraw/components/App.tsx | 1 + packages/excalidraw/element/duplicate.ts | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index f86815b46..f471b3fdb 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -8447,6 +8447,7 @@ class App extends React.Component { y: origEl.y, }; }, + reverseOrder: true, }); clonedElements.forEach((element) => { pointerDownState.originalElements.set(element.id, element); diff --git a/packages/excalidraw/element/duplicate.ts b/packages/excalidraw/element/duplicate.ts index b5f1dd50b..6015ca59c 100644 --- a/packages/excalidraw/element/duplicate.ts +++ b/packages/excalidraw/element/duplicate.ts @@ -105,6 +105,7 @@ export const duplicateElements = ( }; overrides?: (element: ExcalidrawElement) => Partial; randomizeSeed?: boolean; + reverseOrder?: boolean; }, ) => { // Ids of elements that have already been processed so we don't push them @@ -192,7 +193,11 @@ export const duplicateElements = ( return; } - elementsWithClones.splice(index + 1, 0, ...castArray(elements)); + elementsWithClones.splice( + index + (opts?.reverseOrder ? 0 : +1), + 0, + ...castArray(elements), + ); }; const frameIdsToDuplicate = new Set(