private updateSelectedDrawing = (): void => {
const drawings = this.drawings$.value;
const pendingDrawing = drawings.find(
(drawing) => drawing.isCreationPending() && drawing.isSelected(),
);
if (pendingDrawing) {
drawings.forEach((drawing) => {
if (drawing !== pendingDrawing && drawing.isSelected()) {
drawing.setSelected(false);
}
});
if (this.selectedDrawing$.value !== null) {
this.selectedDrawing$.next(null);
}
return;
}
const selectedDrawings = drawings.filter(
(drawing) => drawing.isSelected() && !drawing.isCreationPending(),
);
const currentDrawing = this.selectedDrawing$.value;
const nextDrawing =
selectedDrawings.find((drawing) => drawing !== currentDrawing) ??
selectedDrawings[0] ??
null;
this.setSelectedDrawing(nextDrawing);
};