UNPKG

@blueprintjs/core

Version:
60 lines 2.39 kB
"use strict"; /* ! * (c) Copyright 2026 Palantir Technologies Inc. All rights reserved. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.convertMiddlewareConfigToArray = void 0; const react_1 = require("@floating-ui/react"); /** * Converts a middleware configuration object to a properly ordered array of Floating UI middleware. * * @param overrides - Configuration object containing middleware options * @returns Array of Floating UI middleware instances in the correct order * * @see https://floating-ui.com/docs/middleware#ordering */ function convertMiddlewareConfigToArray(overrides) { const middlewares = []; // offset() should always go at the beginning if (overrides.offset) { middlewares.push((0, react_1.offset)(overrides.offset)); } // inline() should be early, before flip if (overrides.inline) { middlewares.push((0, react_1.inline)(overrides.inline)); } // Positioning middleware (autoPlacement and flip are mutually exclusive) // autoPlacement uses "most space" strategy, flip uses "fallback when no space" strategy if (overrides.autoPlacement && overrides.flip) { console.warn("autoPlacement and flip are mutually exclusive. Using autoPlacement and ignoring flip."); middlewares.push((0, react_1.autoPlacement)(overrides.autoPlacement)); } else if (overrides.flip) { middlewares.push((0, react_1.flip)(overrides.flip)); } else { middlewares.push((0, react_1.autoPlacement)(overrides.autoPlacement)); } // shift() after positioning middleware if (overrides.shift) { middlewares.push((0, react_1.shift)(overrides.shift)); } // size() after positioning middleware if (overrides.size) { middlewares.push((0, react_1.size)(overrides.size)); } // arrow() should be near the end, after shift/autoPlacement if (overrides.arrow && overrides.arrow.element) { middlewares.push((0, react_1.arrow)({ element: overrides.arrow.element, padding: overrides.arrow.padding, })); } // hide() should always go at the end if (overrides.hide) { middlewares.push((0, react_1.hide)(overrides.hide)); } return middlewares; } exports.convertMiddlewareConfigToArray = convertMiddlewareConfigToArray; //# sourceMappingURL=floatingUtils.js.map