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(