import { createRectsFromDOMRange } from '@lexical/selection';
import { LexicalEditor } from 'lexical';

export default function createScrollWrapperRelativeRectsFromDOMRange(
  editor: LexicalEditor,
  range: Range
) {
  const scrollWrapper = editor.getRootElement()?.parentElement || document.body;

  const wrapperRect = scrollWrapper.getBoundingClientRect();
  const rects = createRectsFromDOMRange(editor, range)
    .filter((r) => r.width > 0)
    .map(
      (r) =>
        new DOMRect(
          r.left - wrapperRect.left,
          r.top + scrollWrapper.scrollTop - wrapperRect.top,
          r.width,
          r.height
        )
    );
  return rects;
}
