Fix alt-duplicate (#326)
We need to unselect all the previous elements and select all the new ones. Also made sure that the shape is regenerated when the element is duplicated
This commit is contained in:
@@ -37,6 +37,7 @@ export function newElement(
|
||||
|
||||
export function duplicateElement(element: ReturnType<typeof newElement>) {
|
||||
const copy = { ...element };
|
||||
delete copy.shape;
|
||||
copy.id = nanoid();
|
||||
copy.seed = randomSeed();
|
||||
return copy;
|
||||
|
||||
+11
-11
@@ -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;
|
||||
})
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user