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