UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

20 lines 2.88 kB
/// <reference types="@taiga-ui/tsconfig/ng-dev-mode" /> import { tuiIsHTMLElement } from './element-checks'; /** * Calculates offset for an element relative to it's parent several levels above * * @param host parent element * @param element * @return object with offsetTop and offsetLeft number properties */ export function tuiGetElementOffset(host, element) { ngDevMode && console.assert(host.contains(element), 'Host must contain element'); let { offsetTop, offsetLeft, offsetParent } = element; while (tuiIsHTMLElement(offsetParent) && offsetParent !== host) { offsetTop += offsetParent.offsetTop; offsetLeft += offsetParent.offsetLeft; offsetParent = offsetParent.offsetParent; } return { offsetTop, offsetLeft }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVsZW1lbnQtb2Zmc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL2RvbS9nZXQtZWxlbWVudC1vZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBRXhELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRWxEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsSUFBYSxFQUNiLE9BQW9CO0lBRXBCLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUVqRixJQUFJLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUMsR0FBRyxPQUFPLENBQUM7SUFFcEQsT0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1FBQzVELFNBQVMsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQ3BDLFVBQVUsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQ3RDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO0tBQzVDO0lBRUQsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdGFpZ2EtdWkvdHNjb25maWcvbmctZGV2LW1vZGVcIiAvPlxuXG5pbXBvcnQge3R1aUlzSFRNTEVsZW1lbnR9IGZyb20gJy4vZWxlbWVudC1jaGVja3MnO1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgb2Zmc2V0IGZvciBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0J3MgcGFyZW50IHNldmVyYWwgbGV2ZWxzIGFib3ZlXG4gKlxuICogQHBhcmFtIGhvc3QgcGFyZW50IGVsZW1lbnRcbiAqIEBwYXJhbSBlbGVtZW50XG4gKiBAcmV0dXJuIG9iamVjdCB3aXRoIG9mZnNldFRvcCBhbmQgb2Zmc2V0TGVmdCBudW1iZXIgcHJvcGVydGllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHVpR2V0RWxlbWVudE9mZnNldChcbiAgICBob3N0OiBFbGVtZW50LFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuKToge29mZnNldExlZnQ6IG51bWJlcjsgb2Zmc2V0VG9wOiBudW1iZXJ9IHtcbiAgICBuZ0Rldk1vZGUgJiYgY29uc29sZS5hc3NlcnQoaG9zdC5jb250YWlucyhlbGVtZW50KSwgJ0hvc3QgbXVzdCBjb250YWluIGVsZW1lbnQnKTtcblxuICAgIGxldCB7b2Zmc2V0VG9wLCBvZmZzZXRMZWZ0LCBvZmZzZXRQYXJlbnR9ID0gZWxlbWVudDtcblxuICAgIHdoaWxlICh0dWlJc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgb2Zmc2V0UGFyZW50ICE9PSBob3N0KSB7XG4gICAgICAgIG9mZnNldFRvcCArPSBvZmZzZXRQYXJlbnQub2Zmc2V0VG9wO1xuICAgICAgICBvZmZzZXRMZWZ0ICs9IG9mZnNldFBhcmVudC5vZmZzZXRMZWZ0O1xuICAgICAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O1xuICAgIH1cblxuICAgIHJldHVybiB7b2Zmc2V0VG9wLCBvZmZzZXRMZWZ0fTtcbn1cbiJdfQ==