{"version":3,"file":"js/4743-eeb9851501228645dc19.chunk.js","mappings":"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","sources":["webpack://datacenters/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://datacenters/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://datacenters/./node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","webpack://datacenters/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://datacenters/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs"],"sourcesContent":["import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL
scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the element as the offsetParent if it's non-static,\n // while Chrome and Safari return the element. The element must\n // be used to perform the correct calculations even if the element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle