set elements as selected when inserted onto canvas
This commit is contained in:
parent
7b612bec5e
commit
f85f890b25
@ -7393,6 +7393,30 @@ class App extends React.Component<AppProps, AppState> {
|
||||
this.setState({ suggestedBindings });
|
||||
}
|
||||
|
||||
public setSelection(elements: readonly NonDeletedExcalidrawElement[]) {
|
||||
const selectedElementIds: { [id: string]: true } = {};
|
||||
const selectedGroupIds: { [id: string]: true } = {};
|
||||
|
||||
elements.forEach((ele) => {
|
||||
if (ele.groupIds.length) {
|
||||
selectedElementIds[ele.id] = true;
|
||||
ele.groupIds.forEach((id) => {
|
||||
selectedGroupIds[id] = true;
|
||||
});
|
||||
}
|
||||
// exclude bound text elements as we don't mark them as selected when
|
||||
// container is selected unless in group
|
||||
else if (!isBoundToContainer(ele)) {
|
||||
selectedElementIds[ele.id] = true;
|
||||
}
|
||||
});
|
||||
|
||||
this.setState({
|
||||
previousSelectedElementIds: this.state.selectedElementIds,
|
||||
selectedElementIds,
|
||||
selectedGroupIds,
|
||||
});
|
||||
}
|
||||
private clearSelection(hitElement: ExcalidrawElement | null): void {
|
||||
this.setState((prevState) => ({
|
||||
selectedElementIds: makeNextSelectedElementIds({}, prevState),
|
||||
|
@ -99,6 +99,9 @@ const MermaidToExcalidraw = ({
|
||||
app.scene.replaceAllElements([...elements, ...canvasData.elements]);
|
||||
app.addFiles(Object.values(canvasData.files || []));
|
||||
app.scrollToContent(canvasData.elements);
|
||||
|
||||
app.setSelection(canvasData.elements);
|
||||
|
||||
onClose();
|
||||
};
|
||||
|
||||
|
@ -527,6 +527,7 @@ export type AppClassProperties = {
|
||||
lastViewportPosition: App["lastViewportPosition"];
|
||||
scrollToContent: App["scrollToContent"];
|
||||
addFiles: App["addFiles"];
|
||||
setSelection: App["setSelection"];
|
||||
};
|
||||
|
||||
export type PointerDownState = Readonly<{
|
||||
|
Loading…
x
Reference in New Issue
Block a user