@vnmfify/core
Version:
```shell npm i @vnmfify/core -S ```
67 lines (60 loc) • 1.78 kB
JavaScript
import { inBrowser } from "../base";
import { queryNodesRef, elementUnref, isRootElement, isWindow, queryAllNodesRef } from "./element";
export function makeRect(width, height) {
return {
top: 0,
left: 0,
right: width,
bottom: height,
width,
height
};
}
export function getRect(elementOrRef) {
var element = elementUnref(elementOrRef);
if (element) {
if (inBrowser) {
if (isWindow(element)) {
var width = element.innerWidth;
var height = element.innerHeight;
return Promise.resolve(makeRect(width, height));
}
return Promise.resolve(element.getBoundingClientRect());
} else {
return new Promise(resolve => {
queryNodesRef(element).boundingClientRect().exec(_ref => {
var [rect] = _ref;
if (isRootElement(element)) {
var {
width: _width,
height: _height
} = rect;
resolve(makeRect(_width, _height));
} else {
resolve(rect);
}
});
});
}
}
return Promise.resolve(makeRect(0, 0));
}
export function getRects(elementOrRef, selector) {
var element = elementUnref(elementOrRef);
if (element) {
if (inBrowser) {
var rects = [];
element.querySelectorAll(selector).forEach(oneElement => rects.push(oneElement.getBoundingClientRect()));
return Promise.resolve(rects);
} else {
return new Promise(resolve => {
queryAllNodesRef(element, selector).boundingClientRect().exec(_ref2 => {
var [rects] = _ref2;
return resolve(rects);
});
});
}
}
return Promise.resolve([]);
}
//# sourceMappingURL=rect.js.map