{"ast":null,"code":"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';\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 reference element when it is given a certain positioning strategy.\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      continue;\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    ...rects.floating,\n    x,\n    y\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    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    } = 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. This stops `shift()` from taking action, but can\n    // be worked around by calling it again after the `arrow()` if desired.\n    const shouldAddOffset = 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 ? min$1 - center : max - center : 0;\n    return {\n      [axis]: coords[axis] - alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset + alignmentOffset\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$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      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};\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};\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.\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      const {\n        x,\n        y\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: diffCoords\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 overflowAvailableHeight = height - overflow[heightSide];\n      const overflowAvailableWidth = width - overflow[widthSide];\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (isYAxis) {\n        const maximumClippingWidth = width - overflow.left - overflow.right;\n        availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n      } else {\n        const maximumClippingHeight = height - overflow.top - overflow.bottom;\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};\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };","map":{"version":3,"names":["getSideAxis","getAlignmentAxis","getAxisLength","getSide","getAlignment","evaluate","getPaddingObject","rectToClientRect","min","clamp","placements","getAlignmentSides","getOppositeAlignmentPlacement","getOppositePlacement","getExpandedPlacements","getOppositeAxisPlacements","sides","max","getOppositeAxis","computeCoordsFromPlacement","_ref","placement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","side","isVertical","commonX","x","width","commonY","y","height","commonAlign","coords","computePosition","config","strategy","middleware","platform","validMiddleware","filter","Boolean","isRTL","rects","getElementRects","statefulPlacement","middlewareData","resetCount","i","length","name","fn","nextX","nextY","data","reset","initialPlacement","elements","detectOverflow","state","options","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","padding","paddingObject","altContext","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","rect","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","top","bottom","left","right","arrow","axis","arrowDimensions","getDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","centerOffset","getPlacementList","alignment","autoAlignment","allowedPlacements","allowedPlacementsSortedByAlignment","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","detectOverflowOptions","placements$1","undefined","overflow","currentIndex","index","currentPlacement","alignmentSides","currentOverflows","allOverflows","overflows","nextPlacement","placementsSortedByMostSpace","map","d","slice","reduce","acc","v","sort","a","b","placementsThatFitOnEachSide","every","resetPlacement","flip","_middlewareData$flip","mainAxis","checkMainAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","push","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","_overflowsData$map$so","getSideOffsets","isAnySideFullyClipped","some","hide","offsets","referenceHiddenOffsets","referenceHidden","escapedOffsets","escaped","getBoundingRect","minX","minY","maxX","maxY","getRectsByLine","sortedRects","groups","prevRect","inline","nativeClientRects","Array","from","getClientRects","clientRects","fallback","getBoundingClientRect","find","firstRect","lastRect","isTop","isLeftSide","maxRight","minLeft","measureRects","resetRects","convertValueToCoords","mainAxisMulti","includes","crossAxisMulti","rawValue","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse","_middlewareData$offse2","isOriginSide","size","apply","heightSide","widthSide","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","maximumClippingWidth","maximumClippingHeight","xMin","xMax","yMin","yMax","nextDimensions"],"sources":["C:/Users/user/Desktop/06portreact/node_modules/@floating-ui/core/dist/floating-ui.core.mjs"],"sourcesContent":["import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\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      continue;\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    ...rects.floating,\n    x,\n    y\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    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    } = 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. This stops `shift()` from taking action, but can\n    // be worked around by calling it again after the `arrow()` if desired.\n    const shouldAddOffset = 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 ? min$1 - center : max - center : 0;\n    return {\n      [axis]: coords[axis] - alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset + alignmentOffset\n      }\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$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      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.\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      const {\n        x,\n        y\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: diffCoords\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 overflowAvailableHeight = height - overflow[heightSide];\n      const overflowAvailableWidth = width - overflow[widthSide];\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (isYAxis) {\n        const maximumClippingWidth = width - overflow.left - overflow.right;\n        availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n      } else {\n        const maximumClippingHeight = height - overflow.top - overflow.bottom;\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"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}