UNPKG

@zag-js/popper

Version:

Dynamic positioning logic for ui machines

74 lines (72 loc) 2.76 kB
"use strict"; 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 });