refactor: reintroduce highlighter
This commit is contained in:
@@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useState } from 'react';
|
|||||||
import { useSocketStore } from '../../context/socket';
|
import { useSocketStore } from '../../context/socket';
|
||||||
import Canvas from "../atoms/canvas";
|
import Canvas from "../atoms/canvas";
|
||||||
import { useBrowserDimensionsStore } from "../../context/browserDimensions";
|
import { useBrowserDimensionsStore } from "../../context/browserDimensions";
|
||||||
|
import { Highlighter } from "../atoms/Highlighter";
|
||||||
|
|
||||||
export const BrowserWindow = () => {
|
export const BrowserWindow = () => {
|
||||||
const [canvasRef, setCanvasReference] = useState<React.RefObject<HTMLCanvasElement> | undefined>(undefined);
|
const [canvasRef, setCanvasReference] = useState<React.RefObject<HTMLCanvasElement> | undefined>(undefined);
|
||||||
@@ -11,6 +12,20 @@ export const BrowserWindow = () => {
|
|||||||
const { socket } = useSocketStore();
|
const { socket } = useSocketStore();
|
||||||
const { width, height } = useBrowserDimensionsStore();
|
const { width, height } = useBrowserDimensionsStore();
|
||||||
|
|
||||||
|
const onMouseMove = (e: MouseEvent) => {
|
||||||
|
if (canvasRef && canvasRef.current && highlighterData) {
|
||||||
|
const canvasRect = canvasRef.current.getBoundingClientRect();
|
||||||
|
if (
|
||||||
|
e.pageX < canvasRect.left
|
||||||
|
|| e.pageX > canvasRect.right
|
||||||
|
|| e.pageY < canvasRect.top
|
||||||
|
|| e.pageY > canvasRect.bottom
|
||||||
|
) {
|
||||||
|
setHighlighterData(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const screencastHandler = useCallback((data: string) => {
|
const screencastHandler = useCallback((data: string) => {
|
||||||
setScreenShot(data);
|
setScreenShot(data);
|
||||||
}, []);
|
}, []);
|
||||||
@@ -32,16 +47,27 @@ export const BrowserWindow = () => {
|
|||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
document.addEventListener('mousemove', onMouseMove, false);
|
||||||
if (socket) {
|
if (socket) {
|
||||||
socket.on("highlighter", highlighterHandler);
|
socket.on("highlighter", highlighterHandler);
|
||||||
}
|
}
|
||||||
return () => {
|
return () => {
|
||||||
|
document.removeEventListener('mousemove', onMouseMove);
|
||||||
socket?.off("highlighter", highlighterHandler);
|
socket?.off("highlighter", highlighterHandler);
|
||||||
};
|
};
|
||||||
}, [socket, highlighterHandler]);
|
}, [socket, onMouseMove]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div style={{ position: 'relative' }}>
|
<div>
|
||||||
|
{(highlighterData?.rect != null && highlighterData?.rect.top != null) && canvasRef?.current ?
|
||||||
|
<Highlighter
|
||||||
|
unmodifiedRect={highlighterData?.rect}
|
||||||
|
displayedSelector={highlighterData?.selector}
|
||||||
|
width={width}
|
||||||
|
height={height}
|
||||||
|
canvasRect={canvasRef.current.getBoundingClientRect()}
|
||||||
|
/>
|
||||||
|
: null}
|
||||||
<Canvas
|
<Canvas
|
||||||
onCreateRef={setCanvasReference}
|
onCreateRef={setCanvasReference}
|
||||||
width={width}
|
width={width}
|
||||||
|
|||||||
Reference in New Issue
Block a user