{"version":3,"file":"index-B87m6Bfb.mjs","sources":["../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../node_modules/@radix-ui/react-arrow/dist/index.mjs","../../node_modules/@radix-ui/react-popper/dist/index.mjs"],"sourcesContent":["/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\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\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === 'function' && a.toString() === b.toString()) {\n    return true;\n  }\n  let length;\n  let i;\n  let keys;\n  if (a && b && typeof a === 'object') {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length !== b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0;) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0;) {\n      const key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React.useState(null);\n  const [_floating, _setFloating] = React.useState(null);\n  const setReference = React.useCallback(node => {\n    if (node !== referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, []);\n  const setFloating = React.useCallback(node => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, []);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React.useRef(null);\n  const floatingRef = React.useRef(null);\n  const dataRef = React.useRef(data);\n  const hasWhileElementsMounted = whileElementsMounted != null;\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform);\n  const openRef = useLatestRef(open);\n  const update = React.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n      const fullData = {\n        ...data,\n        // The floating element's position may be recomputed while it's closed\n        // but still mounted (such as when transitioning out). To ensure\n        // `isPositioned` will be `false` initially on the next open, avoid\n        // setting it to `true` when `open === false` (must be specified).\n        isPositioned: openRef.current !== false\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData(data => ({\n        ...data,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl) referenceRef.current = referenceEl;\n    if (floatingEl) floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      }\n      update();\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n  const refs = React.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...(getDPR(elements.floating) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\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 * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, 'current');\n  }\n  return {\n    name: 'arrow',\n    options,\n    fn(state) {\n      const {\n        element,\n        padding\n      } = typeof options === 'function' ? options(state) : options;\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow$2({\n            element: element.current,\n            padding\n          }).fn(state);\n        }\n        return {};\n      }\n      if (element) {\n        return arrow$2({\n          element,\n          padding\n        }).fn(state);\n      }\n      return {};\n    }\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 = (options, deps) => ({\n  ...offset$1(options),\n  options: [options, deps]\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 = (options, deps) => ({\n  ...shift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n  ...limitShift$1(options),\n  options: [options, deps]\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 = (options, deps) => ({\n  ...flip$1(options),\n  options: [options, deps]\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 = (options, deps) => ({\n  ...size$1(options),\n  options: [options, deps]\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 = (options, deps) => ({\n  ...autoPlacement$1(options),\n  options: [options, deps]\n});\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 = (options, deps) => ({\n  ...hide$1(options),\n  options: [options, deps]\n});\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 = (options, deps) => ({\n  ...inline$1(options),\n  options: [options, deps]\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 * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n  ...arrow$1(options),\n  options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n  const { children, width = 10, height = 5, ...arrowProps } = props;\n  return /* @__PURE__ */ jsx(\n    Primitive.svg,\n    {\n      ...arrowProps,\n      ref: forwardedRef,\n      width,\n      height,\n      viewBox: \"0 0 30 10\",\n      preserveAspectRatio: \"none\",\n      children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n    }\n  );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n  Arrow,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n  useFloating,\n  autoUpdate,\n  offset,\n  shift,\n  limitShift,\n  hide,\n  arrow as floatingUIarrow,\n  flip,\n  size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n  const { __scopePopper, children } = props;\n  const [anchor, setAnchor] = React.useState(null);\n  return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopper, virtualRef, ...anchorProps } = props;\n    const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const anchorRef = React.useRef(null);\n    React.useEffect(() => {\n      const previousAnchor = anchorRef.current;\n      anchorRef.current = virtualRef?.current || ref.current;\n      if (previousAnchor !== anchorRef.current) {\n        context.onAnchorChange(anchorRef.current);\n      }\n    });\n    return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n  }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopePopper,\n      side = \"bottom\",\n      sideOffset = 0,\n      align = \"center\",\n      alignOffset = 0,\n      arrowPadding = 0,\n      avoidCollisions = true,\n      collisionBoundary = [],\n      collisionPadding: collisionPaddingProp = 0,\n      sticky = \"partial\",\n      hideWhenDetached = false,\n      updatePositionStrategy = \"optimized\",\n      onPlaced,\n      ...contentProps\n    } = props;\n    const context = usePopperContext(CONTENT_NAME, __scopePopper);\n    const [content, setContent] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n    const [arrow, setArrow] = React.useState(null);\n    const arrowSize = useSize(arrow);\n    const arrowWidth = arrowSize?.width ?? 0;\n    const arrowHeight = arrowSize?.height ?? 0;\n    const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n    const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n    const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n    const hasExplicitBoundaries = boundary.length > 0;\n    const detectOverflowOptions = {\n      padding: collisionPadding,\n      boundary: boundary.filter(isNotNull),\n      // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n      altBoundary: hasExplicitBoundaries\n    };\n    const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n      // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n      strategy: \"fixed\",\n      placement: desiredPlacement,\n      whileElementsMounted: (...args) => {\n        const cleanup = autoUpdate(...args, {\n          animationFrame: updatePositionStrategy === \"always\"\n        });\n        return cleanup;\n      },\n      elements: {\n        reference: context.anchor\n      },\n      middleware: [\n        offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n        avoidCollisions && shift({\n          mainAxis: true,\n          crossAxis: false,\n          limiter: sticky === \"partial\" ? limitShift() : void 0,\n          ...detectOverflowOptions\n        }),\n        avoidCollisions && flip({ ...detectOverflowOptions }),\n        size({\n          ...detectOverflowOptions,\n          apply: ({ elements, rects, availableWidth, availableHeight }) => {\n            const { width: anchorWidth, height: anchorHeight } = rects.reference;\n            const contentStyle = elements.floating.style;\n            contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n          }\n        }),\n        arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n        transformOrigin({ arrowWidth, arrowHeight }),\n        hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n      ]\n    });\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const handlePlaced = useCallbackRef(onPlaced);\n    useLayoutEffect(() => {\n      if (isPositioned) {\n        handlePlaced?.();\n      }\n    }, [isPositioned, handlePlaced]);\n    const arrowX = middlewareData.arrow?.x;\n    const arrowY = middlewareData.arrow?.y;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const [contentZIndex, setContentZIndex] = React.useState();\n    useLayoutEffect(() => {\n      if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n    }, [content]);\n    return /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        ref: refs.setFloating,\n        \"data-radix-popper-content-wrapper\": \"\",\n        style: {\n          ...floatingStyles,\n          transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n          // keep off the page when measuring\n          minWidth: \"max-content\",\n          zIndex: contentZIndex,\n          [\"--radix-popper-transform-origin\"]: [\n            middlewareData.transformOrigin?.x,\n            middlewareData.transformOrigin?.y\n          ].join(\" \"),\n          // hide the content if using the hide middleware and should be hidden\n          // set visibility to hidden and disable pointer events so the UI behaves\n          // as if the PopperContent isn't there at all\n          ...middlewareData.hide?.referenceHidden && {\n            visibility: \"hidden\",\n            pointerEvents: \"none\"\n          }\n        },\n        dir: props.dir,\n        children: /* @__PURE__ */ jsx(\n          PopperContentProvider,\n          {\n            scope: __scopePopper,\n            placedSide,\n            onArrowChange: setArrow,\n            arrowX,\n            arrowY,\n            shouldHideArrow: cannotCenterArrow,\n            children: /* @__PURE__ */ jsx(\n              Primitive.div,\n              {\n                \"data-side\": placedSide,\n                \"data-align\": placedAlign,\n                ...contentProps,\n                ref: composedRefs,\n                style: {\n                  ...contentProps.style,\n                  // if the PopperContent hasn't been placed yet (not all measurements done)\n                  // we prevent animations so that users's animation don't kick in too early referring wrong sides\n                  animation: !isPositioned ? \"none\" : void 0\n                }\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n  top: \"bottom\",\n  right: \"left\",\n  bottom: \"top\",\n  left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n  const { __scopePopper, ...arrowProps } = props;\n  const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n  const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n  return (\n    // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n    // doesn't report size as we'd expect on SVG elements.\n    // it reports their bounding box which is effectively the largest path inside the SVG.\n    /* @__PURE__ */ jsx(\n      \"span\",\n      {\n        ref: contentContext.onArrowChange,\n        style: {\n          position: \"absolute\",\n          left: contentContext.arrowX,\n          top: contentContext.arrowY,\n          [baseSide]: 0,\n          transformOrigin: {\n            top: \"\",\n            right: \"0 0\",\n            bottom: \"center 0\",\n            left: \"100% 0\"\n          }[contentContext.placedSide],\n          transform: {\n            top: \"translateY(100%)\",\n            right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n            bottom: `rotate(180deg)`,\n            left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n          }[contentContext.placedSide],\n          visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n        },\n        children: /* @__PURE__ */ jsx(\n          ArrowPrimitive.Root,\n          {\n            ...arrowProps,\n            ref: forwardedRef,\n            style: {\n              ...arrowProps.style,\n              // ensures the element can be measured correctly (mostly for if SVG)\n              display: \"block\"\n            }\n          }\n        )\n      }\n    )\n  );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n  return value !== null;\n}\nvar transformOrigin = (options) => ({\n  name: \"transformOrigin\",\n  options,\n  fn(data) {\n    const { placement, rects, middlewareData } = data;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const isArrowHidden = cannotCenterArrow;\n    const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n    const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n    const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n    const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n    let x = \"\";\n    let y = \"\";\n    if (placedSide === \"bottom\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${-arrowHeight}px`;\n    } else if (placedSide === \"top\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${rects.floating.height + arrowHeight}px`;\n    } else if (placedSide === \"right\") {\n      x = `${-arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    } else if (placedSide === \"left\") {\n      x = `${rects.floating.width + arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    }\n    return { data: { x, y } };\n  }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n  const [side, align = \"center\"] = placement.split(\"-\");\n  return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n  ALIGN_OPTIONS,\n  Anchor,\n  Arrow,\n  Content,\n  Popper,\n  PopperAnchor,\n  PopperArrow,\n  PopperContent,\n  Root2 as Root,\n  SIDE_OPTIONS,\n  createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["sides","min","Math","max","round","floor","createCoords","v","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","value","evaluate","param","getSide","placement","split","getAlignment","getOppositeAxis","axis","getAxisLength","yAxisSides","Set","getSideAxis","has","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","reference","floating","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","replace","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","direction","list","map","concat","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","width","height","computeCoordsFromPlacement","_ref","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","config","strategy","middleware","platform","validMiddleware","filter","Boolean","isRTL","getElementRects","statefulPlacement","middlewareData","resetCount","i","name","fn","nextX","nextY","data","reset","initialPlacement","elements","detectOverflow","state","options","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","altContext","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","arrow","arrowDimensions","getDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","centerOffset","flip","_middlewareData$arrow","_middlewareData$flip","mainAxis","checkMainAxis","crossAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","push","placements","overflow","overflows","overflowsData","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","ignoreCrossAxisOverflow","d","resetPlacement","sort","a","b","_overflowsData$filter2","currentSideAxis","reduce","acc","getSideOffsets","isAnySideFullyClipped","some","hide","offsets","referenceHiddenOffsets","referenceHidden","escapedOffsets","escaped","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","enabled","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","window","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","document","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflowX","overflowY","display","getComputedStyle","test","tableElements","isTableElement","topLayerSelectors","isTopLayer","selector","matches","_e","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","css","containerType","backdropFilter","willChange","includes","contain","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","CSS","supports","lastTraversableNodeNames","getNodeScroll","scrollLeft","scrollTop","scrollX","scrollY","result","assignedSlot","parentNode","host","getNearestOverflowAncestor","body","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","visualViewport","parent","Object","getPrototypeOf","getCssDimensions","getComputedStyle$1","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","shouldAddVisualOffsets","isFixed","floatingOffsetParent","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","htmlRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","Array","from","getDocumentRect","html","scrollWidth","clientWidth","scrollHeight","clientHeight","SCROLLBAR_MAX","getViewportRect","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","compatMode","marginLeft","marginRight","clippingStableScrollbarWidth","abs","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","position","getClippingElementAncestors","cache","cachedResult","get","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","shouldDropCurrentNode","ancestor","set","elementClippingAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","getOffsetParentFn","getDimensionsFn","floatingDimensions","rectsAreEqual","observeMove","onMove","io","timeoutId","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","rootMargin","isFirstUpdate","handleObserve","entries","ratio","intersectionRatio","setTimeout","IntersectionObserver","observe","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","animationFrame","referenceEl","ancestors","forEach","addEventListener","passive","cleanupIo","reobserveFrame","resizeObserver","firstEntry","target","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","Map","mergedOptions","platformWithCache","computePosition$1","isClient","noop","useLayoutEffect","deepEqual","toString","keys","isArray","hasOwnProperty","call","key","$$typeof","getDPR","devicePixelRatio","roundByDPR","dpr","useLatestRef","ref","React","useRef","current","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","useState","isPositioned","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","useCallback","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","then","fullData","isMountedRef","ReactDOM","flushSync","refs","useMemo","floatingStyles","initialStyles","isRef","arrow$2","deps","Arrow","floatingUIarrow","PopperArrow","ArrowPrimitive.Root","Root"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}