set elements as selected when inserted onto canvas

This commit is contained in:
Aakansha Doshi 2023-08-23 16:24:37 +05:30
parent 7b612bec5e
commit f85f890b25
3 changed files with 28 additions and 0 deletions

View File

@ -7393,6 +7393,30 @@ class App extends React.Component<AppProps, AppState> {
this.setState({ suggestedBindings }); 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 { private clearSelection(hitElement: ExcalidrawElement | null): void {
this.setState((prevState) => ({ this.setState((prevState) => ({
selectedElementIds: makeNextSelectedElementIds({}, prevState), selectedElementIds: makeNextSelectedElementIds({}, prevState),

View File

@ -99,6 +99,9 @@ const MermaidToExcalidraw = ({
app.scene.replaceAllElements([...elements, ...canvasData.elements]); app.scene.replaceAllElements([...elements, ...canvasData.elements]);
app.addFiles(Object.values(canvasData.files || [])); app.addFiles(Object.values(canvasData.files || []));
app.scrollToContent(canvasData.elements); app.scrollToContent(canvasData.elements);
app.setSelection(canvasData.elements);
onClose(); onClose();
}; };

View File

@ -527,6 +527,7 @@ export type AppClassProperties = {
lastViewportPosition: App["lastViewportPosition"]; lastViewportPosition: App["lastViewportPosition"];
scrollToContent: App["scrollToContent"]; scrollToContent: App["scrollToContent"];
addFiles: App["addFiles"]; addFiles: App["addFiles"];
setSelection: App["setSelection"];
}; };
export type PointerDownState = Readonly<{ export type PointerDownState = Readonly<{