diff --git a/src/components/atoms/Highlighter.tsx b/src/components/atoms/Highlighter.tsx new file mode 100644 index 00000000..50e28ec5 --- /dev/null +++ b/src/components/atoms/Highlighter.tsx @@ -0,0 +1,127 @@ +import React from 'react'; + +import styled from "styled-components"; +import { mapRect } from "../../helpers/inputHelpers"; +import canvas from "./canvas"; + +interface HighlighterProps { + unmodifiedRect: DOMRect; + displayedSelector: string; + width: number; + height: number; + canvasRect: DOMRect; +}; + +export const Highlighter = ({ unmodifiedRect, displayedSelector = '', width, height, canvasRect}: HighlighterProps) => { + if (!unmodifiedRect) { + return null; + } else { + // const unshiftedRect = mapRect(unmodifiedRect, width, height); + // console.log('unshiftedRect', unshiftedRect) + // const rect = { + // bottom: unshiftedRect.bottom + canvasRect.top, + // top: unshiftedRect.top + canvasRect.top, + // left: unshiftedRect.left + canvasRect.left, + // right: unshiftedRect.right + canvasRect.left, + // x: unshiftedRect.x + canvasRect.left, + // y: unshiftedRect.y + canvasRect.top, + // width: unshiftedRect.width, + // height: unshiftedRect.height, + // } + + const rect = { + top: unmodifiedRect.top + canvasRect.top, + left: unmodifiedRect.left + canvasRect.left, + right: unmodifiedRect.right + canvasRect.left, + bottom: unmodifiedRect.bottom + canvasRect.top, + width: unmodifiedRect.width, + height: unmodifiedRect.height, + }; + + const adjustedWidth = Math.min(rect.width, width - rect.left); // Adjust width if it extends beyond canvas boundary + const adjustedHeight = Math.min(rect.height, height - rect.top); // Adjust height if it extends beyond canvas boundary + + console.log('unmodifiedRect:', unmodifiedRect) + console.log('rectangle:', rect) + console.log('canvas rectangle:', canvasRect) + + // make the highlighting rectangle stay in browser window boundaries + // if (rect.bottom > canvasRect.bottom) { + // rect.height = height - unshiftedRect.top; + // } + + // if (rect.top < canvasRect.top) { + // rect.height = rect.height - (canvasRect.top - rect.top); + // rect.top = canvasRect.top; + // } + + // if (rect.right > canvasRect.right) { + // rect.width = width - unshiftedRect.left; + // } + + // if (rect.left < canvasRect.left) { + // rect.width = rect.width - (canvasRect.left - rect.left); + // rect.left = canvasRect.left; + // } + + + return ( +