diff --git a/src/element/newElement.ts b/src/element/newElement.ts index 4ab6c08103..a347d1fdad 100644 --- a/src/element/newElement.ts +++ b/src/element/newElement.ts @@ -37,6 +37,7 @@ export function newElement( export function duplicateElement(element: ReturnType) { const copy = { ...element }; + delete copy.shape; copy.id = nanoid(); copy.seed = randomSeed(); return copy; diff --git a/src/index.tsx b/src/index.tsx index 41cc9e8a59..c4ef84ffe6 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -520,20 +520,20 @@ export class App extends React.Component<{}, AppState> { elementIsAddedToSelection = true; } - // No matter what, we select it // We duplicate the selected element if alt is pressed on Mouse down if (e.altKey) { elements = [ - ...elements, - ...elements.reduce((duplicates, element) => { - if (element.isSelected) { - duplicates = duplicates.concat( - duplicateElement(element) - ); - element.isSelected = false; - } - return duplicates; - }, [] as typeof elements) + ...elements.map(element => ({ + ...element, + isSelected: false + })), + ...elements + .filter(element => element.isSelected) + .map(element => { + const newElement = duplicateElement(element); + newElement.isSelected = true; + return newElement; + }) ]; } }