clarity-js
Version:
An analytics library that uses web page interactions to generate aggregated insights
20 lines (17 loc) • 776 B
text/typescript
import { OffsetDistance } from "@clarity-types/core";
import { iframe } from "@src/layout/dom";
export function offset(element: HTMLElement): OffsetDistance {
let output: OffsetDistance = { x: 0, y: 0 };
// Walk up the chain to ensure we compute offset distance correctly
// In case where we may have nested IFRAMEs, we keep walking up until we get to the top most parent page
if (element && element.offsetParent) {
do {
let parent = element.offsetParent as HTMLElement;
let frame = parent === null ? iframe(element.ownerDocument) : null;
output.x += element.offsetLeft;
output.y += element.offsetTop;
element = frame ? frame : parent;
} while (element);
}
return output;
}