discourse/app/assets/javascripts/discourse-common/addon/utils/dom-utils.js

22 lines
566 B
JavaScript

function offset(element) {
// note that getBoundingClientRect forces a reflow.
// When used in critical performance conditions
// you might want to move to more involved solution
// such as implementing an IntersectionObserver and
// using its boundingClientRect property
const rect = element.getBoundingClientRect();
return {
top: rect.top + window.scrollY,
left: rect.left + window.scrollX,
};
}
function position(element) {
return {
top: element.offsetTop,
left: element.offsetLeft,
};
}
export default { offset, position };