1
0
mirror of https://github.com/excalidraw/excalidraw.git synced 2024-11-02 03:25:53 +01:00

feat: erase groups atomically (#7545)

This commit is contained in:
David Luzar 2024-01-11 17:43:04 +01:00 committed by GitHub
parent 0c24a7042f
commit 5245276409
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -5129,6 +5129,9 @@ class App extends React.Component<AppProps, AppState> {
let didChange = false;
const processedGroups = new Set<ExcalidrawElement["id"]>();
const nonDeletedElements = this.scene.getNonDeletedElements();
const processElements = (elements: ExcalidrawElement[]) => {
for (const element of elements) {
if (element.locked) {
@ -5143,6 +5146,25 @@ class App extends React.Component<AppProps, AppState> {
didChange = true;
this.elementsPendingErasure.add(element.id);
}
// (un)erase groups atomically
if (didChange && element.groupIds?.length) {
const shallowestGroupId = element.groupIds.at(-1)!;
if (!processedGroups.has(shallowestGroupId)) {
processedGroups.add(shallowestGroupId);
const elems = getElementsInGroup(
nonDeletedElements,
shallowestGroupId,
);
for (const elem of elems) {
if (event.altKey) {
this.elementsPendingErasure.delete(elem.id);
} else {
this.elementsPendingErasure.add(elem.id);
}
}
}
}
}
};