UNPKG

@vuesax-alpha/nightly

Version:
44 lines (41 loc) 2.21 kB
import { evaluate, getPaddingObject, rectToClientRect } from '../utils/index.mjs'; async function detectOverflow(state, options = {}) { var _a, _b, _c, _d, _e, _f; const { x, y, platform, rects, elements, strategy } = state; const { boundary = "clippingAncestors", rootBoundary = "viewport", elementContext = "floating", altBoundary = false, padding = 0 } = evaluate(options, state); const paddingObject = getPaddingObject(padding); const altContext = elementContext === "floating" ? "reference" : "floating"; const element = elements[altBoundary ? altContext : elementContext]; const clippingClientRect = rectToClientRect( await platform.getClippingRect({ element: ((_b = await ((_a = platform.isElement) == null ? void 0 : _a.call(platform, element))) != null ? _b : true) ? element : element.contextElement || await ((_c = platform.getDocumentElement) == null ? void 0 : _c.call(platform, elements.floating)), boundary, rootBoundary, strategy }) ); const rect = elementContext === "floating" ? { ...rects.floating, x, y } : rects.reference; const offsetParent = await ((_d = platform.getOffsetParent) == null ? void 0 : _d.call(platform, elements.floating)); const offsetScale = await ((_e = platform.isElement) == null ? void 0 : _e.call(platform, offsetParent)) ? await ((_f = platform.getScale) == null ? void 0 : _f.call(platform, offsetParent)) || { x: 1, y: 1 } : { x: 1, y: 1 }; const elementClientRect = rectToClientRect( platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({ rect, offsetParent, strategy }) : rect ); return { top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x }; } export { detectOverflow }; //# sourceMappingURL=detect-overflow.mjs.map