UNPKG

@vuesax-alpha/nightly

Version:
75 lines (72 loc) 1.92 kB
import { computeCoordsFromPlacement } from './compute-coord-from-placement.mjs'; const computePosition = async (reference, floating, config) => { var _a; const { placement = "bottom", strategy = "absolute", middleware = [], platform } = config; const validMiddleware = middleware.filter(Boolean); const rtl = await ((_a = platform.isRTL) == null ? void 0 : _a.call(platform, floating)); let rects = await platform.getElementRects({ reference, floating, strategy }); let { x, y } = computeCoordsFromPlacement(rects, placement, rtl); let statefulPlacement = placement; let middlewareData = {}; let resetCount = 0; for (let i = 0; i < validMiddleware.length; i++) { const { name, fn } = validMiddleware[i]; const { x: nextX, y: nextY, data, reset } = await fn({ x, y, initialPlacement: placement, placement: statefulPlacement, strategy, middlewareData, rects, platform, elements: { reference, floating } }); x = nextX != null ? nextX : x; y = nextY != null ? nextY : y; middlewareData = { ...middlewareData, [name]: { ...middlewareData[name], ...data } }; if (reset && resetCount <= 50) { resetCount++; if (typeof reset === "object") { if (reset.placement) { statefulPlacement = reset.placement; } if (reset.rects) { rects = reset.rects === true ? await platform.getElementRects({ reference, floating, strategy }) : reset.rects; } ; ({ x, y } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); } i = -1; } } return { x, y, placement: statefulPlacement, strategy, middlewareData }; }; export { computePosition }; //# sourceMappingURL=compute-position.mjs.map