{"version":3,"file":"@floating-ui-DgRwZXqv.js","sources":["../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js"],"sourcesContent":["function getBasePlacement(placement) {\n return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getBasePlacement(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref) {\n let {\n reference,\n floating,\n placement\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n let coords;\n\n switch (getBasePlacement(placement)) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] = coords[mainAxis] - (reference[length] / 2 - floating[length] / 2);\n break;\n\n case 'end':\n coords[mainAxis] = coords[mainAxis] + (reference[length] / 2 - floating[length] / 2);\n break;\n }\n\n return coords;\n}\n\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (platform == null) {\n console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n }\n\n if (middleware.filter(_ref => {\n let {\n name\n } = _ref;\n return name === 'autoPlacement' || name === 'flip';\n }).length > 1) {\n throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement`', 'middleware detected. This will lead to an infinite loop. Ensure only', 'one of either has been passed to the `middleware` array.'].join(' '));\n }\n }\n\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement({ ...rects,\n placement\n });\n let statefulPlacement = placement;\n let middlewareData = {};\n let _debug_loop_count_ = 0;\n\n for (let i = 0; i < middleware.length; i++) {\n if (process.env.NODE_ENV !== \"production\") {\n _debug_loop_count_++;\n\n if (_debug_loop_count_ > 100) {\n throw new Error(['Floating UI: The middleware lifecycle appears to be', 'running in an infinite loop. This is usually caused by a `reset`', 'continually being returned without a break condition.'].join(' '));\n }\n }\n\n const {\n name,\n fn\n } = middleware[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 = { ...middlewareData,\n [name]: data != null ? data : {}\n };\n\n if (reset) {\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\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 ({\n x,\n y\n } = computeCoordsFromPlacement({ ...rects,\n placement: statefulPlacement\n }));\n }\n\n i = -1;\n continue;\n }\n }\n\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return { ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nasync function detectOverflow(middlewareArguments, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = middlewareArguments;\n const {\n boundary = 'clippingParents',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = options;\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = await platform.getClippingClientRect({\n element: (await platform.isElement(element)) ? element : element.contextElement || (await platform.getDocumentElement({\n element: elements.floating\n })),\n boundary,\n rootBoundary\n });\n const elementClientRect = rectToClientRect(await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: elementContext === 'floating' ? { ...rects.floating,\n x,\n y\n } : rects.reference,\n offsetParent: await platform.getOffsetParent({\n element: elements.floating\n }),\n strategy\n })); // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n return {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\nconst arrow = options => ({\n name: 'arrow',\n options,\n\n async fn(middlewareArguments) {\n // Since `element` is required, we don't Partial<> the type\n const {\n element,\n padding = 0\n } = options != null ? options : {};\n const {\n x,\n y,\n placement,\n rects,\n platform\n } = middlewareArguments;\n\n if (element == null) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n }\n\n return {};\n }\n\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const basePlacement = getBasePlacement(placement);\n const axis = getMainAxisFromPlacement(basePlacement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions({\n element\n });\n const minProp = axis === 'y' ? 'top' : 'left';\n const maxProp = axis === 'y' ? 'bottom' : 'right';\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({\n element\n });\n const clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside of the floating element's bounds\n\n const min = paddingObject[minProp];\n const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min, center, max);\n return {\n data: {\n [axis]: offset,\n centerOffset: center - offset\n }\n };\n }\n\n});\n\nconst hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects) {\n const isStart = getAlignment(placement) === 'start';\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? isStart ? 'right' : 'left' : isStart ? 'bottom' : 'top';\n\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst basePlacements = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/basePlacements.reduce((acc, basePlacement) => acc.concat(basePlacement, basePlacement + \"-start\", basePlacement + \"-end\"), []);\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 => getBasePlacement(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n\n return true;\n });\n}\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'autoPlacement',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _middlewareData$autoP5, _placementsSortedByLe;\n\n const {\n x,\n y,\n rects,\n middlewareData,\n placement\n } = middlewareArguments;\n const {\n alignment = null,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = options;\n\n if ((_middlewareData$autoP = middlewareData.autoPlacement) != null && _middlewareData$autoP.skip) {\n return {};\n }\n\n const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const currentIndex = (_middlewareData$autoP2 = (_middlewareData$autoP3 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP3.index) != null ? _middlewareData$autoP2 : 0;\n const currentPlacement = placements[currentIndex];\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects); // Make `computeCoords` start from the right place\n\n if (placement !== currentPlacement) {\n return {\n x,\n y,\n reset: {\n placement: placements[0]\n }\n };\n }\n\n const currentOverflows = [overflow[getBasePlacement(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...((_middlewareData$autoP4 = (_middlewareData$autoP5 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP5.overflows) != null ? _middlewareData$autoP4 : []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n let {\n overflows\n } = _ref;\n return overflows.every(overflow => overflow <= 0);\n })) == null ? void 0 : _placementsSortedByLe.placement;\n return {\n data: {\n skip: true\n },\n reset: {\n placement: placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement\n }\n };\n }\n\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'flip',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$flip, _middlewareData$flip2;\n\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement\n } = middlewareArguments;\n\n if ((_middlewareData$flip = middlewareData.flip) != null && _middlewareData$flip.skip) {\n return {};\n }\n\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n flipAlignment = true,\n ...detectOverflowOptions\n } = options;\n const basePlacement = getBasePlacement(placement);\n const isBasePlacement = basePlacement === initialPlacement;\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.overflows) || [];\n\n if (checkMainAxis) {\n overflows.push(overflow[basePlacement]);\n }\n\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects);\n overflows.push(overflow[main], overflow[cross]);\n }\n\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }]; // One or more sides is overflowing\n\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip$, _middlewareData$flip3;\n\n const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip3 = middlewareData.flip) == null ? void 0 : _middlewareData$flip3.index) != null ? _middlewareData$flip$ : 0) + 1;\n const nextPlacement = placements[nextIndex];\n\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 let resetPlacement = 'bottom';\n\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$slice$;\n\n const placement = (_overflowsData$slice$ = overflowsData.slice().sort((a, b) => a.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0) - b.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0))[0]) == null ? void 0 : _overflowsData$slice$.placement;\n\n if (placement) {\n resetPlacement = placement;\n }\n\n break;\n }\n\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n\n return {\n data: {\n skip: true\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n\n return {};\n }\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}\n\nfunction isAnySideFullyClipped(overflow) {\n return basePlacements.some(side => overflow[side] >= 0);\n}\n\nconst hide = () => ({\n name: 'hide',\n\n async fn(modifierArguments) {\n const referenceOverflow = await detectOverflow(modifierArguments, {\n elementContext: 'reference'\n });\n const floatingAltOverflow = await detectOverflow(modifierArguments, {\n altBoundary: true\n });\n const referenceHiddenOffsets = getSideOffsets(referenceOverflow, modifierArguments.rects.reference);\n const escapedOffsets = getSideOffsets(floatingAltOverflow, modifierArguments.rects.floating);\n const referenceHidden = isAnySideFullyClipped(referenceHiddenOffsets);\n const escaped = isAnySideFullyClipped(escapedOffsets);\n return {\n data: {\n referenceHidden,\n referenceHiddenOffsets,\n escaped,\n escapedOffsets\n }\n };\n }\n\n});\n\nfunction convertValueToCoords(_ref) {\n let {\n placement,\n rects,\n value\n } = _ref;\n const basePlacement = getBasePlacement(placement);\n const multiplier = ['left', 'top'].includes(basePlacement) ? -1 : 1;\n const rawValue = typeof value === 'function' ? value({ ...rects,\n placement\n }) : value;\n const {\n mainAxis,\n crossAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawValue\n };\n return getMainAxisFromPlacement(basePlacement) === 'x' ? {\n x: crossAxis,\n y: mainAxis * multiplier\n } : {\n x: mainAxis * multiplier,\n y: crossAxis\n };\n}\nconst offset = function (value) {\n if (value === void 0) {\n value = 0;\n }\n\n return {\n name: 'offset',\n options: value,\n\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects\n } = middlewareArguments;\n const diffCoords = convertValueToCoords({\n placement,\n rects,\n value\n });\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'shift',\n options,\n\n async fn(middlewareArguments) {\n const {\n x,\n y,\n placement\n } = middlewareArguments;\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 } = options;\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getBasePlacement(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n\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 = within(min, mainAxisCoord, max);\n }\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 = within(min, crossAxisCoord, max);\n }\n\n const limitedCoords = limiter.fn({ ...middlewareArguments,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return { ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n\n };\n};\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n options,\n\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = options;\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = typeof offset === 'function' ? offset({ ...rects,\n placement\n }) : offset;\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\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\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getBasePlacement(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n\n };\n};\n\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'size',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$size;\n\n const {\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n apply,\n ...detectOverflowOptions\n } = options;\n\n if ((_middlewareData$size = middlewareData.size) != null && _middlewareData$size.skip) {\n return {};\n }\n\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const basePlacement = getBasePlacement(placement);\n const isEnd = getAlignment(placement) === 'end';\n let heightSide;\n let widthSide;\n\n if (basePlacement === 'top' || basePlacement === 'bottom') {\n heightSide = basePlacement;\n widthSide = isEnd ? 'left' : 'right';\n } else {\n widthSide = basePlacement;\n heightSide = isEnd ? 'top' : 'bottom';\n }\n\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 const dimensions = {\n height: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n width: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n };\n apply == null ? void 0 : apply({ ...dimensions,\n ...rects\n });\n return {\n data: {\n skip: true\n },\n reset: {\n rects: true\n }\n };\n }\n\n };\n};\n\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'inline',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$inlin, _await$platform$getCl;\n\n const {\n placement,\n elements,\n rects,\n platform,\n strategy,\n middlewareData\n } = middlewareArguments; // 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\n const {\n padding = 2,\n x,\n y\n } = options;\n\n if ((_middlewareData$inlin = middlewareData.inline) != null && _middlewareData$inlin.skip) {\n return {};\n }\n\n const fallback = rectToClientRect(await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rects.reference,\n offsetParent: await platform.getOffsetParent({\n element: elements.floating\n }),\n strategy\n }));\n const clientRects = Array.from((_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects({\n element: elements.reference\n }))) != null ? _await$platform$getCl : []);\n const paddingObject = getSideObjectFromPadding(padding);\n\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 var _clientRects$find;\n\n // Find the first rect in which the point is fully inside\n return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n } // There are 2 or more connected rects\n\n\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getBasePlacement(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\n const isLeftPlacement = getBasePlacement(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 => isLeftPlacement ? 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\n return fallback;\n }\n\n return {\n data: {\n skip: true\n },\n reset: {\n rects: await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n })\n }\n };\n }\n\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction isWindow(value) {\n return (value == null ? void 0 : value.toString()) === '[object Window]';\n}\nfunction getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (!isWindow(node)) {\n const ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n\nfunction getComputedStyle$1(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction getNodeName(node) {\n return isWindow(node) ? '' : node ? (node.nodeName || '').toLowerCase() : '';\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n const {\n overflow,\n overflowX,\n overflowY\n } = getComputedStyle$1(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try and use feature detection here instead\n const isFirefox = navigator.userAgent.toLowerCase().includes('firefox');\n const css = getComputedStyle$1(element); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n return css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].includes(css.willChange) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false);\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nfunction getBoundingClientRect(element, includeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n const clientRect = element.getBoundingClientRect();\n let scaleX = 1;\n let scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n return {\n width: clientRect.width / scaleX,\n height: clientRect.height / scaleY,\n top: clientRect.top / scaleY,\n right: clientRect.right / scaleX,\n bottom: clientRect.bottom / scaleY,\n left: clientRect.left / scaleX,\n x: clientRect.left / scaleX,\n y: clientRect.top / scaleY\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isWindow(element)) {\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n }\n\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If 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\nfunction isScaled(element) {\n const rect = getBoundingClientRect(element);\n return round(rect.width) !== element.offsetWidth || round(rect.height) !== element.offsetHeight;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, isOffsetParentAnElement && isScaled(offsetParent));\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\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\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // @ts-ignore\n node.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n node.parentNode || ( // DOM Element detected\n isShadowRoot(node) ? node.host : null) || // ShadowRoot detected\n getDocumentElement(node) // fallback\n\n );\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n}\n\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && !['html', 'body'].includes(getNodeName(currentNode))) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getDimensions(element) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n\n if (offsetParent === documentElement) {\n return rect;\n }\n\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } // This doesn't appear to be need to be negated.\n // else if (documentElement) {\n // offsets.x = getWindowScrollBarX(documentElement);\n // }\n\n }\n\n return { ...rect,\n x: rect.x - scroll.scrollLeft + offsets.x,\n y: rect.y - scroll.scrollTop + offsets.y\n };\n}\n\nfunction getViewportRect(element) {\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\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n\n if (Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < 0.01) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// of the `` and `` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n\n if (getComputedStyle$1(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getScrollParent(node) {\n if (['html', 'body', '#document'].includes(getNodeName(node))) {\n // @ts-ignore assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}\n\nfunction getScrollParents(node, list) {\n var _node$ownerDocument;\n\n if (list === void 0) {\n list = [];\n }\n\n const scrollParent = getScrollParent(node);\n const isBody = scrollParent === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollParent);\n const target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n const updatedList = list.concat(target);\n return isBody ? updatedList : // @ts-ignore: isBody tells us target will be an HTMLElement here\n updatedList.concat(getScrollParents(getParentNode(target)));\n}\n\nfunction contains(parent, child) {\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n\n do {\n // use `===` replace node.isSameNode()\n if (next && parent === next) {\n return true;\n } // @ts-ignore: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n }\n\n return false;\n}\n\nfunction getInnerBoundingClientRect(element) {\n const clientRect = getBoundingClientRect(element);\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n return {\n top,\n left,\n x: left,\n y: top,\n right: left + element.clientWidth,\n bottom: top + element.clientHeight,\n width: element.clientWidth,\n height: element.clientHeight\n };\n}\n\nfunction getClientRectFromClippingParent(element, clippingParent) {\n if (clippingParent === 'viewport') {\n return rectToClientRect(getViewportRect(element));\n }\n\n if (isElement(clippingParent)) {\n return getInnerBoundingClientRect(clippingParent);\n }\n\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n const clippingParents = getScrollParents(getParentNode(element));\n const canEscapeClipping = ['absolute', 'fixed'].includes(getComputedStyle$1(element).position);\n const clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // @ts-ignore isElement check ensures we return Array\n\n\n return clippingParents.filter(clippingParent => isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body');\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nfunction getClippingClientRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary\n } = _ref;\n const mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n const clippingParents = [...mainClippingParents, rootBoundary];\n const firstClippingParent = clippingParents[0];\n const clippingRect = clippingParents.reduce((accRect, clippingParent) => {\n const rect = getClientRectFromClippingParent(element, clippingParent);\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 }, getClientRectFromClippingParent(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}\n\nconst platform = {\n getElementRects: _ref => {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n return {\n reference: getRectRelativeToOffsetParent(reference, getOffsetParent(floating), strategy),\n floating: { ...getDimensions(floating),\n x: 0,\n y: 0\n }\n };\n },\n convertOffsetParentRelativeRectToViewportRelativeRect: args => convertOffsetParentRelativeRectToViewportRelativeRect(args),\n getOffsetParent: _ref2 => {\n let {\n element\n } = _ref2;\n return getOffsetParent(element);\n },\n isElement: value => isElement(value),\n getDocumentElement: _ref3 => {\n let {\n element\n } = _ref3;\n return getDocumentElement(element);\n },\n getClippingClientRect: args => getClippingClientRect(args),\n getDimensions: _ref4 => {\n let {\n element\n } = _ref4;\n return getDimensions(element);\n },\n getClientRects: _ref5 => {\n let {\n element\n } = _ref5;\n return element.getClientRects();\n }\n};\n\nconst computePosition = (reference, floating, options) => computePosition$1(reference, floating, {\n platform,\n ...options\n});\n\nexport { computePosition, getScrollParents };\n"],"names":["getBasePlacement","placement","getAlignment","getMainAxisFromPlacement","getLengthFromAxis","axis","computeCoordsFromPlacement","_ref","reference","floating","commonX","commonY","coords","mainAxis","length","computePosition","config","strategy","middleware","platform","rects","x","y","statefulPlacement","middlewareData","i","name","fn","nextX","nextY","data","reset","expandPaddingObject","padding","getSideObjectFromPadding","rectToClientRect","rect","detectOverflow","middlewareArguments","options","elements","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","elementClientRect","min","max","within","min$1","value","max$1","arrow","basePlacement","arrowDimensions","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","hash$1","getOppositePlacement","matched","getAlignmentSides","isStart","mainAlignmentSide","hash","getOppositeAlignmentPlacement","basePlacements","allPlacements","acc","getPlacementList","alignment","autoAlignment","allowedPlacements","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_middlewareData$autoP3","_middlewareData$autoP4","_middlewareData$autoP5","_placementsSortedByLe","detectOverflowOptions","placements","overflow","currentIndex","currentPlacement","main","cross","currentOverflows","allOverflows","nextPlacement","placementsSortedByLeastOverflow","a","b","placementThatFitsOnAllSides","overflows","getExpandedPlacements","oppositePlacement","flip","_middlewareData$flip","_middlewareData$flip2","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","flipAlignment","fallbackPlacements","overflowsData","side","_middlewareData$flip$","_middlewareData$flip3","nextIndex","resetPlacement","_overflowsData$slice$","convertValueToCoords","multiplier","rawValue","crossAxis","diffCoords","getCrossAxis","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","size","_middlewareData$size","apply","isEnd","heightSide","widthSide","xMin","xMax","yMin","yMax","dimensions","isWindow","getWindow","node","ownerDocument","getComputedStyle$1","getNodeName","isHTMLElement","isElement","isNode","isShadowRoot","OwnElement","isScrollParent","overflowX","overflowY","isTableElement","isContainingBlock","isFirefox","css","round","getBoundingClientRect","includeScale","clientRect","scaleX","scaleY","getDocumentElement","getNodeScroll","getWindowScrollBarX","isScaled","getRectRelativeToOffsetParent","offsetParent","isOffsetParentAnElement","documentElement","scroll","offsets","offsetRect","getParentNode","getTrueOffsetParent","getContainingBlock","currentNode","getOffsetParent","window","getDimensions","convertOffsetParentRelativeRectToViewportRelativeRect","getViewportRect","win","html","visualViewport","width","height","getDocumentRect","_element$ownerDocumen","body","getScrollParent","getScrollParents","list","_node$ownerDocument","scrollParent","isBody","target","updatedList","contains","parent","child","rootNode","next","getInnerBoundingClientRect","top","left","getClientRectFromClippingParent","clippingParent","getClippingParents","clippingParents","clipperElement","getClippingClientRect","firstClippingParent","clippingRect","accRect","args","_ref2","_ref3","_ref4","_ref5","computePosition$1"],"mappings":"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","x_google_ignoreList":[0,1]}