29 lines
773 B
JavaScript
29 lines
773 B
JavaScript
|
import Helper from '@ember/component/helper';
|
||
|
import { inject as service } from '@ember/service';
|
||
|
|
||
|
export default Helper.extend({
|
||
|
dom: service('dom'),
|
||
|
compute: function([selector, id], hash) {
|
||
|
const $el = this.dom.element(selector);
|
||
|
const $refs = [$el.offsetParent, $el];
|
||
|
// TODO: helper probably needs to accept a `reference=` option
|
||
|
// with a selector to use as reference/root
|
||
|
if (selector.startsWith('#resolver:')) {
|
||
|
$refs.unshift($refs[0].offsetParent);
|
||
|
}
|
||
|
return $refs.reduce(
|
||
|
function(prev, item) {
|
||
|
prev.x += item.offsetLeft;
|
||
|
prev.y += item.offsetTop;
|
||
|
return prev;
|
||
|
},
|
||
|
{
|
||
|
x: 0,
|
||
|
y: 0,
|
||
|
height: $el.offsetHeight,
|
||
|
width: $el.offsetWidth,
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
});
|