wip: resizing multiple frames resizes frame children

This commit is contained in:
Ryan Di 2023-11-17 19:50:15 +08:00
parent 23b24ea5c3
commit 25ab75cb9b

View File

@ -8299,7 +8299,12 @@ class App extends React.Component<AppProps, AppState> {
transformElements(
pointerDownState,
transformHandleType,
selectedElements,
selectedFrames.length > 1
? this.scene.getSelectedElements({
selectedElementIds: this.state.selectedElementIds,
includeElementsInFrames: true,
})
: selectedElements,
pointerDownState.resize.arrowDirection,
shouldRotateWithDiscreteAngle(event),
shouldResizeFromCenter(event),
@ -8315,6 +8320,7 @@ class App extends React.Component<AppProps, AppState> {
) {
this.maybeSuggestBindingForAll(selectedElements);
if (selectedFrames.length === 1) {
const elementsToHighlight = new Set<ExcalidrawElement>();
selectedFrames.forEach((frame) => {
const elementsInFrame = getFrameChildren(
@ -8329,10 +8335,12 @@ class App extends React.Component<AppProps, AppState> {
mutateElement(element, {
x:
frame.x +
(frameElementsOffsetsMap.get(frame.id + element.id)?.x || 0),
(frameElementsOffsetsMap.get(frame.id + element.id)?.x ||
0),
y:
frame.y +
(frameElementsOffsetsMap.get(frame.id + element.id)?.y || 0),
(frameElementsOffsetsMap.get(frame.id + element.id)?.y ||
0),
});
});
}
@ -8341,10 +8349,12 @@ class App extends React.Component<AppProps, AppState> {
mutateElement(element, {
x:
frame.x +
(frameElementsOffsetsMap.get(frame.id + element.id)?.x || 0),
(frameElementsOffsetsMap.get(frame.id + element.id)?.x ||
0),
y:
frame.y +
(frameElementsOffsetsMap.get(frame.id + element.id)?.y || 0),
(frameElementsOffsetsMap.get(frame.id + element.id)?.y ||
0),
});
});
}
@ -8360,6 +8370,7 @@ class App extends React.Component<AppProps, AppState> {
this.setState({
elementsToHighlight: [...elementsToHighlight],
});
}
return true;
}