import { LisioReaderAdapter } from "../../../adapters/reader/lisio-reader-adapter";

function getOffset(element: HTMLElement | SVGElement): number {
  const rect = element.getBoundingClientRect();
  return rect.top + window.scrollY;
}

async function lisioScrollChannelHandler(
  this: LisioReaderAdapter,
  datas: string,
) {
  const { target } = JSON.parse(datas) as { target: number };
  const element = document.querySelector<HTMLElement | SVGElement>(
    `[data-lisio-position="${target}"]`,
  ) as HTMLElement | SVGElement | undefined;
  if (element != undefined) {
    const y = getOffset(element);
    window.scroll(0, y);
  }
}

export default lisioScrollChannelHandler;
