@zag-js/popper
Version:
Dynamic positioning logic for ui machines
74 lines (72 loc) • 2.76 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/get-styles.ts
var get_styles_exports = {};
__export(get_styles_exports, {
getPlacementStyles: () => getPlacementStyles
});
module.exports = __toCommonJS(get_styles_exports);
var import_middleware = require("./middleware.js");
var ARROW_FLOATING_STYLE = {
bottom: "rotate(45deg)",
left: "rotate(135deg)",
top: "rotate(225deg)",
right: "rotate(315deg)"
};
function getPlacementStyles(options = {}) {
const { placement, sameWidth, fitViewport, strategy = "absolute" } = options;
return {
arrow: {
position: "absolute",
width: import_middleware.cssVars.arrowSize.reference,
height: import_middleware.cssVars.arrowSize.reference,
[import_middleware.cssVars.arrowSizeHalf.variable]: `calc(${import_middleware.cssVars.arrowSize.reference} / 2)`,
[import_middleware.cssVars.arrowOffset.variable]: `calc(${import_middleware.cssVars.arrowSizeHalf.reference} * -1)`
},
arrowTip: {
// @ts-expect-error - Fix this
transform: placement ? ARROW_FLOATING_STYLE[placement.split("-")[0]] : void 0,
background: import_middleware.cssVars.arrowBg.reference,
top: "0",
left: "0",
width: "100%",
height: "100%",
position: "absolute",
zIndex: "inherit"
},
floating: {
position: strategy,
isolation: "isolate",
minWidth: sameWidth ? void 0 : "max-content",
width: sameWidth ? "var(--reference-width)" : void 0,
maxWidth: fitViewport ? "var(--available-width)" : void 0,
maxHeight: fitViewport ? "var(--available-height)" : void 0,
pointerEvents: !placement ? "none" : void 0,
top: "0px",
left: "0px",
// move off-screen if placement is not defined
transform: placement ? "translate3d(var(--x), var(--y), 0)" : "translate3d(0, -100vh, 0)",
zIndex: "var(--z-index)"
}
};
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
getPlacementStyles
});