File tree Expand file tree Collapse file tree 3 files changed +10
-7
lines changed
apps/web/client/src/app/project/[id]/_components/canvas/frame Expand file tree Collapse file tree 3 files changed +10
-7
lines changed Original file line number Diff line number Diff line change @@ -10,9 +10,8 @@ import { observer } from 'mobx-react-lite';
10
10
import { useCallback , useEffect , useMemo } from 'react' ;
11
11
import { RightClickMenu } from './right-click' ;
12
12
13
- export const GestureScreen = observer ( ( { frame } : { frame : WebFrame } ) => {
13
+ export const GestureScreen = observer ( ( { frame, isResizing } : { frame : WebFrame , isResizing : boolean } ) => {
14
14
const editorEngine = useEditorEngine ( ) ;
15
- const isResizing = false ;
16
15
17
16
const getFrameData : ( ) => FrameData | undefined = useCallback ( ( ) => {
18
17
return editorEngine . frames . get ( frame . id ) ;
Original file line number Diff line number Diff line change 1
1
import { FrameType , type Frame , type WebFrame } from '@onlook/models' ;
2
2
import { observer } from 'mobx-react-lite' ;
3
- import { useRef } from 'react' ;
3
+ import { useRef , useState } from 'react' ;
4
4
import { GestureScreen } from './gesture' ;
5
5
import { ResizeHandles } from './resize-handles' ;
6
6
import { RightClickMenu } from './right-click' ;
@@ -9,6 +9,8 @@ import { WebFrameComponent, type WebFrameView } from './web-frame';
9
9
10
10
export const FrameView = observer ( ( { frame } : { frame : Frame } ) => {
11
11
const webFrameRef = useRef < WebFrameView > ( null ) ;
12
+ const [ isResizing , setIsResizing ] = useState ( false ) ;
13
+
12
14
return (
13
15
< div
14
16
className = "flex flex-col fixed"
@@ -18,11 +20,11 @@ export const FrameView = observer(({ frame }: { frame: Frame }) => {
18
20
< TopBar frame = { frame as WebFrame } />
19
21
</ RightClickMenu >
20
22
< div className = "relative" >
21
- < ResizeHandles frame = { frame } />
23
+ < ResizeHandles frame = { frame } setIsResizing = { setIsResizing } />
22
24
{ frame . type === FrameType . WEB && (
23
25
< WebFrameComponent frame = { frame as WebFrame } ref = { webFrameRef } />
24
26
) }
25
- < GestureScreen frame = { frame as WebFrame } />
27
+ < GestureScreen frame = { frame as WebFrame } isResizing = { isResizing } />
26
28
</ div >
27
29
</ div >
28
30
) ;
Original file line number Diff line number Diff line change @@ -10,7 +10,8 @@ enum HandleType {
10
10
Bottom = 'bottom' ,
11
11
}
12
12
13
- export const ResizeHandles = observer ( ( { frame } : { frame : Frame } ) => {
13
+ export const ResizeHandles = observer ( (
14
+ { frame, setIsResizing } : { frame : Frame , setIsResizing : ( isResizing : boolean ) => void } ) => {
14
15
const editorEngine = useEditorEngine ( ) ;
15
16
// TODO implement aspect ratio lock
16
17
const aspectRatioLocked = false ;
@@ -19,6 +20,7 @@ export const ResizeHandles = observer(({ frame }: { frame: Frame }) => {
19
20
const startResize = ( e : MouseEvent , types : HandleType [ ] ) => {
20
21
e . preventDefault ( ) ;
21
22
e . stopPropagation ( ) ;
23
+ setIsResizing ( true ) ;
22
24
23
25
const startX = e . clientX ;
24
26
const startY = e . clientY ;
@@ -70,7 +72,7 @@ export const ResizeHandles = observer(({ frame }: { frame: Frame }) => {
70
72
const stopResize = ( e : MouseEvent ) => {
71
73
e . preventDefault ( ) ;
72
74
e . stopPropagation ( ) ;
73
-
75
+ setIsResizing ( false ) ;
74
76
window . removeEventListener ( 'mousemove' , resize as unknown as EventListener ) ;
75
77
window . removeEventListener ( 'mouseup' , stopResize as unknown as EventListener ) ;
76
78
} ;
You can’t perform that action at this time.
0 commit comments