{"version":3,"file":"static/npm.floating-ui.e1438c26.js","mappings":"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","sources":["../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs"],"sourcesContent":["/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","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 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 if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\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$map$so;\n const placement = (_overflowsData$map$so = overflowsData.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$map$so[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: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\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 }\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 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 (isYAxis) {\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : 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","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\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, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, 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 = currentWin.frameElement;\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 = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\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 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,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` 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 ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\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 offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.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 return element.offsetParent;\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 <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\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 */\nconst detectOverflow = detectOverflow$1;\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 = offset$1;\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 = autoPlacement$1;\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 = shift$1;\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 = flip$1;\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 = size$1;\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 = hide$1;\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 = arrow$1;\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 = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n"],"names":["min","Math","max","round","floor","createCoords","v","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","value","evaluate","param","getSide","placement","split","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","includes","getAlignmentAxis","getOppositeAlignmentPlacement","replace","alignment","getOppositePlacement","side","getPaddingObject","padding","expandPaddingObject","rectToClientRect","rect","width","height","computeCoordsFromPlacement","_ref","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","window","document","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","getComputedStyle","test","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","filter","some","willChange","contain","CSS","supports","isLastTraversableNode","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","result","assignedSlot","parentNode","host","getNearestOverflowAncestor","body","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","concat","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","e","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","isStaticPositioned","getTrueOffsetParent","polyfill","svgOffsetParent","currentNode","getContainingBlock","topLayer","clippingAncestors","cache","cachedResult","get","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","set","getClippingElementAncestors","this","_c","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","data","getOffsetParentFn","getDimensionsFn","getDimensions","floatingDimensions","getClientRects","Array","from","isRTL","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","addEventListener","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","entries","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","target","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","offset","name","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","shift","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","flip","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","push","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","sides","length","mainAlignmentSide","getAlignmentSides","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","b","_overflowsData$map$so","acc","size","apply","isYAxis","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","arrowDimensions","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","computePosition","Map","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","i","nextX","nextY","computePosition$1"],"sourceRoot":""}