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