feat: create selector around clicked element
This commit is contained in:
@@ -9,6 +9,7 @@ export const BrowserWindow = () => {
|
|||||||
const [canvasRef, setCanvasReference] = useState<React.RefObject<HTMLCanvasElement> | undefined>(undefined);
|
const [canvasRef, setCanvasReference] = useState<React.RefObject<HTMLCanvasElement> | undefined>(undefined);
|
||||||
const [screenShot, setScreenShot] = useState<string>("");
|
const [screenShot, setScreenShot] = useState<string>("");
|
||||||
const [highlighterData, setHighlighterData] = useState<{ rect: DOMRect, selector: string } | null>(null);
|
const [highlighterData, setHighlighterData] = useState<{ rect: DOMRect, selector: string } | null>(null);
|
||||||
|
const [selectedElement, setSelectedElement] = useState<{ rect: DOMRect, selector: string } | null>(null);
|
||||||
|
|
||||||
const { socket } = useSocketStore();
|
const { socket } = useSocketStore();
|
||||||
const { width, height } = useBrowserDimensionsStore();
|
const { width, height } = useBrowserDimensionsStore();
|
||||||
@@ -55,17 +56,25 @@ export const BrowserWindow = () => {
|
|||||||
console.log('Highlighter Rect via socket:', data.rect)
|
console.log('Highlighter Rect via socket:', data.rect)
|
||||||
}, [highlighterData])
|
}, [highlighterData])
|
||||||
|
|
||||||
|
const handleClick = useCallback(() => {
|
||||||
|
if (highlighterData) {
|
||||||
|
setSelectedElement(highlighterData);
|
||||||
|
}
|
||||||
|
}, [highlighterData]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
document.addEventListener('mousemove', onMouseMove, false);
|
document.addEventListener('mousemove', onMouseMove, false);
|
||||||
|
document.addEventListener('click', handleClick);
|
||||||
if (socket) {
|
if (socket) {
|
||||||
socket.on("highlighter", highlighterHandler);
|
socket.on("highlighter", highlighterHandler);
|
||||||
}
|
}
|
||||||
//cleaning function
|
//cleaning function
|
||||||
return () => {
|
return () => {
|
||||||
document.removeEventListener('mousemove', onMouseMove);
|
document.removeEventListener('mousemove', onMouseMove);
|
||||||
|
document.removeEventListener('click', handleClick);
|
||||||
socket?.off("highlighter", highlighterHandler);
|
socket?.off("highlighter", highlighterHandler);
|
||||||
};
|
};
|
||||||
}, [socket, onMouseMove]);
|
}, [socket, onMouseMove, handleClick]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -76,8 +85,19 @@ export const BrowserWindow = () => {
|
|||||||
width={width}
|
width={width}
|
||||||
height={height}
|
height={height}
|
||||||
canvasRect={canvasRef.current.getBoundingClientRect()}
|
canvasRect={canvasRef.current.getBoundingClientRect()}
|
||||||
|
isSelected={false}
|
||||||
/>
|
/>
|
||||||
: null}
|
: null}
|
||||||
|
{selectedElement && canvasRef?.current ?
|
||||||
|
<Highlighter
|
||||||
|
unmodifiedRect={selectedElement?.rect}
|
||||||
|
displayedSelector={selectedElement?.selector}
|
||||||
|
width={width}
|
||||||
|
height={height}
|
||||||
|
canvasRect={canvasRef.current.getBoundingClientRect()}
|
||||||
|
isSelected={false}
|
||||||
|
/>
|
||||||
|
: null}
|
||||||
<Canvas
|
<Canvas
|
||||||
onCreateRef={setCanvasReference}
|
onCreateRef={setCanvasReference}
|
||||||
width={width}
|
width={width}
|
||||||
|
|||||||
Reference in New Issue
Block a user