Skip to content

Commit e780252

Browse files
authored
fix: allow resizing better in preview (#2585)
1 parent 74a49aa commit e780252

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

apps/web/client/src/app/project/[id]/_components/canvas/frame/gesture.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@ import { observer } from 'mobx-react-lite';
1010
import { useCallback, useEffect, useMemo } from 'react';
1111
import { RightClickMenu } from './right-click';
1212

13-
export const GestureScreen = observer(({ frame }: { frame: WebFrame }) => {
13+
export const GestureScreen = observer(({ frame, isResizing }: { frame: WebFrame, isResizing: boolean }) => {
1414
const editorEngine = useEditorEngine();
15-
const isResizing = false;
1615

1716
const getFrameData: () => FrameData | undefined = useCallback(() => {
1817
return editorEngine.frames.get(frame.id);

apps/web/client/src/app/project/[id]/_components/canvas/frame/index.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { FrameType, type Frame, type WebFrame } from '@onlook/models';
22
import { observer } from 'mobx-react-lite';
3-
import { useRef } from 'react';
3+
import { useRef, useState } from 'react';
44
import { GestureScreen } from './gesture';
55
import { ResizeHandles } from './resize-handles';
66
import { RightClickMenu } from './right-click';
@@ -9,6 +9,8 @@ import { WebFrameComponent, type WebFrameView } from './web-frame';
99

1010
export const FrameView = observer(({ frame }: { frame: Frame }) => {
1111
const webFrameRef = useRef<WebFrameView>(null);
12+
const [isResizing, setIsResizing] = useState(false);
13+
1214
return (
1315
<div
1416
className="flex flex-col fixed"
@@ -18,11 +20,11 @@ export const FrameView = observer(({ frame }: { frame: Frame }) => {
1820
<TopBar frame={frame as WebFrame} />
1921
</RightClickMenu>
2022
<div className="relative">
21-
<ResizeHandles frame={frame} />
23+
<ResizeHandles frame={frame} setIsResizing={setIsResizing} />
2224
{frame.type === FrameType.WEB && (
2325
<WebFrameComponent frame={frame as WebFrame} ref={webFrameRef} />
2426
)}
25-
<GestureScreen frame={frame as WebFrame} />
27+
<GestureScreen frame={frame as WebFrame} isResizing={isResizing} />
2628
</div>
2729
</div>
2830
);

apps/web/client/src/app/project/[id]/_components/canvas/frame/resize-handles.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ enum HandleType {
1010
Bottom = 'bottom',
1111
}
1212

13-
export const ResizeHandles = observer(({ frame }: { frame: Frame }) => {
13+
export const ResizeHandles = observer((
14+
{ frame, setIsResizing }: { frame: Frame, setIsResizing: (isResizing: boolean) => void }) => {
1415
const editorEngine = useEditorEngine();
1516
// TODO implement aspect ratio lock
1617
const aspectRatioLocked = false;
@@ -19,6 +20,7 @@ export const ResizeHandles = observer(({ frame }: { frame: Frame }) => {
1920
const startResize = (e: MouseEvent, types: HandleType[]) => {
2021
e.preventDefault();
2122
e.stopPropagation();
23+
setIsResizing(true);
2224

2325
const startX = e.clientX;
2426
const startY = e.clientY;
@@ -70,7 +72,7 @@ export const ResizeHandles = observer(({ frame }: { frame: Frame }) => {
7072
const stopResize = (e: MouseEvent) => {
7173
e.preventDefault();
7274
e.stopPropagation();
73-
75+
setIsResizing(false);
7476
window.removeEventListener('mousemove', resize as unknown as EventListener);
7577
window.removeEventListener('mouseup', stopResize as unknown as EventListener);
7678
};

0 commit comments

Comments
 (0)